言語ゲーム

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

Twitter: @propella

エディタを作る近況

最近やってる事を書きます。しばらく前に、アランさんからメールが来て、ここしばらくイアンの奴に全力投球するようにと言われました。他に Javascript がどうだとか OpenDocument がどうだとか沢山あるけど、色々出来ないのでとりあえず全然分かっていないイアンの奴を勉強するのが先決だと思い、エディタを書くという課題を自らに課しました。ほんとは物理シミュレーションとか、関数型言語を作るとか、そういう派手な奴をやりたかったのですが、イアンの奴がそれどころでは無い完成度なのでそれは諦めました。

なぜエディタかと言うと、良くある GUI フレームワークや、Squeak でさえもテキスト入力の部分はブラックボックスになっていて、ユーザが気軽に触れない事になっているので、前々から良くないと思っていたからです。この点で Swing は結構カスタマイズ出来るようになっていて参考になります。あと、GUI フレームワーク自体を考えるというのは結構大仕事なので、小さい部分で完結するような事をやりたかったという事があります。

で、作ってみると結構大変で、何とか文字の表示とスクロールまでは出来たものの、これにスクロールバーをつけるとすると、結局何らかのフレームワークが必要で、そういうわけで MVP や Swing や Gtk の事を調べ始めたわけです。結局、イアンが元々遊びで作っていた lessphic という奴がそれほど悪い物では無いという事が分かり、lessphic をさらに簡略化した物を元に作業を進めています。たかがスクロールバーをつけるだけでえらく遠回りです。

デバッガも無く、GUI フレームワークも無く、ドキュメントも勿論無いというまるで砂粒を集めて橋を架けるような作業。阿部さんが来たときに、関数型言語とかコンビネータはやってるのかと聞かれたのですが、忘れたのではなく、最終的にエディタも FRP で書き直す予定です。ああいう理想論が書いてある論文は、プログラムが画期的に美しくなると書いてある割に応用例がゲーム止まりなので、一旦ベタに普通のオブジェクト指向言語で書いてちょっとづつ関数的に書き直して行くというのも意味があるかなと思っています。大変ですが終わったらそれなりに勉強になるのでは無いかと思います。一応三月中に良くも悪くも目処をつける予定です。