Ruby On Rails がもたらす革新

この前の土曜日は、Ruby On Rails の何が革新的だったかということについて
友人と議論していました。

そのときの会話の内容をメモとして、残しておきます。

Rails の思想

  • Convension over Configuration による設定レスでの動作
  • Confortable Constraints (心地よい制約)による

本質的でない事項は決定せずに、デフォルトの設定のままで
そこそこ普通の動作を行わせることができる。

高度な動作を記述したアプリケーションを記述する Ruby スクリプトまで
高度な内容を記述可能

  • Web アプリケーション開発のベストプラクティスのフレームワーク
    • MVC(Model, View, Controller)の3層モデル
    • ActiveRecord パターンのフレームワーク
      • データベースモデルの設定記述のみで、容易に リレーションシップが多用されたデータアクセスが可能
    • Ajax Web ページ開発を支援する RJS テンプレート
    • アプリケーションWEBサーバによる WEB 構築
    • テストを簡単にするテスティングフレームワーク
    • Rake によるさまざまなタスクの自動化

Railsブルーオーシャン戦略

# 実はブルーオーシャン言いたいだけ
RubyJava のターゲットの違い

  • 規模と対象ユーザ

上記2種類は、大規模開発かつ初級者向けという商業的には魅惑的な開発環境の構築を目指すが、それは死のブラックホールであり、吸い寄せられたが最後 デスマーチへと吸い込まれて逃げられなくなる。

対して、Ruby

  • 小規模〜中規模の開発かつやや熟練した開発者向け・・・ Ruby On Rails

というポジションを狙っている。

Ruby On Rails は、WEBアプリケーションの3階層モデルや、データベースモデリングについて、開発者が理解できている程度のことは前提としているが、この程度はやや熟練していれば、十分開発者は身に着けている。むしろ、これら程度のことを身に着けていることを前提とすることで、小規模開発を非常に生産性高く実現できている。

なぜか、このセグメントを狙い最適化した開発フレームワークはこれまでなく、それが大成功できた理由であろう。

ほかに、柔らかさ⇔かたさ、と 実装の複雑さ⇔実装の平易さという切り口で考えることもできる。

Java は、とても「かたい」フレームワークを志向しており、それを少しでも柔らかくするために、XML という「かたい」設定ファイルを用いる。実装はとても複雑となりやすい。熟練しないと構築できない。一人の開発者では多くの場合全体のほんの一部しか理解できない。つなぎ合わせる段で問題が発生しやすい。

ほかにも PHP は実装が平易なものとなりやすいが、一方フレームワーク作者にとってはやわらかい機能の実現が阻まれやすく、かたいフレームワークとなりやすい。

Perl の場合は、やわらかい機能は実現可能だが、そのフレームワークのユーザにもそこで使われた黒魔術が露出していることが多く、敷居を高く感じさせる。

その点、Ruby では、フレームワーク作者にとっても非常に高度で柔軟な機能を実現させるための黒魔術を整備する一方、その利用者に対してはきれいな世界だけで生きていけるように、フレームワークが整備されていることが多い。
きれいなフレームーワークの世界で設定ファイル的なコードを書くだけで、WEB アプリケーションを構築できる世界と、黒魔術の世界とがシームレスにつながっていることが Ruby の最大の特徴であり、バランスがとれている点である。