言語ゲーム

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

Twitter: @propella

Chalkboard 開発記などだらだら書く。

chalkboard

毎年参加している C5 という学会が今年は京都であるので、正月休みと出張を兼ねて帰国中です。これで一石二鳥だと思っていたんだけど、実は大失敗だった。もうちょっとクリスマス前の暇な時に仕事しておけば日本では毎日遊んで暮らせたのに、例によってギリギリになって大忙しなので、結局日本では正月近所の山に登ったのと今日大島さんご一家が倉庫に来てくれた以外はずっと缶詰状態。こんな事なら学会が終わってから休暇を取れば良かったと後悔している。

何をやってるかと言うと、夏に作った Chalkboard http://tinlizzie.org/chalkboard/ja.html というウェブサービスを改良して、発表の準備をしている。これは Wiki ページの中から簡単に Javascript プログラムを実行出来るようにした物だ。ウェブに書く話題によっては文章でなにか説明するよりも論よりコードでソースコードを書いた方が簡潔な事は良くある。私もこの日記にもよくソースコードを貼付けるけど、そういうのは読むだけじゃなく自分で実行してみてはじめて理解が深まる。特に、プログラムの色々なパラメーターを変更しつつ結果を調べる事が一番だ。Chalkboard はその目的に特化した Wiki だ。例えばこんな事が出来る。

  • 見出しやリストといった構造付きの文書を WYSIWYG で編集出来る。
  • ページの中の Javascript プログラムをその場で実行出来る。
  • 実行後、変更された変数を表示出来る。

特に最後のやつは、今流行の Processing や Flash と性質が違う部分だ。こういうコンパイル式の言語ではプログラムの開発環境と実行環境がはっきり分かれていて、実行中のプログラムを観察するには特別なデバッガが必要になる。Chalkboard ではプログラム実行中でも開発中でも変数を観察出来て、これはさっきの「パラメーターを変更しつつ結果を調べる」ような用途には必須だと思っている。

私はこの手のプログラムを何度も何度も作っては捨てているんだけど、今回の目的はうまい妥協点を探す事にある。例えば変数の内容を観察するウォッチャーも無いし、タイル式の言語も無い。機能を増やすと実験的性格が強くなって使いにくいので、出来るだけ単純なままにしたいと思っている。とはいえ機能が少なすぎても使う気がおこらない。そこで色々考えて今回データを Javascript ソースコードとして記録する機能を追加した。

今までブラウザ付属の HTML エディタが生成する HTML データをそのまま保存して、実行する時は中から PRE 要素だけを取り出していた。これは、例えば diff を取りにくいとか色々問題があったので、サンプルを作る時には自分でも HTML エディタを使わず手打ちした HTML を食わすようになってしまった。こんな自分でも使わない仕組みを他の誰かが使うわけが無い。問題はエディタの出す HTML がフリーダム過ぎる事なので、いったん他のテキストファイル形式に変換する事で機械にも人間にも扱いやすいデータが出来上がる。Luke の PBook を参考に、javascript ソースコードの中にコメントとして書式付き文書を埋込む事にした。

これでファイルの見かけは javascript + wiki 書法になる。基本 javascript のコメントを HTML パラグラフに変換するだけなので分かりやすいし、これで世の中に出回っている javascript プログラムを Chalkboard にコピーしたり、その逆の事が簡単に出来る。試しに OMeta を入れてみたがすんなり動いた(実は、この改良は当初 OMeta をすんなり動かすための物だった)。

果たして、この仕事が何に結びつくのかは自分でも謎だ。でも完全に飽きてしまう前に自分ではじめた仕事を纏めておきたいと思い、無理矢理頑張っている。