言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

うまく行かない話

C5 論文をやたら急いでいたのは、とっとと終わらせて早く 火曜日のUNlearning Camp のデモを作らなければいけないと思ったからだ。何を作ろうと思ったかというと、イアンさんの TCP/IP のデモを使った糸電話を作ろうと思っていた。イアンさんの TCP/IP はトンネルでバイスを使ってネットワークの第三層以上を実装した物だが、正直素人には何をやっているのか分からない。そこで、もっと低レベルな物理層を作って分かりやすくデモしようと思っていた。しかし残念ながら、先週末の段階で、これは絶対間に合わない!と分かってしまった。その理由。

  • イデア
    • 二台のパソコンのマイク端子、イヤホン端子を紙コップにつなげて糸電話を二組作る。
    • イアンの TCP/IP を使ってネットワークを作成し、紙コップを通じて通信を行う。
    • クライアント - TCP/IPドライバ - ptun - パイプ - 音声信号 - パイプ - イアンの TCP/IP サーバ
  • 問題点
    • 音声を紙コップに効率的に伝える方法が見つからなかった。(日本では圧電ブザーで上手く言ったような気がするのだが、こっちのブザーでやってみるとイマイチ。)
    • 一人で糸電話の実験をすると異常に虚しい。
    • マックにマイク端子が付いていないのでやる気が急速に失せた。
    • バイト列を音声に変換する仕組みが必要。モデムみたいのではなく、音楽的に聞こえるようにしたい。
    • 音声をバイト列に変換する仕組みが必要。FFT
    • 今のイアンのデモは、クライアント - TCP/IP ドライバ - ptun - イアンの TCP/IP サーバという仕組みになっている。ようするに ptun から来たバイト列をもう一度 TCP/IP に戻すだけ。それを ptun との間にパイプをかましても動くかどうか実験が必要。
    • これを一週間でやるのは無理だと思った。

で、それとは別に、キャンプの前に「慣習にとらわれない」についてポジションペーパーを書けという宿題があった。私は慣習というのは大切だと思っているのでどうにもやる気が出なかったが、相談すると、アートについて喋れと言われた。それは良いのだけど、作品の写真とか持ってきてないし、古いハードディスクの中を探すにも、結構時間がかかりそうだと思っていたんだけど、TCP/IP を諦めた事だし、これに集中しようと思っていたら、ポジションペーパーの時間の他にデモの時間もあって、vpri の他の人は私が何やってるか知らないから、JavaScript について何かやれと言われた。というわけで、何やら色々ややこしくて、いったい火曜日までに何をすれば良いのか途方に暮れている。

TCP/IP のバックアップとして考えていたネタは、アランさんお薦めの Turtle Geometry から題材をとってデモだった。タートルグラフィックスというと、四角とか三角とか出鱈目に描くイメージしか無いけど、この本はタートルグラフィックスを出発点に色んな幾何学を探求するという話だ。しかし、問題点は、タートルはほとんどベクトルへの導入としか使われていなくて、タートルの必要性がイマイチ感じられない点だ。

そこで僕が考えたのは二つ。

  • http://www.cs.wustl.edu/~taoju/research/TurtlesforCADRevised.pdf にあるように、タートル操作をアフィン変換と考える。するとタートルグラフィックスのプログラムはただの行列のリストと考える事が出来る。
  • Turtle Geometry にある証明を、リスト操作として実装する。

例えば、あるプログラムを実行した後のタートルの向きを求めるという問題があったとする。タートルの向きは、進むコマンドに影響されないので、回すコマンドの引数を全部足し合わせれば求まる。

繰り返し 4
  進む 100
  回す 90

の場合 4 * 90 = 360 だ。この計算をコンピュータにやらせるには、どうすれば良いだろうか?まずプログラムリストとして表現する。

  • (繰り返し 4 (進む 100) (回す 90))

このリストには二つの意味がある。一つはただのデータ列として、もう一つは

... つづく!