連載
» 2008年04月08日 00時00分 公開

JavaエンジニアのためのRuby入門(3):Strutsの知識を基に、Ruby on Railsを学ぶ方法 (3/3)

[中越智哉,ナレッジエックス]
前のページへ 1|2|3       

Railsを学習する際の鍵「設定より規約」

 Javaエンジニアから見た、StrutsとRailsの決定的な相違点としては、やはり「Railsには、Strutsにおけるstruts-config.xmlのような設定ファイルがない」というものが挙げられるでしょう。これには、「Railsの哲学」の1つである「設定より規約」という考え方が大きく影響しています。

 「設定」の記述により開発者がルールを定める前に、「規約」によってあらかじめデフォルトのルールを決めておくという考え方で、「規約」に従う場合には設定の記述を省略できます。

 例えば、Strutsにおけるstruts-config.xmlには、次のような記述が登場します。

<action path="/authenticate" type="sample.LoginAction" input="/jsp/login.jsp">
  <forward name="main" path="/jsp/main.jsp"/>
</action>
<Strutsにおけるstruts-config.xmlの一部分>

これは、このアプリケーションにおいて、

  • 「/authenticate」というパスでリクエストがあったとき
  • ビジネスロジックとして「sample」パッケージの「LoginAction」というActionクラスを利用する
  • 入力内容などのチェックでエラー(妥当でない内容)があった場合は「/jsp/login.jsp」をレスポンスとする
  • このリクエストにおける遷移先を「main」と指示した場合、「/jsp/main.jsp」をレスポンスとする

といったルールを、「設定」の記述によって定めていると考えることができます。

 このような「設定」を記述できることは、開発者がさまざまなルールを柔軟に定められるキャパシティを与えます。半面、特定用途のアプリケーションにおいて異なるルールを混在させたいと思う場面は意外と少ないため、ほぼ同一のルールを繰り返し書くことになり、冗長性を生み出す原因の1つともなっています。

 一方Railsでは、これらに対して「規約」が定められています。上記の例にならって表現すると、

  • 「/コントローラ名/アクション名」というパスでリクエストがあったとき
  • ビジネスロジックとして上記のパスに対応するコントローラクラス(コントローラ名にloginと指定するとLoginControllerクラスが対応。これも規約)の「アクション名」と同名のメソッドを利用する
  • 入力内容などのチェックでエラー(妥当でない内容)があった場合は、呼び出し元のページを再表示する
  • 遷移先は「/app/views/コントローラ名」のフォルダにある、「アクション名」と同名のビューをレスポンスとする

という「規約」が存在しているため、この「規約」に従う限りにおいては、いわゆる「設定」の記述を行う必要がないのです。

 Railsでは、このような規約が多く用意されており、コード量の大幅な削減と可読性・メンテナンスのしやすさの向上に貢献しています。

学習用サンプルコードの生成にも使える「scaffold」

 Railsでは、scaffoldと呼ばれるコードジェネレータを使うことによって、データベース上のあるテーブルに対してCRUD(Create、Read、Update、Delete)操作を行うアプリケーションのサンプルを簡単に生成することができます。scaffoldはアプリケーションを短期間で開発するための強力なツールで、scaffoldで生成されたコードを「足場、土台」として実際のアプリケーションを開発することも可能です。

 Railsをこれから学習しようという方にとって、scaffoldで作成されたコードはよい学習教材ともなります。Strutsにもいろいろなサンプルコードが用意されていますが、scaffoldでは任意のテーブルに対してアクセスできるサンプルが自由に作れてしまうため、お仕着せ的でない、よりリアリティのある教材が手に入ることになります。

Rubyでも、JavaエンジニアにおなじみのIDEが使える

 多くのJavaエンジニアは、IDEを用いてコードの実装を行っていると思います。対してRubyのエンジニアには、強力なテキストエディタとシェルだけでコードを実装していく方が多いようです。

 しかしRubyやRailsの開発においても、いくつかのIDEが用意されています。中でもJavaエンジニアになじみやすいと思われるのが「RadRails」と「NetBeans」です。

 RadRailsはJava開発用のIDEとして有名なEclipseのプラグインとして実装されており、操作感はEclipseに非常に近くなっています。NetBeansももともとはJava開発用のIDEでしたが、最近ではサン・マイクロシステムズのJRubyへのコミットの動きに合わせてか、急速にRuby/Railsサポートが強化されてきています。


 これまで3回にわたり、JavaエンジニアがRubyやRailsを学習していくためのいろいろなトピックスを紹介してきました。いかがでしたか。

 記事ボリュームの関係もあり、あまり深いところまで触れることができなかったトピックスもありますが、これからRubyやRailsを学習していこうとお考えのJavaエンジニアの方にとって、本記事が少しでもお役に立てましたら幸いです。

筆者紹介

ナレッジエックス

中越智哉

北海道出身。北海道大学大学院電子情報工学専攻修士課程修了。在学中はJavaとLinuxに熱中。1999年にテンアートニ(現・サイオステクノロジー)に入社し、Javaの受託開発案件や教育事業などを幅広く担当。2006年3月にナレッジエックスを設立。同社では主にJava/Rubyを中心としたIT開発技術の教育・研修に従事。2007年にはRuby/Rails講師養成講座で講師を務めるなど、Ruby研修講師の実績も豊富。趣味は自転車と草野球、そして毎日欠かさない耳かき。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。