「RailsによるアジャイルWebアプリケーション開発」を少し読んで
RailsによるアジャイルWebアプリケーション開発 第3版
- 作者: Sam Ruby,David Heinemeier Hansson,Dave Thomas,前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2009/12/01
- メディア: 単行本
- 購入: 16人 クリック: 316回
- この商品を含むブログ (39件) を見る
今のRails開発がわかる!
原書が今年3月の発行で、本書は今月出たばかり。本文ではRails2.2系を対象としているので、コードのほとんどは現2.3系にも対応している。たまに2.3系で仕様変更となった箇所が出てくるが、その都度訳注で解説されるという安心設計。とりあえず2.3系を使っている今なら、これ一冊で事足りる。和訳が素晴らしい仕事してくれてる。
本書の執筆にはRails作者のDavid Heinemeier Hanssonも参加しているため、Railsのイディオムがこれでもかと詰まっている。「ここはこういう書き方もできる。けどね、そうすると○○なとき、こういう困ったことになるんだ」といった具合に。たまに疑問に思うことについても、必ず根拠が示されていたり、少し後の方で「実は…」と解説されていたり、こういう本を読むときのモヤモヤ感が全くない(今のところ)。本文にも書いてあったが、Railsは新しく機能が追加されたときは「これは使える!」と思われていたけど微妙だったり、逆に「こんなの必要なの?」って機能が実はかなり役立ったり、ということが多いよう。Railsが発表されてから数年が経ち、ある程度そういった知識が詰まれた今だからこそ、"今のRails開発"を体系化できている、のだなぁと思った。
アジャイル?
よくわからないアジャイル。本書の後半の詳説パートで出てくるのかも知れないけど。要は、開発チームと顧客が面と向き合って話し合い、要求に対してすぐ手を動かし、成果を見せること。そしてその後もすぐ手を動かせる、つまり機能追加を容易に行えるようなコーディングを心がける。といった捉え方でよろしいでしょうか?
オンラインストア開発パートでは、「彼女」と呼ばれる顧客が登場する。ようやく形になったアプリケーションに少し満足げな開発者たちに対し、彼女はそれを使う側としてはもっともな(?)要求をさらに突きつけてくる。しかし少し手を加えるだけで、またその要求に応える機能を実装でき、すぐに実際に動くものを見せられる。こういった流れが多い。
全くわかっていない僕からすると、そんなもんなのかなぁ?といったところ。
Ajax
基礎の方では全く触れられていなかったAjax。実はここに期待していた。本書では「今日日Ajaxも使えない男の人って…」というような前フリで、わずかながらRailsでのAjaxについて語られている。読んで分かったのは、既に実装が済んでいる部分に対し、少しずつAjaxを導入していくのが良いそうだ。読んでいても、確かにこれは少しずつ実装して確認していかないと、面倒なことになりそうと思った。
例えば、本書ではオンラインストアのショッピングカートの更新を、まず静的なアクションとして実装する。しかしその後Ajaxでカートの中身を動的に(フェードアウトなんかも駆使しちゃって)更新できるようにする。一見、先ほど作った静的なものが無駄になってしまったかと思った。しかしその部分も、少し手を加えるだけでJavascriptを無効にしているユーザに対するアクションとできる。もしこれが逆だったら、つまり最初からAjaxを用いたカートを実装し、その後Javascriptに対応していないブラウザに対しての例外処理を作るとしたら…。もちろんそれでもうまくいくだろう。だがもし何か問題が起きたら、Ajaxの部分もあるだけに、相当な気力のいるデバッグ作業となるだろう。
少しの機能を付け加えていく。とりあえず動くものを作っていく。これらが開発パートでは一貫されている。
レビューの通り、入門書として最適なのか
この本でRailsとRubyを一緒に学んじゃお☆という方にはお勧めできない。Rubyがわからないと読めない。コードを追っていけば、オンラインストアなるものは出来上がるが。
Railsを学ぶ本としては素晴らしいと思う。が、前述の基礎よりは取っつきにくいかなぁという印象。だって文字いっぱいだもん(開発パートが少し薄い)。もちろんそれはロジックを説明しているからなのだが、これがまた結構な読み応えがある。文系プログラマとかだと、基礎のように、コーディング主体で実際にアプリを作っていく本が良いと思う。それで疑問に思うことがあるなら本書を読んで学ぶ、と。それ以外の人にとっては良いと思います。
こんなもんでしょうか。僕としては詳説パートが楽しみで楽しみでならないのですよ。