Rails で "とりあえず動くコード" を書けるようになった人が次に遭遇する問題とそれを解決してくれる本まとめ
以前も少し書きましたが、いまペパボのフリマアプリ「kiteco(キテコ)」の API を Rails でつくっています(つい先日 Android 版をリリースしました)
で、少し前に新卒2年目氏がチームに加わったので「これ読んどくと良いよ」という本をチーム内で共有しようと思っていたのですが、クローズドな場所に書く理由も無いですし、せっかくなのでブログに書こうかと思いました。
Rails チュートリアル をやり終えて、"とりあえず動く" 動くコードは書けるようになった、という人が次に遭遇するであろう問題とそれを解決してくれる本をまとめます。
紹介する順番には、特に「この順番で読むべき」という意図はないです。まずは自分がいま抱えている問題の本を手に取ってみると良いと思います
もくじ
問題 1. テストが書けない - 読むべき本: Everyday Rails - RSpec による Rails テスト入門 問題 2. Rails っぽく書けない - 読むべき本 (1) パーフェクト Ruby on Rails - 読むべき本 (2) Rails AntiPatterns 問題 3. Ruby っぽく書けない - 読むべき本: パーフェクト Ruby 問題 4. ライブラリのコードを読んでも意味が分からない - 読むべき本: メタプログラミング Ruby 問題 5. Rails が内部で何をやっているのか分からない - 読むべき本: Crafting Rails 4 Applications 問題 6. 手続き型なコードから抜け出せない。オブジェクト指向で書けない - 読むべき本: リファクタリング Ruby エディション 問題 7. クラス設計力が足りない - 読むべき本: デザインパターンとともに学ぶオブジェクト指向のこころ
問題 1. テストが書けない
Rails チュートリアル の最大の長所は「テストを書きながら実装を進めていく」ところだと思うのですが、これをやり終えてもなお、なかなかテストが書けない、書くのに時間がかかるというのは、あると思います。
読むべき本: Everyday Rails - RSpec による Rails テスト入門
何年か前には『RSpec Book』という定番本があったのですが、さすがに情報が古くなっていたところに、今年に入って新しい定番本の訳書が出ました(定番か否かは主観です)
- Everyday Rails - RSpec による Rails テスト入門
- RSpec 初心者必読!「Everyday Rails - RSpec による Rails テスト入門」を発売しました - give IT a try
Rails 4.0, RSpec 2.14, FactoryGirl 4,2, Capybara 2.1 に対応していて、説明がものすごく丁寧で実践的な内容なので「RSpec でテスト書けない」という声を聞いたら、とりあえず「これ一択」と言って薦めています。
問題 2. Rails っぽく書けない
例えば新たにファイルを配置したいのだけれど、lib/
に配置したら良いのか、models/
に配置したら良いのか分からない。例えば大きくなり過ぎた Model を分割したいのだけれど、どう分割したら良いのか分からない。様々な場面で「これが Rails 的に正しいやり方なのかな?」と不安になる。
あるいはせっかく Rails の便利機能があってそれを使えば良いのに、車輪の再発明をしてしまったり。
読むべき本 (1) パーフェクト Ruby on Rails
パーフェクトシリーズらしく、Rails の突っ込んだところまで解説してくれる、中級者向けの本です。最近発売されました(僕も査読というかたちで加わらせていただきました)
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る
これが Rails 的に正しいやり方なのかな?
という不安は、大半の Rails エンジニアが抱えていると思うので、まさに待ち望まれていた内容の本だと思います。
読むべき本 (2) Rails AntiPatterns
- 作者: Chad Pytel,Tammer Saleh
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2010/11/09
- メディア: ペーパーバック
- クリック: 2回
- この商品を含むブログを見る
タイトルのとおり、初心者のうちは、まあ、こういうのやっちゃうよね、というアンチパターンと、それに対する改善策が書かれています。
問題 3. Ruby っぽく書けない
Rails というよりむしろ Ruby の言語仕様がよく分かっていない。配列の操作といったら、each
しか知らないとか。まあそれだけでも何とかなっちゃうのですが、map
とか select
とか inject
とか出てきたらウッと詰まるとか。
読むべき本: パーフェクト Ruby
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (22件) を見る
Ruby の言語仕様を解説した本は他にも多数ありますが、一番「実践的な」本だと思います。上記の配列やハッシュの解説も詳しいし、あと、クラス、モジュール、Proc のように初心者が躓きやすい箇所の解説が充実しているし、あとは、yaml、json、csv、Rake などの実務でよく使うよねというライブラリやツールの解説にも結構ページが割かれています。
問題 4. ライブラリのコードを読んでも意味が分からない
何かライブラリを使っていて、思っていた挙動と違っていたり、ドキュメント読んでも意味不明だったり、そういうときライブラリのコードを読むんだけど、ますますイミフ。というときはだいたいメタプログラミングしている箇所で何をやっているのか分からなくて迷子になっている可能性が高いと思います。
読むべき本: メタプログラミング Ruby
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2010/08/28
- メディア: 大型本
- 購入: 18人 クリック: 533回
- この商品を含むブログ (125件) を見る
前述の『パーフェクト Ruby』でもメタプログラミングに相当数のページが割かれているのですが、この本はまるまる1冊メタプログラミングの本。本の表紙も黒だし、まさしく黒魔術書。Rails で使われている ActiveRecord ではどのようにメタプログラミングを利用しているのかという章もあって、そこまで読んでようやく理解できました。僕の場合は。(僕はパーフェクト Ruby を読んだ後に読みました)
問題 5. Rails が内部で何をやっているのか分からない
例えば Rails を拡張したいのだけど、あるいは gem をつくりたいんだけど、Rails が内部でどう動いているのかが分かっていないと、なかなか手が出せなかったり、良いものがつくれなかったりします。
読むべき本: Crafting Rails 4 Applications
Rails が内部でどう動いているのかを Rails を拡張しながら詳しく解説してくれている本です。
問題 6. 手続き型なコードから抜け出せない。オブジェクト指向で書けない
僕もずうっと PHP で手続き型っぽい書き方をしていて、オブジェクト指向脳になるのに苦労しました。
読むべき本: リファクタリング Ruby エディション
- 作者: Jay Fields,Shane Harvie,Martin Fowler,Kent Beck,長尾高弘
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/02/27
- メディア: 大型本
- 購入: 9人 クリック: 321回
- この商品を含むブログ (49件) を見る
Before, After 形式で書かれていて、オブジェクト指向の、Ruby っぽい書き方にリファクタリングしていくのですが、Before のコードがまさに自分が書いていたコードで、泣けました。
この本のおかげでオブジェクト指向で読みやすいコードを書けるようになったし、オブジェクト指向だけではなく、どうしたらもっと読みやすくできるか、テストが書きやすいコードになるかという情報が満載の本です。
問題 7. クラス設計力が足りない
上記『リファクタリング Ruby エディション』を読んだら、ある程度、適切に然るべきクラスの抽出、メソッドの抽出ができるようになると思うのですが、それでもなお、このクラス設計で良いのかな?と迷うことはしばしば。
読むべき本: デザインパターンとともに学ぶオブジェクト指向のこころ
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
- 作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (6件) を見る
チームのメンバーが薦めてくれました。詳しくは下記参照。
実務で遭遇しそうな問題を題材に、クラス設計を解説してくれていて読みやすかったです。
おわりに
以上、いろいろ挙げましたが、この中でさらに時間対効果が高いものを厳選するとしたら、次の3冊ですかねー。
梅雨入りして雨の日が続いているので、この機会にぜひ読んでみてください。ではでは。
参考サイト
- 古着フリマアプリ kiteco(キテコ)- 手数料無料キャンペーン中!
- Ruby と Rails を覚えるために約1ヶ月半でやったこと - takatoshiono's blog
- 「カスタマーレビュー」を集めてみました: Everyday Rails - RSpec による Rails テスト入門 - give IT a try
- パーフェクトRuby on Railsという書籍が出ます - すがブロ
- パーフェクト Ruby on Rails という本を書きました - おもしろ web サービス開発日記
- パーフェクトな Rails の本を書きました - joker1007’s diary
- パーフェクト Rails で俺が書いた所について思うこといくつか - joker1007’s diary
- パーフェクト Ruby on Rails という本が出ます。 - ローファイ日記