 |

|
Ruby on Rails入門 |
第1回:Railsが注目されている理由
著者:アスタリクス 大西 正太 2006/5/24
|
|
|
1 2 3 次のページ
|
 |
はじめに
|
ここ最近Ruby on Rails(以下、Rails)というWebアプリケーションのフレームワークが注目を浴びています。ではRailsが注目される理由とはなんでしょうか。本連載では「Railsとは何か」から解説し、Railsを実際に動かしながら基本を押さえ、注目される理由を明らかにしていきます。
|
Railsとは
|
RailsはDevid Heinemeier Hansson氏(以下、Hansson氏)が中心となって作成を続けているRuby製のオープンソースWebアプリケーションフレームワークです。まずはその概要について少し探ってみましょう。
|
成り立ち
|
Railsは、2003年の夏にHansson氏が作成を開始して、2004年にはじめて一般に公開されました。
それまでは「すぐに作れるけどゴチャゴチャしがちなPHPと、きれいだけど作るのに時間がかかるJavaを使ってソフトウェア開発をしていた」とHansson氏は語っています。そこで両者のいいとこどりをした「早くてきれいな」フレームワークを目指して開発をはじめ、現実のものにした結果がRailsなのです。
|
After Railsフレームワーク
|
優れた特徴を持つRailsは、リリース後から現在にいたるまで爆発的に流行っています。ではどのくらい流行っているのでしょうか。そこでRailsにインスピレーションを受けて誕生した(とされる)代表的なフレームワークを表1にあげます。
言語 |
名称 |
Java |
Trails、Sails |
Perl |
Catalyst |
PHP |
Cake、Biscuit、PHP on Trax |
Python |
Django、Turbo Gear |
Groovy |
Grails |
.Net |
MonoRail |
表1:主要なAfter Railsフレームワーク一覧
表1を見るとわかるように様々なプログラミング言語でRailsライクなフレームワークが実装されています。この影響力の大きさを見てもRailsの注目度を確信することができるでしょう。
|
コンセプトは「規約は設定に勝る」
|
Railsがここまで多くの支持を得た理由は1つではありません。従来のフレームワークにはなかったいくつもの革新的な特徴が、相乗効果を生みだしたからだといえます(表2)。
名称 |
概要 |
Convention over Configuration |
規約に則ることで様々な省力化をしてくれる |
Don't Repeat Yourself |
同じデータやロジックを重複させない |
環境タイプ |
開発・テスト・本番の3環境が準備されており各工程に最適な特性を持っている |
ジェネレータ |
ソースコードの雛形生成ができる |
フルスタック |
画面周り、データ周りや自動テストなど、開発に必要な機能がオールインワンで入っている |
表2:Railsを特徴付けるキーワード
その中でも1点特筆するとすれば、Convention over Configuration(CoC)でしょう。CoCは「規約は設定に勝る」と訳されます。
例えば、Railsでは「モデルクラスにはマッピングしたいテーブルの単数形を命名する」という規約があります。これに則って「CARS」テーブルとマッピングしたいクラスに「Car」という名称をつけるだけで自動的にO/Rマッピングされて簡単にデータベースアクセスできるようになります。
もちろんCarクラスをKURUMAテーブルに明示的にマッピングするように「設定」することもできますが、その必要があるケースは少ないため、ほとんどの場合は設定の記述を省略できるのです。
このように「80%のケースではRailsの規約解釈によって自動的にお膳立てしてもらい、残り20%のケースでだけ開発者が手動で明示的に上書き設定すればいい」という考え方がCoCです。規約に則っていればいるほど感動的なまでにソースコード量を削減できます。
言い換えると「すべてのものに柔軟性を与える必要はない」という割り切りに基づく考えです。従来のフレームワークになかったものは、この「割り切り」であるといえるかもしれません。
|
1 2 3 次のページ
|

|
|

|
著者プロフィール
株式会社アスタリクス 大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。
|
|
|
|