おいちゃんと呼ばれています

ウェブ技術や日々考えたことなどを綴っていきます

Rails で "とりあえず動くコード" を書けるようになった人が次に遭遇する問題とそれを解決してくれる本まとめ

以前も少し書きましたが、いまペパボのフリマアプリ「kiteco(キテコ)」の APIRails でつくっています(つい先日 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』という定番本があったのですが、さすがに情報が古くなっていたところに、今年に入って新しい定番本の訳書が出ました(定番か否かは主観です)

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 の突っ込んだところまで解説してくれる、中級者向けの本です。最近発売されました(僕も査読というかたちで加わらせていただきました)

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

これが Rails 的に正しいやり方なのかな?

という不安は、大半の Rails エンジニアが抱えていると思うので、まさに待ち望まれていた内容の本だと思います。

読むべき本 (2) Rails AntiPatterns

Rails AntiPatterns: Best Practice Ruby on Rails Refactoring (Addison-Wesley Professional Ruby Series)

Rails AntiPatterns: Best Practice Ruby on Rails Refactoring (Addison-Wesley Professional Ruby Series)

  • 作者: Chad Pytel,Tammer Saleh
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2010/11/09
  • メディア: ペーパーバック
  • クリック: 2回
  • この商品を含むブログを見る

タイトルのとおり、初心者のうちは、まあ、こういうのやっちゃうよね、というアンチパターンと、それに対する改善策が書かれています。

問題 3. Ruby っぽく書けない

Rails というよりむしろ Ruby の言語仕様がよく分かっていない。配列の操作といったら、each しか知らないとか。まあそれだけでも何とかなっちゃうのですが、map とか select とか inject とか出てきたらウッと詰まるとか。

読むべき本: パーフェクト Ruby

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

Ruby の言語仕様を解説した本は他にも多数ありますが、一番「実践的な」本だと思います。上記の配列やハッシュの解説も詳しいし、あと、クラス、モジュール、Proc のように初心者が躓きやすい箇所の解説が充実しているし、あとは、yamljsoncsv、Rake などの実務でよく使うよねというライブラリやツールの解説にも結構ページが割かれています。

問題 4. ライブラリのコードを読んでも意味が分からない

何かライブラリを使っていて、思っていた挙動と違っていたり、ドキュメント読んでも意味不明だったり、そういうときライブラリのコードを読むんだけど、ますますイミフ。というときはだいたいメタプログラミングしている箇所で何をやっているのか分からなくて迷子になっている可能性が高いと思います。

読むべき本: メタプログラミング Ruby

メタプログラミングRuby

メタプログラミングRuby

前述の『パーフェクト Ruby』でもメタプログラミングに相当数のページが割かれているのですが、この本はまるまる1冊メタプログラミングの本。本の表紙も黒だし、まさしく黒魔術書。Rails で使われている ActiveRecord ではどのようにメタプログラミングを利用しているのかという章もあって、そこまで読んでようやく理解できました。僕の場合は。(僕はパーフェクト Ruby を読んだ後に読みました)

問題 5. Rails が内部で何をやっているのか分からない

例えば Rails を拡張したいのだけど、あるいは gem をつくりたいんだけど、Rails が内部でどう動いているのかが分かっていないと、なかなか手が出せなかったり、良いものがつくれなかったりします。

読むべき本: Crafting Rails 4 Applications

Rails が内部でどう動いているのかを Rails を拡張しながら詳しく解説してくれている本です。

問題 6. 手続き型なコードから抜け出せない。オブジェクト指向で書けない

僕もずうっと PHP で手続き型っぽい書き方をしていて、オブジェクト指向脳になるのに苦労しました。

読むべき本: リファクタリング Ruby エディション

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

Before, After 形式で書かれていて、オブジェクト指向の、Ruby っぽい書き方にリファクタリングしていくのですが、Before のコードがまさに自分が書いていたコードで、泣けました。

この本のおかげでオブジェクト指向で読みやすいコードを書けるようになったし、オブジェクト指向だけではなく、どうしたらもっと読みやすくできるか、テストが書きやすいコードになるかという情報が満載の本です。

問題 7. クラス設計力が足りない

上記『リファクタリング Ruby エディション』を読んだら、ある程度、適切に然るべきクラスの抽出、メソッドの抽出ができるようになると思うのですが、それでもなお、このクラス設計で良いのかな?と迷うことはしばしば。

読むべき本: デザインパターンとともに学ぶオブジェクト指向のこころ

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)

チームのメンバーが薦めてくれました。詳しくは下記参照。

実務で遭遇しそうな問題を題材に、クラス設計を解説してくれていて読みやすかったです。

おわりに

以上、いろいろ挙げましたが、この中でさらに時間対効果が高いものを厳選するとしたら、次の3冊ですかねー。

梅雨入りして雨の日が続いているので、この機会にぜひ読んでみてください。ではでは。

参考サイト

関連エントリー