LLフレームワーク周辺動向2007夏 August 10, 2007
Rating: 3.5

Railsが話題になってからかなり経つ。 何か作ろうかと思っていながら準備が面倒で何もしていない。

といってその間にRailsが普及するでもなく、注目されてはいるがあまり使われていないような印象が強くなってきたので、まずは「Railsで開発して大丈夫か?」という点を中心にフレームワークの現状を簡単に調べてみた。 Comparison of web application frameworks(wikipedia)を見ると、各言語用の主要フレームワーク(明らかに落ちているものもあるが)を最も大雑把に比較理解できる。 List of web application frameworksはより網羅的リストになっている(が、Seaser2は落ちている)。

ぱっと見で「こんなにあるのかよ」というくらい乱立気味だが、レンタルサーバーの状況から考えて現実的な選択肢としてはPHPかRuby、次点でPerlあたりに絞るのだろうと思う。Pythonはちょっと苦しい(以前、Zopeでかなり悩んで結局すっぱり捨てた)。

最終的にはどれか1つを選定することになるだろうが、自分でフレームワークに手を入れてメンテするというのでない限り、マイナーなものは避けるべきと考えている。 となると、やはりRailsは安心感がある。 先頭打者ホームラン的に登場したため、RubyのフレームワークはほぼRailsで決まりの感がある。

Ruby以外の言語用のフレームワークは、Railsの注目をうけて雨後の筍のようにプロジェクトが乱立してしまったため、混沌としている。 PHPでは、symfony、Zend Framework、CakePHPなどがよく知られているが、こうも似て非なるものが分裂していると先行き不安が残る。

フレームワークの完成度や将来性を考えればRailsが優勢だと思うのだが、Railsにはセットアップの構成が確立していないという欠点がある。 性能面を考慮すると、非Apacheの軽量Webサーバ(lighttpdなど)とRubyランタイム(FastCGI、mongrelなど)を複数インスタンス立ち上げて負荷分散構成をとる、という路線に落ち着きそうだ。 ただし、これがレンタルサーバの一般的な構成でないために全然普及してこない。

と書くと、いかにもRailsがマニアックな環境を必要とする特殊なソフトウェアであるかのような印象を受ける。 僕も先週までそう思っていたが、よくよく考えるとこれはRailsの問題ではなく、Ruby自体のWeb用ランタイムが確立していないという問題だろうと気づいた。 要するに「Rubyでまともに性能が出せるレンタルサーバーがあればRailsは簡単に使える(はず)」ということだと思う。

PerlやPHPはApacheインターフェースのmod_perlやmod_phpが整備されたことで前近代的なCGIから抜け出してWebアプリケーション用途で”使える”というレベルに達したのだと思うが、Rubyはこの点で遅れている。 レンタルサーバーへの普及を考えるとmod_rubyのようなApache用モジュールがそこそこまともに動作するようにならないと始まらないのではないかと思う。

現状では一部のレンタルサーバーがlighttpd+FastCGIなどの特殊構成でサービス提供しているので、Railsを採用する場合はそのような限られた選択肢から選ぶしかないだろう。

一方、PHP用フレームワークは一般的に普及しているPHPの動作環境で利用できそうだ。 ただし、symfonyがver.1.1でPHP5.0をサポートしない意向とのことで今後の継続性には疑問符がつく。 いまだにPHP4のレンタルサーバーが多く残っているように、古いバージョンの環境は残っているものなのでサポートが打ち切られてしまうと困る。 つねに最新版のPHPしかサポートされないとなると、選択肢の幅はRailsと同じように狭まる可能性が高い。

けっきょくどちらも決定打はないのだが、Railsの方はいま動かせるメドさえ立てば派生する可能性が低い分だけ今後も安心して使えそうだと思った。

なお、LLではないので今回は検討しなかったが、Seaser2(Java)はかなりLLフレームワークを意識して開発されているから同列の候補として検討する価値がありそうだ。 Eclipseを中心としてツールを整備することでコンパイルそのほか付随する作業を徹底的に自動化していて、一概にJavaがLLより煩雑だとは言えなくなっている。

というより話はむしろ逆で、フレームワークまで環境整備に手を出すと「LLだから手軽」という範疇を超えて複雑になるということなのかもしれない。 いかに簡潔に書けても、規約を山ほど覚えて実行環境に頭を使う必要があるのなら魅力半減のような気もしてくる。2日程度でそこそこのアプリケーションが書けたとしてもその前後で数ヶ月かかる、というと、各フレームワークともあながち笑い話とは言えないのではないか。

Comments are closed.