Lightweight Language Day
昨日はLightweight Language Day and Nightに行ってきた。夕方から用事があったので昼の部だけ。いろいろメモってきたのだけど、時間がないので簡単に。
まず、地図をみたら新宿駅下車っぽかったので、新宿から四谷区民ホールまで歩いていったらえらい遠くて大変でした。着いた頃には Language Update の何個かがすでに終わってしまっていた。でもまあ、終わってたのは awk、Curl、Gauche、Haskell あたりで、P3R は聴けたのでよしとする。あ、P3R っていうのは今僕が勝手に作った言葉で(w) Perl、PHP、Python、Ruby のメジャー4大LLのことです。
PHP が 5.1 でかなり速くなるとか、実用的な面を重視しているため update も信頼性向上みたいなところが多くを占めている様子 (PEAR、PECL を分離するとか)、Perl 6 は insane だから Perl 5 と比べるもんでもないとか、Pugs でちゃんと動いているとか。Ruby は YARV の開発が順調っぽいとか、そんなところかな。
2年前に聞いた Language Update に比べると、あのときは Ruby でまつもとさんが喋ってて、その影響かみんな Ruby を意識して喋ってたりとか、Parrot っていう言葉を初めて聞いたとかあって、なんか LL の世界もすごい進化してるんだなという印象だったけど、今回のは 2 年前に聞いた話とあんま変わってない印象でした。思ってたより動きは遅いのかもしれない、って言語使用がそんなにすごい勢いで update されても困るからこんぐらいでちょうどいいんだと思うけども。
個人的には ML の上野さんのプレゼンが面白かった。SML で検索しちゃいけません。
例によってDan Kogai氏が相変わらず飛ばしてて、いろいろ質問していたんですが、Ruby のところで「require じゃなくて use は採用しないの?」というのの回答のやりとり、いい質問だと思ったけどちゃんと噛み合ってなかったですね。
require は動的ロードで use は半静的ロードだと考えると、mod_perl のように、スクリプト言語のコンパイルフェーズのコストを 0 にしてくれるような環境では後者による恩恵が非常に大きいんだけど ruby にはそれがない。(今回は来てなかった)まつもとさんは use は要らないと言っているけども mod_ruby なんかのことを考えると use もあった方がいいんじゃないの? ってのを弾さんが質問してたんだと思うけど。その辺どうなのかちょっと改めて聞いてみたいですね。
午後はフレームワークの話。いけべさんが Sledge の解説、それから高橋メソッドのRubyの高橋さんが Rails の解説、あともうひとつなぞのフレームワーク...じゃなくて Gauche の Kahua というフレームワークの解説でした。生で高橋メソッド見ちゃったよ。
僕は Rails のところで、Rails で作ったアプリケーションはどういう環境で動かすのが一般的なの? mod_ruby みたいなのを使うの? という質問をしました。前々からすごい気になってて、質問で積年の疑問が解消されてすっきりしました。答えとしては FastCGI、mod_ruby、lighttpd、みたいな感じ。
前々から思ってるのですが、MVC フレームワークってのはそのフレームワークが使いやすいとかイケてるとかいう以前に、そのフレームワークを使ってできあがったアプリケーションを動かす環境が現実的かどうかってところがまずその選択基準になるだろうと思います。例えば Perl なら、フレームワークを使って作ったけども mod_perl じゃ動かない、とか論外だし。
なので、フレームワークがなるべくそういう実行環境の差も吸収してくれていると、プログラマも環境が変わっても同じフレームワークを同じように扱うだけでアプリケーションを作り続けられるので効率が良い。僕が知る MVC フレームワークは、中には実行環境と蜜結合していたりするものもあり、そういうのはあんまりイケてないと思う。
Rails は、前述のとおりさまざまな環境で使えるし、API の抽象化は新しい環境でもアダプタを用意してやればよい、ということで Rails プログラマはその辺を意識しなくてもよさそうってことがわかりました。多謝。
この辺で時間切れで、君ならどう作るは聞けなかった、残念。
その後、Sledge や Rails の話を聞いて触発され、はてなフレームワークでもスケルトンを自動生成するコマンドとかを作ってみました。
まとまりないけどそんな感じです。