「どう書く?org」(ベータ版)を公開しました
どう書くorgについてオフィシャルに言及するのは初めてなのですが、 アルファ版の時点ではてなブックマークのホットエントリーになったり、 オレンジニュースや やじうまWatchで言及していただいたりしたので すでにご存じの方もいらっしゃるかもしれません。 そこでこの記事では今まで語ってこなかった「どうして『どう書くorg』を作ろうと考えたのか」について解説したいと思います。
そもそものきっかけはマルチリンガルなシソーラス検索 - rubyco(るびこ)の日記でした。 言語Xを使っている人が新たに言語Yを使うときになにが障害になるか、というと、 やはり「言語Xでならどうやるか0.1秒で思いつくような簡単な内容を、 言語Yではドキュメントをひっかきまわして探さないといけない」というフラストレーションなわけです。 そのフラストレーションを避ける気持ちが、プログラマを「自分が一番慣れている言語」という檻に閉じこめるのです。 プログラミング言語間の対訳があれば、殻を破ってマルチリンガルの大空に羽ばたくことができるのに。
さて、この対訳マルチリンガル・クックブックを作る上で、 まずは「Wikipedia的なアプローチで言語間の対訳データが集められないか」 と考えPukiWikiで集積サイトを作りました。 しかし「これは絶対に盛り上がらない」と判断して公開しませんでした。 単なるWikiではコードを書いてもらうインセンティブに欠けると思いました。
その後、どういう流れがあったのかは正確には覚えていません。しかし、いつしか キミならどう書く 2.0 - ROUND 1 - Lightweight Language Ring のようなアプローチをもったいないと感じるようになりました。 お題に対してコードを書いている人のほとんどは、そのコードの再利用を禁止したいとは思っていないはずです。 なのに、許可を明示的に取らないせいで実質的に再利用できずに散逸させてしまっています。 せっかく無償でいろいろな言語のコードを書いてもらうことができているのに。これはとてももったいないことです。
このようにして「どう書くorg」の三本柱「マルチリンガル志向」「お題にチャレンジ」「再利用可能なライセンス」ができました。 みなさんのおかげで、7月頭にどう書くorgを公開してから今までの4ヶ月弱で、2796件のコードが投稿されています。 1日平均20件以上という計算になります。
今後の課題は、こうやって集まったコードをどう加工するかだと思います。 指定したコード中から特定の文字列を検索して、同じお題の別の言語のコードを表示する機能 を3ヶ月も前に実装したのですが、これは現状の「お題と解答」というシステムではコードの粒度が大きすぎてなかなか望み通りのものが得られません。 ソースコードを静的に解析することで使われているモジュールを推定する機能(どう書く?org Python 使用モジュール一覧) がついたので、次は「同じお題で使われることの多いモジュールは似た機能のモジュール」というような推定でしょうか。 それとも、お題にするには粒度が小さすぎるような内容を 文字列中のアルファベットを大文字にする どう書く?org のような公開トピックとしてどんどん作ることで粒度の小さいコードを増やすのがいいのでしょうか? まだまだ先が見えません。
しかし、たとえどう書くorgプロジェクトが道半ばで頓挫しても、 集まった「自由に再利用できる」コードは他のプロジェクトの肥やしになるはずです。 進めるところまで進んでみるのが正解かな、と思っています。
長々と昔話や妄想を書きつづってきましたが、まとめたいと思います。 どう書くorgは今まで「出されたお題をいかに解くか競い合う、プログラマのためのコロシアム」と名乗っていました。しかし「プログラマのためのコロシアム」なのは手段であって目的ではありません。どう書くorgの目的は「マルチリンガル・クックブック」を自然発生させることなのです。