Ruby on Railsの勉強をはじめました

Webアプリケーションフレームワークの研究の一環として最近、Ruby on Railsの勉強をはじめました。「Agile Web Development with Rails」という洋書で勉強しています。結構良い感じです。おすすめです。

この本は、前半でショッピングカートアプリをチュートリアル形式で解説していて、後半はRailsの詳細が説明されています。今は前半のショッピングカートアプリの所の説明を読んでいるのですが、かなり話の展開が早い感じがします。つまり、アジャイルなんです。でも説明が適当っていうことはありません。納得させられながら読み進められます。Scaffoldなんかをうまく利用して、顧客と一緒に、アジャイルに、楽しく開発して行こうよ、という雰囲気が読んでいて伝わってきます。

最近の私の興味は、Webアプリケーションにおける「リアルなテスト」。アジャイルな開発体制で開発をしていて、頻繁にアプリを改良していく中で、ある時「テスト、ちゃんとやっていて良かったな」って思えるようなテストを実践できるようになりたいんです。どいうことかと言うと、しょっちゅう改良していると、本人はそのつもりは無くても、ある機能の実装を新規追加・変更した時、他のある機能が壊れてしまうことがあります。そんな時に、できるだけ早くその機能が壊れてしまったことをテストで知ることができれば、開発者、ステークホルダーにとって時間、信頼、労力などのリスクを小さくできます。今までシステム開発を通してそういったことを何度も経験してきたので、なんとかしたいんです。

私のsurvey不足かもしれませんが、私が求めている「本物のテスト」について書かれた書籍は、今まで全然出会った事がありません。例えば、最近購入したWeb+DB PressでSimple Testを利用したテストの記事が載っていましたが、読むとがっかりしました。期待はずれでした。テスト専門の雑誌も前に読みましたが、何か私の求めているものと違っていました。唯一私が「これがテストかっ!」とインスパイアされたのは、SixApartの宮川さんがWebDB+Pressで昔に書かれた「Test!Test!Test!」という記事です。おすすめです。

しかし朗報です。この「Agile Web Development with Rails」には、ちょっと期待できそうです。例のショッピングカートアプリのチュートリアルの最後の仕上げとして「テスト」が取り上げられています。まだきちんと読んでいませんが、MVCフレームワークにおけるModelとControllerのテストが解説されているようで、私の知りたかった所が勉強できそうです。「本物」とは言えないかもしれませんが、かなり近いのでは?と予想しています。

最後に「Ajaxとテスト」について思っていることを少しだけ。Ajaxが注目されるようになり、AjaxなWebアプリケーションが今後もどんどん増えていくと誰もが予想していると思います。でもその一方でAjaxが「テスト」をますます困難にする要因になるのでは?と心配しています。テストが困難になると、それだけシステムがfragileになってしまいます。Ajaxベースのアプリケーションのテストの方法論はまだ確立されていないので、なんとかしたいですね。でもAjaxの世界で「リアルなテスト」をしようとすると途端に難易度が高くなるような気がしています。(Google Mapsはまた次元が違うかもしれませんが、外部サービス連携で動作するAjaxアプリのテストなんか、一体どうやって意味のあるテストをすれば良いのか全然わかりません(汗)。良い案とか無いですかねぇ?)

Agile Web Development With Rails: A Pragmatic Guide (The Facets Of Ruby Series)

Agile Web Development With Rails: A Pragmatic Guide (The Facets Of Ruby Series)

P.S.

これからもCatalystはウオッチし続けたいと思っています。Catalystも解説本出してほしいな。