Ruby on Railsに触れる
体調も良くなってきたので、積読状態になっていた以下の3冊を眺めてみる。
- 作者: Yugui
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/06/26
- メディア: 大型本
- 購入: 27人 クリック: 644回
- この商品を含むブログ (251件) を見る
- 作者: arton
- 出版社/メーカー: 翔泳社
- 発売日: 2008/04/15
- メディア: 大型本
- 購入: 6人 クリック: 113回
- この商品を含むブログ (40件) を見る
- 作者: 西和則
- 出版社/メーカー: 秀和システム
- 発売日: 2006/07/31
- メディア: 単行本
- 購入: 2人 クリック: 237回
- この商品を含むブログ (118件) を見る
ざっと見た感じで一言づつ感想をいうと「初めてのRuby」は薄い本ながらポイントが抑えてあっていい感じ。
わずか200ページの中にRubyのエッセンスが詰まっている良書。特に「なぜこうなってるのか」という部分の記述(Rubyらしらの解説)が多いのが良い。僕の周りにも何人か Ruby を始めたいと言っている人がいるけど、そういう人にはぜひ本書を進めたい。
【感想】初めてのRuby : フッ君の日常
という感想もうなづける感じ。
「10日でおぼえる Ruby on Rails入門教室」はすぐに環境を構築できる点がグッド。ただRubyやRailsの説明が少ない気がする。
「Ruby on Rails入門―優しいRailsの育て方」もRuby自体の説明が少ないけど、Railsの説明はしっかりしている感じ。
ただ個人的にはRubyはとっつきづらい印象がある。コード量が少ない分ぱっと見わかりにくいし、ブロックとか見るとなんか独特な言語だなあという感じ。やはりid:kenmaz先生の「5分でわかるRubyおよびRuby on Rails」を待つしかないか(笑)。
オブジェクト指向なスクリプト言語という意味ではPythonぽくてPerlっぽくないんだけど、入出力のあたりはCっぽいし。
まあ僕自身Cのポインタで挫折してJavaに来た人間なのであまり他の言語は知らないんだけど。
RailsはCoCでフルスタックフレームワークということなんだけど、確かにSeasarはRailsの影響が濃い気がする。
URLの作り方とかSAStrutsに似ているし、scaffoldもあるしね。
ちなにみtrunkにあるDoltengでSAStrutsのscaffoldを生成すると以下のようになる。
(略) public class DeptAction { @ActionForm public DeptForm deptForm; public List<Dept> deptItems; public DeptService deptService; @Execute(validator = false) public String index(){ return list(); } @Execute(validator = false) public String list(){ deptItems = deptService.findAll(); return "list.jsp"; } (略)
ちなみにRailsだと、以下のような感じ。
class MemosController < ApplicationController def index list render :action => 'list' end # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html) verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :list } def list @memo_pages, @memos = paginate :memos, :per_page => 10 end (略)
なんか似ている感じ。まあRailsな人からは以下のような意見もでるようだけど。
* 遷移先のJSPファイル名とメソッド名をマッピングさせるお作法は、メソッド名と戻り値に同じ文字列が出てくるのでDRYっぽくない
よりスマートな画面遷移? - 出羽ブログ
* せっかくJavaを使っているのに、戻り値がタイプセーフじゃないのはダサい
あとはマイグレーションは面白いね。DSLっていう考えも新鮮。設定ファイルをプログラム言語自体で書くって言うのはなんかすごいね。フォーマットとしてはMakefileに似ている感じかな。Antのbuild.xmlほど冗長じゃないし、Maven2のpom.xmlほど意味不明じゃないし(笑)。
こんどS2JDBCにも追加されるそうだけどどうな風になるんだろ。DSLは使わないといっているけど、何かしらの設定ファイルを用意してバッチファイルでもたたくんだろうか。