Tech Racho エンジニアの「?」を「!」に。
  • 開発

PHPとRubyを徹底比較!開発効率をあげて収益を増やす

国内でWebシステム開発によく使われているPHPとRubyを比較します。

Webシステムでは、サーバOSにはLinuxが、プログラミング言語には俗にLL(LightweightLanguage)と呼ばれるerl/PHP/Ruby/Pythonなどのスクリプト型言語が多く利用されます。サーバOSとしてWindowsServer、言語としてJavaなども利用されますが、一般的に開発工数が激増するため、スピード重視のWeb業界ではLinux+スクリプト言語が主流です。今回は、国内でWebシステム開発によく使われている、PHPとRubyを比較してみることにします。Perlは新規開発での採用が減っていること、Pythonは研究用途を除くと国内での採用事例が比較的少ないことから、今回は対象外にしています。

関連記事もあわせてどうぞ
Googleさんから読み取るPHPとRuby on Rails開発の比較
PHP/Rubyに依存しないWebシステム開発におけるHTML/CSSコーディングまとめ

以前はPHP、今はRuby on RailsによるWEBシステム受託開発をしています。

弊社ではRubyというプログラミング言語を使ってシステムを開発しています。そして車輪の再発明を回避しつつ開発効率を最大限引き出すためにRuby on Railsというフレームワークを活用してます。別にRuby以外触れないわけではないのですが、腰を据えて社内のノウハウを構築していくことが組織力を高める要因になるのでそうしています。ただスタッフはそれぞれあいた時間やプライベートで別の言語やフレームワーク、技術を積極的に探しては社内に共有をかけてくれるため、1年後には別の言語・フレームワーク・技術体系を採用しているかもしれません。

現時点でRuby on Railsを毎日活用していて、お客様や同業他社に推薦しまくっているため、「Rubyっていいの?みんなPHP使ってるみたいだけど。」といった質問や相談を頻繁に受けます。お客様からはほぼ100%聞かれる内容なので実際この業界にいる方々以外にとっては意外と情報が少ないのかもしれません。そんな方々にとって何かしら参考になればと願い、比較をまとめてみました。僕は自信はPHPを用いて開発していた期間が長くて思い入れが強く、今でもとても良い言語およびフレームワークが揃っていると思います。その上でなぜRuby on Railsを採用したかや、採用してみてから実感したことを中心にまとめていきます。口下手なので(笑)お会いする前にサイトを見ていただいたり、そもそもこういった情報が広がってくれると嬉しいなと感じています。

PHPによるWeb開発の選択肢

PHPはもともとWebのために開発された言語で、簡単なWebページから本格的なWebシステムまで、非常に多く採用されています。PHPでは、多数のフレームワークが存在し、フレームワークを利用しない(俗に「生PHP」と呼ばれる)開発も広く行われていることが特徴です。参考までに一般的に採用されているフレームワークや開発スタイルはこちら。

Yii、CodeIgniter、CakePHP、Zend、Symfony等のフレームワークを用いた開発

日本で多く採用されているフレームワークの特徴として、始めるための敷居が低く、設置が簡単、があります。特にCakePHPはXAMPPなどのお手軽LAMP環境とも相性がよく、WEBアプリ開発の経験しかなくても、またデザイナであっても手軽にWEBシステムを開発できるのが最大の特徴であり利点です。受託開発のうち、小規模またはキャンペーンなど期限付きの作りきりのシステムを、多少の保守性を残しながら開発するときには良い選択肢です。

生PHPでの開発

小規模システムを中心に、フレームワークを利用しない開発も広く行われています。デザイナーが制作したHTMLに、1ページだけ問い合わせフォームをつけるなどの用途には相変わらず有効です。ただし、当初の予定を超えて開発規模が大きくなり、破綻するという流れも良く見受けられます。

PHPでの開発によるメリット

開発者の数が多い

始めるための敷居が低いため、「PHPプログラマー」で募集をかけると、他の言語に比べて非常に多く集まりやすいです。そのため人月単価もとても低い。人員確保しやすいのは大きなメリットです。ただし、あくまで敷居が低いことによるため、一定レベル以上の人材の数は、他のメジャー言語と同程度と思われます。

日本語の情報が多い

ドキュメント類が豊富なうえ、その多くが丁寧に日本語翻訳されています。そのため、英語にアレルギーがある開発者でも情報収集しやすくなっています。開発者が多い理由に一つでもあります。

導入の敷居が低い

開発側からすると、最近は安価なレンタルサーバでもPHPが組み込まれているため、「納品されたソースコードをFTPで置けば動く」「コマンドラインを触らなくても一通りのことができる」のは、サーバ管理スキルが不要という点で大きなメリットです。生PHPはもちろん、CakePHPもこの点で多く支持されているように見受けられます。逆にYiiやSymfonyのような本格的なフレームワークでは、バージョンやライブラリ要件などが厳しくなってきており、このメリットは享受しにくくなります。

PHPが向いている開発

デザイナーとの分業が重要な体制

基本的にHTMLで構成し、一部必要なページのみをPHPで出力するといった構成が特に工夫無く実現できます。キャンペーンサイトなどで、基本的にデザイナーのみでデザインからHTMLまでを制作し、一部に問い合わせフォームをつけるなどの場合では、分業化の敷居が低いことがメリットになります。

超小規模開発

画面数が極端に少なくデータベースも不要なシステムの場合、高度なフレームワークの生産性よりもスピード重視で作りきるという割り切りに適した手段が多いです。

共用サーバーで動かすことが要件の場合

PHP、特に生PHPやCakePHPでは、レンタルサーバーでも多くの場合設置するだけで動きます。諸事情で共用サーバにインストールが必要、追加ソフトウェアのインストールが禁止されているなどの状況では、この点がメリットになります。

なお、システムは「置いて終わり」でもしばらくは稼働しますが、メンテナンスを怠ることはおすすめできません。どのような環境でもセキュリティアップデートは日々更新されており、追従しなれば大きな問題を引き起こす可能性があります。

RubyでのWeb開発

RubyでWeb開発と言えば、Ruby on Railsフレームワークを使うのが主流です。

デザインからインフラまでをワンストップで

Rails開発では、デザイナー/HTMLコーダー/プログラマ/DBエンジニア/サーバエンジニアのような過度の分業をせず、各開発者がほぼすべての工程を担当するのが普通です。開発者に求められる基本スキルセットが高くなる傾向はありますが、要求を実現するために最適な方法を分担にとらわれず追求することができます。

最新技術・スタイルを常時取り入れる

Rails開発は、良くも悪くも工業生産的にはなっていません。テストやデプロイの自動化、より効率的なデザインフレームワークの採用などにより、ルーチンワークを減らし、常にビジネスロジックの開発に注力できるようになっています。

Rubyでの開発によるメリット/デメリット

[メリット] ノウハウの集約

RubyでのWeb開発と言えばRailsなので、ノウハウがRailsに集結します。言語では無くフレームワーク単位で見た場合に、Railsの人気は圧倒的です。開発者数の多さは、多数のライブラリによる開発効率の向上、安定性の向上など多くのメリットをもたらします。

[メリット] 圧倒的な開発効率

Railsはその登場当時から一貫したポリシーによりアップデートを重ねており、現在ではあらゆるWebシステムへ対応できる基盤になっています。ノウハウの蓄積により、他の追随を許さない開発効率を実現しています。

[デメリット] 導入の敷居の高さ

Railsはその万能性ゆえ、開発者にとってやや敷居が高く、国内でのプログラマー数はPHPと比べると少なめになります。チームメンバーとして参加するにもサーバの基礎知識やコマンドライン操作が必要になるため、工業的な分業もしにくく、必要な時に人員を追加するのに苦労することがあります。またサーバ環境への要求も高く、共有レンタルサーバーなどでは動作させられないことも多いですが、この点は昨今のクラウドサービスの普及により大きな問題にはならなくなってきました。

Rubyが向いている開発

継続的に開発し続けるシステム

システムは生き物です。状況の変化に応じて日々変化を続けていくようなシステムには、Ruby/Railsの効率性と柔軟性が大きな武器になります。特に、立ち上げ時には規模の読めないスタートアップサービスには適しています。
逆に、当初の仕様で変更無く作りきり、いったん完成したら二度と更新しないようなシステムだとしたら、Railsのメリットはあまり享受できないでしょう。バージョンアップが速く、旧バージョンのサポート停止などに対応するコストのほうが高く付いてしまう可能性があります。

システムや事業別、PHP/Ruby on Railsシステムの採用/発注の仕方

上記の事実をもとに、ぼくの主観で振り分けていきます。弊社にはRuby on Rails経験の豊富なエンジニアがいるため、採用しにくいことや開発環境の準備にコストがかかる部分があまりないため、多少バイアスがかかっているかもしれません。

社内業務システムの場合

社内にオールラウンドなエンジニアがいれば(PHP/Ruby on Rails経験不問)、基盤部分だけ発注して、納品後に機能を足していくことをおすすめします。社内システムは常に要望が変化するため初期のデータ設計部分に携わり、基盤部分だけはしっかりと良い物を作っておき、その後何年もかけて自社の要件にあわせて開発を継続していくことが最も安価でリスクの少ない選択肢とおもいます。社内にそういったエンジニアがいない場合、採用できない場合、または継続的に開発していうことが面倒などの理由で実現できない場合、ぜひ弊社のRuby on Railsによるシステム開発も候補にいれていただけますと幸いです。既にあるものをさくっとRuby on Railsシステムに作り変えることも可能です。

自社Webサービスプロトタイピングの場合

社内業務システムのように初期の最も大きな要件が変化しない・また社内で継続的に運用していくような類のものであれば、Ruby on Railsはとても良い選択肢です。逆に、そこまで要件・機能が多くないサービスのプロトタイプを開発するような場合は、すこし注意が必要です。作ってもすぐ全部壊して作りなおす可能性がある場合(例:プロトタイピングして要件を洗い出す場合など)はスピード重視かつ保守性を捨てたほうが良い場合があるため、PHPも良い選択肢と言えます。機能の量でフレームワークを活用するかどうかを決めれば良いかと思います。弊社はRuby on Railsでこういったご要望にも答えていくために速度重視の開発も承っていまして、決して遅れをとるとは思っていませんが、一般論としては以上になります。

キャンペーンなど期限付きのサイトの場合

キャンペーンが終われば正常かどうする必要がないなど、保守性をある程度無視して開発できるものはPHPやアリモノのシステムを採用すべきです。PHPはツールや関連ソフトが無料な場合が多くスモールスタートする場合に適しています。

PHP/Rubyの比較はここまでです。よろしければ、こちらももあわせてどうぞ

Googleさんから読み取るPHPとRuby on Rails開発の比較
PHP/Rubyに依存しないWebシステム開発におけるHTML/CSSコーディングまとめ

関連記事

40名:増床の費用対効果改善と社員満足度向上のための個別指導教室
35名:拡大と社員満足度向上を見据えた人事・採用担当の仕事と迎え入れ方
30名:拡大と収益率改善のための大量採用の実現と社内平均値の上げ方
25名:今後の開発体制強化を意図したウィングドア社株式取得
25名:引き受けられる案件難易度向上を実現するバーサタイルウェイ社株式取得
25名:今後の拡大を支える仕組みづくりを開始、まずは社員研修から
20名:拡大に応じて残す外注先とそうでないところの選定基準
20名:経営能力と資源確保のための第三者割当増資を実施
20名:拡大を決意し2015年度振り返り改善点を洗い出す


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。