言語ゲーム

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

Twitter: @propella

菩提樹

名前が無いと不便なので、取り合えず菩提樹 limetree と呼ぶ。何度も妄想している実行ツリーの事である。limetree の目的はシンプルで、過去を全く消さないシステムという事だ。これによって、無限 redo が可能になる。大げさにいうと、limetree は、OSレベルで undo / redo をサポートしたものと見なす事が出来るし、もうちょっと遠慮して超wikiのような単体のソフトウェアであっても良い。CVS は既に実用化された limetree の一つだ。

例えば立体アニメを作ろうと思ったら、まず3Dモデリングソフトを使うだろう。それにペイントツールでテクスチャを作成し、最後は動画ファイルにしてウェブにアップしたいとする。ここで、動画ファイルにしてからやっぱり主人公の服は青じゃなくて赤が良いと考えても後の祭り、undo は同じソフト内でしか動作しないので、動画ファイルの中の服のテクスチャだけを undo する事なんて出来ない。

もちろん、普通はそれぞれの素材ファイルは別に管理するだろうから、大した問題にはならないが、考えると不条理な話で、人間様が何でそんな些細な事に気を回して最初から色々なファイルを残しておかなくてはいけないのだ。これは機械の仕事である。limetree は完全な作業の記録を残すから、前に試した色々な服の柄を取り出す事も自由に出来るし、間違って消してしまうことは絶対に起こらない。

これがアプリの視点から見た limetree の機能だが、ミクロの視点で見ると、limetree は万能チューリングマシンのサブセットと言える。つまり、能力はそれより低い。メモリに一旦書き込んだ情報を削除する事は出来ないし、テープの方向は一方向、つまり、過去から未来にしか流れない。

概要はこの辺にして、現実的な方針を書く。完全な実現は無理なので、実現できる範囲を予想する。CVS が実用的に動作していることから、テキストベースでの利用は現在のコンピュータのスペックでも問題ないと思われる。CVS の更新の粒度をどこまで細かく出来るか、ファイルでは無く、メモリを扱う場合どのような問題が出るかを実験する。

次に、はじめに応用すべきアプリを考える。これも始めはテキストベースの物が無難である。それから、最適化とキャッシュについて考える。。。。と、尻つぼみですが、眠いのでねますー。