昨年は10月にこのサイトのサーバーサイド言語を PHP から Ruby に変更するという、内部の人間(わたししかいませんが)としては大きな変化がありました。もっとも以前からご覧になっている方ならご承知のとおり、機能的にはほぼ従前の通りで単に PHP から Ruby に「翻訳」しただけともいえます。
サーバーサイド言語を変更するにあたって、サイトの反応が悪くなってしまうのでは(一般に Ruby は PHP と比較すると動作速度の面で不利とされています)と懸念していたのですが、同時に HTTP サーバーを Apache からより軽い Nginx にしたせいか、体感ではほとんど同じような気がします。
テスト機に PHP による旧仕様の環境と Ruby による新仕様の環境を両方構築し、Apache Bench を使って比較してみたところ、やはり新仕様の方が遅いことは遅いのですが、しかしこれは重大な差異といえるほどのものだろうか? 識者におうかがいしたい(笑)
同じローカルネットワーク内の別PCから
$ ab -n 300 -c 30 http://***.***.***.***
とコマンドをたたいて Apache Bench を実行した結果のうち、1秒あたりのリクエスト処理数が以下のとおり。
旧仕様( Apache + PHP + CodeIgniter + APC ) → 99.18
新仕様( Nginx + Ruby + Phusion Passenger + Sinatra ) → 96.16
びみょ・・・。ウチのサイトのアクセス状況では、まず差は感じられないかと思います。
今では自分用で何かコードを書く時はほとんど Ruby になっています。やはり汎用性では Ruby かなと思いますし、慣れれば使いやすい言語です、たしかに。
しかし、仕事では今後も PHP でしょうね。どこかの求人サイトでウェブ系プログラマの求人数を見てもらえればわかりますが、PHP が圧倒しています。「バグ量産言語」とも言われて、使われている割には積極的な支持者が少ない PHP ですが、わたしはあの安直さがけっこう好きです(笑)。「とりあえず関数、ペタペタ貼ってけばなんか動く」みたいなね(だから、バグが増えるんでしょーが)。ウェブ系で使う分には決して悪くないのでは?
Ruby はとっつきがよくないよなぁと思っています。プログラム初心者やオブジェクト指向に不慣れな人には特に。その自由さがかえって仇になっていて、どんなふうにコードを書くのがいいのか、つかみにくいです。
PHP は言語としての美しさはアレでも、使われているだけに情報は多いです、ネットでも書籍等でも。なので、問題にぶち当たった時でも解決策がみつかりやすいと思います。Ruby は・・・、がんばりましょう。