Rubyで書くか、PHPで書くか、それが問題だ

はっきりいって、やっぱりRubyは遅いです。Railsじゃなくて、Rubyが遅いです。Rubyでループしまくってデータをインポートするバッチを書いたら、C#で同じ処理をさせたときの倍近くかかりました。(正確に計測していないので倍は言いすぎだと思うが、体感できるぐらい遅かった。今度PHPで同じコードを書いてみよう)

いわれてみれば書いてて気持ちいいし、Railsはらくちんです。しかし、ここまで遅いとは思っていなかった。ただ、遅いといってもフツーのWebアプリを開発する分にはそれほど大差は出ないのかもしれません。それでもやっぱりループ処理は遅いなぁ。イテレータのおかげでらくちんではあるのですが。

ORマッパーは、便利ですがやはり不安を常に感じてしまいます。ループ処理するときにはORマッパー任せにしないでfind_by_sqlで自分でSQLを書いちゃいます。そうしないと、100回のループで100件の問い合わせをされちゃいます。ここは外部結合使ってごっそり取ってきて欲しかった。まぁ、MySQLは外部結合するよりクエリ連打した方が早いからいいのかな。

ただし、ルーテイングは便利です。コントローラとアクションの管理がラクなので、あとからソースを追うときに非常にラクです。さらに、MVCの管理がすっきりしてます。

「それだけならCakePHPでもいいじゃないか」といわれそうですが、CakePHPはRubyonRailsより遅いというベンチを誰かのブログで拝見しました。いやー、アレ以上遅いのはさすがにパスかな。symfonyも同様みたいです。

小規模サイトで開発メンバーの入れ替わりがあるなら、フレームワークは必須でしょう。中規模以上になってもハードウェアに予算投入で解決できるならそれほど問題にはならないと思います。

予算が限られ、自社内コンテンツみたいに開発メンバーが限定されるのであれば、ピュアなPHPとSmarty、URLをきれいにしたければ(GETにだらだらつけたくなければ)mod_rewriteを使えばよいかと。

自社内コンテンツであっても、メンテナンスなどを考えるとフレームワークを導入した方がいい気もするのですが、サイトの成長計画と相談ですかねぇ。

あ、言語の話じゃなくてフレームワークの話になってきちゃった。