作りながら学ぶRuby入門

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

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

作りながら学ぶ Ruby入門

作りながら学ぶ Ruby入門

Ruby on Rails 3 アプリケーションプログラミング」と「作りながら学ぶRuby入門」はどちらも実用性のあるサンプルがでているいい本だ。
例えば在庫管理システムをWEBアプリとして開発して、ローカルのLANセグメントで運用できる実演を
してみせる必要性をちょっと感じている人がいたとする。
それが大して時間もコストもかからずにほとんどタダでできることを証明したいという目的意識があったとする。
しかしWEBアプリ開発は、例えばJSP/ServletStrutsみたいなフレームワークを使ってAPサーバにtomcatWebLogic、DBにOracle
使うみたいなことになると、恐ろしくややこしいことになってしまう上にOracleWebLogicはコストが高く、
開発環境を作るだけでもある程度時間がかかる。
そしてJavaはセッション管理が難しく、Strutsなどのフレームワークカプセル化しても本質的には
複雑性は残ってしまう。一番楽にやれそうなのはPHPだけれど、コードの可読性が非常に悪いように見えるだろう。
なるべく余分な手続き的なコードが省略できて、なおかつテキストに役に立ちそうなサンプルコードがでている本
となると、上の二冊の本でRubyを試してみるかというのが、選択肢に入る。
だが片方はRuby on Railsでのサンプルがでているが、解説がほとんどない。
もう一方はフレームワークなしでフリーのDB、フリーのWEBサーバで構築するサンプルがでている。
そしてこちらは図書管理システムというひとつのテーマで、それを原始的なレベルからWEBシステムへと徐々にビルドアップ
していく解説スタイルをとっている。
そういう意味で、「作りながら学ぶRuby入門」がかなり実用的だと思った。
作りたいものがはっきりしていたとしても、普通のRubyの本を買ってわかるのは言語仕様である。
というかプログラミング言語の本というのは基本的には言語仕様の解説書である。どのデータ型がどういう範囲の
データを扱えてどのように宣言して使うか、どういう条件分岐構文があり、どう使えばいいか、
どうやってクラスなどのデータ構造を作ればいいのか、クラスを配列のようにつかいたいときにコレクションは
何を宣言すれば使えるようになり、どういう制約があるか、みたいなことを説明している本がほとんどである。
ほかの言語での経験があり、その経験に置き換えて理解できる経験者はともかく、
そうでない人は言語仕様を理解しただけではおそらく何かを作ることはそれだけではできない。
じゃあ何ができるようになるかというと、コードが読めるようになるというだけだ。
結局プログラミングをしたければ、作りたいものに近い、動くコードを読んで勉強するしかないのが、今までの現実だっただろう。
しかしそれを問題意識として表記する本はいくらでもあっても、解決できる学習スタイルを明言している本はあんまりない。
作りながら学ぶRuby入門という本はついに現れた斬新な例外だ。言語仕様については巻末のリファレンスを
参照する形で、とにかくまずはショボいテキストベースのところから初めて、とにかく図書管理システム
を小さいものから徐々に改造しながら最終的にWEBシステムとして改良して動かすまでを説明し、
その中で実際の活きたコードの中でそれぞれの構文を説明している。
まずはプログラミングやRubyということについてのざっくりした説明からはいり、Rubyのインストールのような
ところから説明したあと、テキスト処理で蔵書管理システムを作りながら
そこで必要になる文字列や数字、クラスやコレクションのRubyでの扱い方について必要になっていく段階で説明していくので何のための
仕様なのかが非常に頭に入ってきやすい。単純なものから徐々に高度なシステムに作りこみながら、
それにあわせて単純なものから次第に高度な機能が説明されていく形なのだ。
基本的な言語仕様への理解がひとそろえ整ったら、
今度は蔵書管理のテキストデータをCSVやPStoreなどに出力させる方法を説明しながらファイルへのI/Oが説明される。
そして今度はRuby/DBIを使ってSQLite3のデータベースに出力させるように改良しながらRubyでの
データベースとのやり取りの仕方を説明する。そしてWEBrickをつかったWEBの生成方法を説明したあと、
テキストベースだった蔵書管理システムをERBでHTMLを生成するWEBシステムに変えてWEBからSQLite3の蔵書データを
表示、登録、検索、修正、削除するように改良する方法へと説明が進化していくわけだ。
ちゃんと最後には実用的なものを生み出し、実用的なものを生み出すために必要な知識がそろうような形になっている。
開発プロセスでいうなら小さな完成品からスタートして徐々に作りこみながらそのつど段階的に試運転しつつ
目的とする最終形を目指すインクリメンタルプロセスモデルということになるだろうし、
そのつど機能が完成して動く状態までいくので、読者も動作を確認しながら学んでいけるという意味では
学習者にとって仕様とその仕様がその場で役に立つ姿を確認しながら
学べる、目的指向な学習ができるいい本だと思った。


参考:
「作りたいものがあるからプログラミングを学ぶ」という言説
http://d.hatena.ne.jp/tt_clown/20110826/programming_study