«前の日記(2014-05-30) 最新 次の日記(2014-06-05)» 編集

いがいが日記


2014-05-31 [長年日記]

_ パーフェクトRuby on Rails

twitterで「欲しい!」とサブリミナルに声高に主張していたらいただけました!(ありがとうございます!)

朝届いて、4時間ほどで一気に読了。これは予想以上に素晴らしい本でした。

Railsの基礎から応用まですごく広い範囲が書いてあります。この本がよくできているのは「何を取り上げるか」だと思う。よく使う機能を多岐に渡って選んでます。Sprockectsが詳しく書いてあるのはありがたかった。新しいものはRails4.1で入ったActiveRecordのenum型や、Spring、それとRspec3のexpect記法などまさに最新のことが書かれています。

Rubyについての説明はないので、分からない箇所は姉妹本のパーフェクトRubyを読めということで。(そうしないと既に400ページ以上あるしね)あと、STIの説明がコラムにしかない。これはなるほどと思った。たしかにこの本で紹介されている別のことよりもSTIは優先度低くて良いと思うし、typeっていうカラム名だけ気をつけることがコラムに書いてあってそれで必要十分だなと。

読んでいて面白かったのは、変数名の命名やgemの選択が「あー、私でもこうやるなー」とすごく共感できたこと。著者の4人はよくお話しますが、一緒に仕事はしたことないし、コードレビューをしあったこともない。それでも同じ心を共有できるRails way、素晴らしいです。(それはつまり、一緒に仕事をすることになったときにjoinするのがすごく楽になることなので。初日から戦力になれる、あの感覚。)

どんな人に薦めるかと言われれば、Railsで仕事している人は全員読んだらいいと思う。初級者、中級者は勉強になるだろうし、上級者はきっと他の人に質問されたときに「この本のここに書いてあるから」で説明が終わるのですごく便利なはず。

知らないこと、いっぱいありました。submitタグの2回押し防止の disable_with, めっちゃ便利じゃないですかこれ!それとhas_many dependent: :nullfyも知らんかった。私はRails2.3でRailsをはじめたので、Rails3以降の機能は使う分しか説明読んでなく、体系的に説明している文はWEB+DB Press の松田さんらの記事くらいしか読んだことなかったので、いろいろ整理できてとてもよかったです。プラグインはすっかり様変わりしてるし。10章のRailtie, Engineはすごく勉強になった。

Railsをはじめる人へ、最初の本としてこれを勧められるかは、これだけだとちょっと難しいかもしれない。だから、この本までの補足説明を私の講義資料(18回〜23回。資料はRails4.0ですが、今Rails4.1で鋭意書き直し中です。)でやると良いはず!これは宣伝抜きで本当にそう思う。(宣伝入ってるけどw)私の講義資料を読んで、パーフェクトRailsへ入り、コードをひたすら書き写して動かすのが良いと思う。退屈してきたら6章のサンプルアプリが楽しいと思うからここからやってもいい。Railsチュートリアルもすごく良い資料だけど、それよりもこちらの本の方が説明が分かり易いかもしれない。

著者の1人の確かjokerさんがtwitterで「本を書くのはそれでも割りにあわないと思う」と執筆の苦労を話していたけど、この内容を読むと、大変さと、その気持ちがすごくよく分かる。これは本当に大変だなと思った。それでも、この本が出たことはすごく価値があることだと思う。なぜなら、この本は「Rails本」という仮の姿をした「コミュニティへ入り込むための指南書」だから。

後半を読んでいくと、rack ミドルウェアを使った便利機能や、Railsを拡張する方法が説明されて、gemにするところまでちゃんと丁寧に説明してある。この本を写経したら、gemができちゃうわけだ。進むべき世界がそこにある感がすごい。だから、本の内容は古くなっていくけど(これは仕方ない)、今、この本を読んでコミュニティへ入っていく人達が必ずいるはずで、その人たちは先端を走り続けるはず。だから、「割りにあわない」なんてことは絶対にないと思う。(いや、書くのは本当に大変なのは分かるつもりだけど、ここではかっこいいので言い切る。w)

弊社でもこの本は読書会を開催予定で、先週、同僚にエンジニア全員分の本の発注をお願いしています。パーフェクトRailsが欲しいという方は、弊社へ入社いただければ会社のお金で購入しますのでぜひご検討ください。w

4774165166


«前の日記(2014-05-30) 最新 次の日記(2014-06-05)» 編集