[AD] Railsが自社Webサービス開発に向く10+1の理由

MOONGIFTではRailsによる受託開発、教育を行っております。そして今回、なぜRailsが良いのかという理由について挙げてみましたのでRails開発に迷いを感じられている方は参考にしていただければと思います。書いてあることは前々から言われているようなことばかりですが…。
まず第一前提としてよく「Railsは生産性が高い」と言われますが、今回は書かないようにしています。目に見えづらく、経験則によるものなのでかえって怪しく見えてしまうからです。数字にまで落とし込めれば良いのですが、正確性がないので今回は省きます。
詳細は以下より。
1. MVCがRailsのみで完結する
Railsはフレームワークであり統合システムプラットフォームです。他言語のフレームワークでは、Webアプリケーションサーバ、ビュー、O/Rマッピングとそれぞれ選定し組み合わせる必要があるのですが、Railsの場合はRailsさえあれば事足ります。ここを縛りと感じるか、不要な選択の手間を省いてくれるかは個人の考え方によります。が、Railsのコンセプトとして「設定より規約」というものがあります。まさにレール(Rail)に乗ることで快適なWebアプリケーション開発が行えるようになります。
選択を不要にすることで開発の開始が速く、知識の均質化がなされるようになります。
2. コーディング量が少ない
RailsはWebアプリケーション開発における基盤となる機能の殆どを実装しています。場合によっては殆どコーディングをせずに済むでしょう。コーディングが少なければバグが潜む可能性も減り、安定した動作が臨めるようになります。
また、多数のプラグインやRubyGemsを使うことにより、一般的な機能(認証やタグクラウド、コメント機能など)をコーディングなしで実現できます。これらの第三者による機能の提供もRailsの魅力になります。
コーディング量を少なくすることで素早い開発が可能になり、さらにバグも抑えることができます。
3. テスト機構が予め組み込まれている
Webアプリケーション開発に限らず、テストを自動化する仕組みはシステムの品質を上げるのに重要な要素になります。Railsではユニットテストを行う仕組みが予め組み込まれているので、ソフトウェアの選定に悩むことなく導入することが可能です。
開発の終盤ではテスト工程が飛ばされることがありますが、Railsを利用することで開発を効率化し、空いた時間をテストに割り当てることでシステムの品質を高め、よりよいものに仕上げることができるようになります。
4. 使い勝手の良いO/Rマッピング
Webアプリケーションにおいてはデータベースが重要な技術要素になります。が、RDBMS(リレーショナルデータベース管理システム)はSQLを介してアクセスするため、通常のプログラム言語とは切り離されて利用されてきました。利用方法が異なるために、SQLインジェクションのようなバグが潜む可能性を高くしています。
Railsで提供されるO/RマッピングシステムであるActiveRecordはそんなデータベースの存在を意識することなく利用できる優れたシステムです。全てRails側で処理を行ってくれるため、複雑なデータを取得する必要がなければ、SQLを書くことはありません。
リレーションに関する情報もRailsのモデル上に定義を行うだけで良く、容易に欲しいデータが取り出せるようになります。
5. Ajaxが容易に使える
これはAjaxを容易に行えるようにするprototype.jsによる力が大きい所ですが。Railsではprototype.jsをJavaScriptのコーディングなしで扱えます。これはprototype.jsの開発者であるSam Stephenson氏が37signals(Ruby on Railsの開発元)に在籍されていることも大きいでしょう。
prototype.jsではなくjQueryが好きな方はjRailsというプラグインを入れることでprototype.jsと同じ書き方でjQueryを使った多彩なアクション、Ajaxを実装できるようになります。
Webアプリケーションを作る上でAjaxの活用は欠かせなくなっています。Railsを使えばAjaxを容易に利用でき、さらにRailsとの親和性も高く簡単に機能を実装できます。
6. 柔軟なバリデーション機能
Railsのモデルにはバリデーションの機能が組み込まれています。データベースの値を参照したり、別な関数の実行結果によって振り分けたりと柔軟なチェックが可能です。モデルに組み込むことで、アクションごとのコーディング量が減り、コードも集約されて変更に対して柔軟に対応できるようになります。
7. 豊富なプラグイン
認証、タギング、コメント、全文検索、ファイルアップロード、ページネーション…Railsがいかに優秀であろうとも、WebアプリケーションにはRailsだけでは足りない機能が多数必要になります。が、それらは世界中の開発者がプラグインという形で開発を行い提供してくれています。これらを使うことで実装するとコーディング量が増えそうなものも、コードレスで実装できるようになります。
認証一つとっても様々な可能性があります。通常のWeb認証に加えてBasic認証やOpenIDを利用することもあります。こうした一つ一つの機能についてプラグインの存在を確かめれば、さらに素早くシステム開発が行えるようになります。
こうした機能をRailsの中に組み込んでしまうとフレームワーク全体が重厚になってしまいます。その取捨選択の妙技がRailsの良さとも言えます。
8. 多数のオープンソース・ソフトウェア
Railsを学ぶ方法は幾つかあります。書籍やWebの情報をもとに自分でコーディングしてみるのも一つですが、他人の書いたコードを見るのも一つです。Railsはその人気の高さもあって、多数のオープンソース・ソフトウェアが存在しています。MOONGIFTでも既に100近くのRuby on Railsを利用したWebアプリケーションを紹介しています。
また、自分の作りたいと思っているWebアプリケーションをオープンソース・ソフトウェアをベースに作り上げていくのも一つの手です。Railsはここ数年のWeb2.0の波に乗って出てきたフレームワークであるため、ソーシャルブックマークやソーシャルニュース、ブログ、マイクロブログ、SNSなど新しめのWebアプリケーションが多数存在しています。これらをベースに改造して自分なりのWebアプリケーションを構築するとさらに素早く構築ができるようになります。
先駆者たちの知識を吸収するのにRailsがオープンソースであることの利点は大きいと言えます。
9. 多数のWeb情報、書籍
数年前では考えられなかったのですが、Webや書籍でのRailsに関する情報は一気に増えてきました。とは言えRails自体の開発速度がはやく、書籍などがすぐに陳腐化してしまったり、最新のバージョンに対応できなくなってしまうことが多々ありますが…。
とは言え、Rails 2.0系(現在は2.1.2が最新)の情報もWebで探すと多数見つかるようになってきています。また、コミュニティに参加するのも良いでしょう。
10. アジャイル開発が行える
コーディング量が少なく機能が実現できるとあって、素早い開発が可能です。そのため、要望の変化にあわせて手早く開発ができるようになります。アジャイル開発では仕様を初期段階できっちりと決めるのではなく、ミーティングを重ねながら徐々にシステムを変えていく必要があります。その点、スクリプト言語であるRubyは変更が手早く反映されるのでアジャイル開発向きと言えます。
他のスクリプト言語に比べて言えば、Railsという柔軟かつ強固なフレームワークの力によりコーディングを少なく手早くアジャイル開発を行えるのがメリットです。
そして最後の理由が、
11. Rubyが日本製
ではないでしょうか。恐らくRubyが海外の言語であったとしたら、日本でここまでもてはやされることはなかったと思われます。とは言え、Ruby on Railsが優秀なフレームワークであるのには変わりはありません。
Railsに関して言えば特に日本語のサポートが充実しているということはありませんが、その元になったRubyが日本製(というよりまつもとゆきひろ氏製)だったからこそ、日本においてもここまでRailsが注目を集めていると言えるのではないでしょうか。
そしてそもそもの題名にある「自社Webサービス」という言葉についてです。個人的な観点で言えば、Railsは他社向けのシステム開発には向いていないと考えています。これらは幾つか要因があるのですが別の機会にて。簡潔に言うと「開発リソースの確保」「パフォーマンス保証」「多様なプラットフォームに対する情報量」などが問題です。そこで他社向けであれば簡易的なものはPHPやPerl、重厚なものはJavaなどを選択するのが良いのではないでしょうか。
自社サービスについて言えば、刻々と変わる利用者のニーズに対して素早く対応していく必要があります。そこには仮定に基づいた実験もあり、それらを素早くフィードバックできる仕組みが必要です。そのとき、アジャイル的な開発に向いたRailsはきっと役に立つはずです。
また、開発会社については未知の技術を使うよりも既知の技術を使った方が保証もでき、安全です。パフォーマンスの面でRailsが問題視されることも多く、最適なアーキテクチャもまだまだ情報が充実していません。その点、自社のWebサービスであれば初期段階は低コストに、利用者やPV増にあわせてシステム増強をはかることが可能です。
MOONGIFTにRailsの受託開発または開発協力を必要とされる方がいらっしゃいましたが、info@moongift.jpまでご連絡ください!