Railsを勉強するために読んだ本(と読んでいる本)

コードは多少書けるけど、Webアプリケーションの開発経験はほとんどない、という前提の下読んだ本の感想をだらだらと。

読んだ本

Learn Ruby on Rails (英語)

http://learn-rails.com/learn-ruby-on-rails.html

本当に初心者向けなので、半分くらいは環境構築。モデルにActiveRecordは使わずにGoogleSpreadsheetを使って、フォームから登録したユーザにメールで送るという簡単なWebアプリケーションの作り方を紹介している。内容はほとんどないけど、雰囲気は掴めたので一番最初に読んでよかった。

Ruby on Rails チュートリアル

http://tatsu-zine.com/books/railstutorial

一冊を通してTwitterライクなWebアプリケーションを作るので、この一冊だけでも一通りRailsがわかった気になれる。 テストファーストで進んでいくのが特徴的で、テストをどうDRYに書いていくか、という点にもかなりページが割かれているので、リファクタリングするときに読み返したい。命名規則に沿ってmigrationファイルを作ると中身も自動で生成してくれるとか、モデルにhas_secure_passwordと1行書けばパスワードを暗号化してくれる(でもpassword_digestというカラム名にする必要がある)とか、細かいけど知っておいた方がいいことも色々書かれていた。 Web版もあって、全て無料で読めることも出来る。ただし結構ボリュームがあるのでiBooksなどで読む方がいい。僕はRebuildをスポンサードしていたときに割引価格で購入した。

Everyday Rails - RSpecによるRailsテスト入門

https://leanpub.com/everydayrailsrspec-jp

RSpec単体の本と聞くとちょっと身構えてしまうけど、僕くらいの初心者が読んでも大体理解出来るレベルで書かれていた。そもそもテストを書くことに不慣れというのもあるけど、RSpecは色んな書き方があって難しいので、迷ったらまずはこの本を見るようにしている。RSpec3への移行方法も参考にして、問題なく2.14->2.99->3.00と上げることが出来た。内容のアップデートも多く、著者・翻訳者さんのこの本に対する意気込みを感じる。最低購入価格の$16で買ってすみません。

Ruby on Rails 4 アプリケーションプログラミング

Ruby on Rails 4 アプリケーションプログラミング

Ruby on Rails 4 アプリケーションプログラミング

Railsの機能を一つずつ解説しているリファレンス的な本。公式のドキュメントも充実しているけど、この本は図も多く解説が分かりやすいので手元に置いておくと安心できる。Test::Unitの使い方について書いてあるのは、僕が読んだ中では今のところこの本だけ。ちなみにWindows環境が前提となっているがほとんど関係なかった。

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

パーフェクト Ruby on Rails

著者が複数人ということもあって内容がとても幅広い。Pry, Hirbなどデバッグが捗るGemの紹介から、ATND風のアプリケーションの作成、インフラ周りの構築方法などなど。KaminariCarrierwaveSidekiqなどよく耳にするGemの使い方も載っているのが嬉しい。9章は今後参考に出来そうな内容が盛りだくさんだったので、この章を読めただけでもこの本を買ってよかった。

THE RAILS 4 WAY (英語)

The Rails 4 Way (3rd Edition) (Addison-Wesley Professional Ruby Series)

The Rails 4 Way (3rd Edition) (Addison-Wesley Professional Ruby Series)

Ruby on Rails 4 アプリケーションプログラミング」に近いリファレンス的な本。ただテストはRSpecでテンプレートエンジンはHamlを紹介している。全体的に解説がちょっと短めなのが残念だったけど、最後にActive ModelActive SupportAPIリファレンスが付いているので、いずれはその辺が役に立ちそう。現時点ではPunditapplication.rbの細かい設定部分がとても参考になった。

実践Ruby on Rails 4

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

一冊を通して顧客管理アプリケーションを作りながら実装方法の例を紹介している。例外処理をConcernにまとめるところはすぐに真似をした。seedデータの使い方やRSpecで行番号を指定して実行する方法もすごく基礎なんだろうけど、この本を読むまで知らなかった。他には、使うことがあるかは分からないけど、constraintsを使ってhostベースでroutingを制限する方法や、presenterクラスを作ったり、Nokogiri::HTML::Builderを使って動的にHTMLコードを生成するところは、こんなやり方もあるんだと参考になった。 本の内容は一部Webで読むことが出来る。

読んでいる本

Rails 4 Application Development: Hotshot (英語)

Rails 4 Application Development: Hotshot

Rails 4 Application Development: Hotshot

1章毎に色んなアプリケーションを作りながらポイントを解説してくれる。今のところちゃんと読んだのはChapter 8だけ。rails-api, active_model_serializers, devise, doorkeeper を使ってAPIサーバを作るという章なんだけど、ピンポイントで自分が作ったものと一緒で、各Gemのドキュメントを調べながら試行錯誤していた時間は何だったのかという気持ちになった…でも結果、間違っていなかったことが分かって安心した。各ステップ毎に重要なポイントをまとめているのが分かりやすくていい。

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回
  • この商品を含むブログを見る

よく陥りがちな(?)ケース毎に、Rails的にはどうリファクタリングすべきかが書いてある。たまにやり過ぎに感じることもあるけど読んでいて面白い。問題は読み進める度に今まで書いたコードを直したくなる衝動に駆られるということ…

その他

そもそもChefのレシピやServerspecくらいでしかRubyを書いたことがなかったので、Rubyを勉強するために以下の本も平行して読んだ。

たのしいRuby 第4版

リファレンス本。わかりやすい。

パーフェクト Ruby

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

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

「パーフェクト Ruby on Rails」同様に内容盛りだくさん。メタプログラミングの章はちゃんと理解出来てないのでしっかり読み返したい。これから一番つき合いが長くなりそうな本。

Dash

http://kapeli.com/dash

本ではないけど、知らないメソッドが出てきたときや、特定のクラスのメソッド名をど忘れてしたときすぐ調べられて便利。RubyRailsに限らず他の言語やミドルウェアからBootstrapやFont Awesomeまで色々入れておいてググる前にこっちで調べている。


ポエム

今の会社に転職して4年間サーバの運用をしてきて、去年末くらいから運用ツールや社内向けWebアプリケーションの開発などをしている。前職でも開発経験は無く、Perlが少し書けるくらいで、Webアプリケーションについてはド素人。また、会社がインフラ屋ということもあって、社内に開発者というかコードを書く人もほとんどいない。相談する相手も、書いたコードをdisってくれる人もいない状況の中、いくつかWebアプリを作ってみて思ったことがある。

Perlが好きなので最初はMojoliciousで作っていた。公式のリファレンスがあるので、機能や使い方に迷うことは少なかったけど、規模が大きくなるにつれて全体の設計で悩むことが多くなってきた。MojoliciousはPerlのWAFの中では国内外共に人気がある方だけど、それでもネット上には参考に出来そうなものは少なく、どれも構成はバラバラだった。TMTOWTDIといえば聞こえはいいけど、結局スタンダードが分からず、本当にこれでいいのかと、いつもコードを書いていて不安だった。動くものは作れるけど、アプリごとの作りに統一性がなかったり、途中で設計が破綻して大部分を書き直すということを何度もして、さすがにこれはいかんと思い、一度Railsを勉強すれば何か分かってくるかもしれない、と思ったのがRailsを始めたきっかけ。長い。

結局勉強しているうちにWebアプリならRailsで作るほうが早いし、コードがシンプルになるということに気づいて、ここ3、4ヶ月くらいは主にRailsを使っている。上で紹介した書籍を初め、ネット上にも例や参考に出来るアプリケーションが多いので、脱線していても気づくことが出来るし、何かにハマってもStack OverflowやGithubのissuesを見るとすぐに解決することが多く、やっぱり情報量の多さは正義だと思った。覚えないといけないことが多いので、通勤時間や休日空いた時間を使って勉強しているけど、今までモヤモヤしていた部分がすっきりしていくので個人的には苦ではない。むしろ楽しい。

別に他のWAFがダメでRailsが最高と言いたい訳ではない。ただ今の自分の状況だと、あえて作り方が制限されるような規約があって、作り方を説明してくれる教科書や参考書のような書籍が沢山あった方が、無駄に遠回りをしたりせずに済むし、安心感が得られて、本質的な部分の開発に集中できるのでよかったという話。同時になぜそういうルールになっているのか、というのをちゃんと考えて自分なりに納得出来ないと、ただRailsの使い方が分かるだけの人になって、自分のスキルは向上しないので気をつけたいと思う。

あわせて読みたい

今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp