contentHomeWise9とは?投稿募集!OCamlをJavaScriptに変換しちゃうjs_of_ocamlをMacにインストール!やあshi3zだ。なんだか避暑地に来てみたんだけど、やっぱりコンピュータをいじっちゃうのだ。2012という面白そうなイベントが開催されるらしく、しかもARCの坂口君も喋るらしいので、それに向けていろいろ勉強しとかなきゃ、と思ったわけだ。僕も坂口君に聞いて初めて知ったんだけど、AgdaやCoqといった言語のことを言うらしい。簡単に説明すると、今、主流になりつつあるソフトウェアのバグを無くす方法は、とにかくテストをしっかりやるということ。テスト自体も人間が書くものだから当然、漏れもある。テストを頑張っても、バグがないことは誰も保証しない。プログラムといえど、広い意味では理屈の組み合わせのわけだから、これが「完全に正しい」と「数学的に証明」することができれば、ソフトウェアの世界は次の世代へと大きく前進するかもしれない。それを実現するための言語が色々と研究されていると言うワケ。坂口君は最近はCoqを推してるらしいんだけど、このCoqを作ったのはフランスのINRIAという研究所で、そのINRIAという研究所が作った有名な関数型言語がOCaml。OCamlはあまり日本では馴染みのある言語ではないかもしれないけど、最近の東大の情報学科では必修科目で教えるくらい優れた言語らしいし、けっこう、面白いソフトや重要なソフトが、意外にもOCamlで書かれていたりするのだ。CoqもOCamlをもとにしてるっていうか文法が結構似てるらしい。そんなOCamlを僕も多少は齧ったことはあるんだけど、それは齧ってみてすぐに味を忘れるようなくらいにしか齧ってなかった。Summitでの会話について行くためには、最低でもOCamlでなにか実用的なコードを書いてみないことには感覚が掴めない。実用的というのが何を意味するのかイマイチわからんけど、僕にとって目下のところ「実用的」というのはenchant.jsでゲームが書ける、ということだ。長年の知己であるかみやんこと神谷栄治からも、「前田ブロックは関数型言語にアプローチが似てる」という指摘を貰ったりしたので、いまもう一度関数型言語に入門し直してみるともしかしたらenchant.jsや前田ブロックをもっといいものにするヒントが得られるかも知れない。そのためには、とりあえずOCamlを使ってJavaScriptのコードを書きたい、と思ったんだけど、OCamlをJavaScriptに変換する方法はいくつかあって、混乱してしまった。いうの、オープンソースの不人気フレームワークの大きな欠点だと思うんだけど、オープンソースとはいえ、誰かがメンテをやめちゃうと言語のバージョンが上がった時にもう対応できなくなっちゃうんだよねえ。なんとかなんないものか。探した挙げ句、どうやら今一番新しくて良さそうなやり方はjs_of_ocamlを使う方法で、これは今年も更新されてるプロジェクトだからまあとりあえず今すぐ使える、という点は素晴らしい。ところがどっこい、これのインストールでものすごく詰まってしまった。いうのも本当はなんとかなんないかなあと思ってるんだけど、ドキュメントが整備されてなくてインストール方法がよくわからんって凄く面倒だし、せっかく優れたソフトでもインストールすらされずに終わってしまうって勿体ないよね。記事しか見つからなかったんだけど、これもちょっと内容が古くて僕のLionではこのままでは上手く行かなかった。本当は実用的なコードを書くまでやってから記事にしようと思ったけど、あまりに大変だったので結論だけメモ程度に書いてみます。