JAMBOREEの準備中に読む予定だったのですが、あいにく台風で中止になってしまったので、この連休中に一気に読みきりました。RailsやRubyベースのアプリケーションへどのように移行するのがベターか?を展開していくものです。Railsには非常に注目をしていましたし、今も注目を続けています。Smartyのもので実装をしようと進めているところです。そんな中なので、「いつ」Railsベースのものに切り換えていくかは、十分に検討する必要があり、その検討材料を集める必要がありました。Rubyの学習は全く進んでいないので、「Rubyでできること、できないこと、得意なこと、不得意なこと」を明確に理解しておくことは重要なことです。そんな背景において、本書は非常に有意義なものでした。JavaとRubyタイトルが「JavaからRubyへ」とあるくらいなので、Javaを軽んじ、Rubyを崇める内容なのかと最初は思っていたのですが、実際はかなり中立的な視点であると感じられました。JavaとRubyとの住み分けは適材適所であることを明記していますし、その移行についてもリスク、パイロットの実装、既存アプリケーションへのブリッジなど、幅広い視点を持っています。そもそも、本書の根底にあるスタンスは非常に明確で、「生産性を高めることこそが重要である」ということを冒頭で述べています。その理由は次のように述べられています。生産性は高くなれば、機能やパフォーマンス、品質の改善といったビジネス要求への取り組みに時間が割けます。(・・・中略・・・)つまり、正しい道を通り抜けることがゴールなのではありません。-正しい道を、すばやく通り抜けることがゴールなのです。イテレーションを活用して反復的に改善するのです。各イテレーションを早く回せば、より早く改善できます、たいていのアプリケーションでは、ユーザの要求を事前に見越すよりも、少しでも早くユーザに実際のソフトウェアを使ってもらったほうが良い結果を残せます。ユーザからのフィードバックとビジネス要求に基づいて、パフォーマンス最適化や機能の改善などに開発リソースを割り当てます。生産性がそんなにも重要なのか?」より抜粋)要するに、サクサクとモノを作れる環境・道具こそが重要であり、トライアンドエラーを何度も繰り返すことを可能とすることで、トータル的に品質を高めることができる、という考えです。Railsはそれ自身でできることはJavaやC、C++と比較すると限られてあり、またある程度の制約がつくものの、上記のイテレーションサイクルを格段に早く回すことが可能になる、と述べています。Struts...などJavaの乱立し続けるフレームワークでは、まずフレームワークの選定に時間がかかり、その設定やJava自身の静的型付けの文法であることなどと総合的に判断すると、イテレーションサイクルを早く回すことは難しい、ということです。本書はこの想定のもとで話が進められます。言い換えると、イテレーションサイクルを早く回すことを必要としないプロジェクト、例えばミッションクリティカルなアプリケーションや、大規模なアプリケーション、大量のコネクションを捌く必要があるアプリケーションなどは、Rubyベースのものへ移行をすることはかならずしも賢明ではない、というスタンスを明確にし、中立的な立場を保っています。この「イテレーションサイクルを早く回す」ことを基点とする考えは、個人的には目から鱗でした。Railsはたしかに素早くRDBと統合したWebアプリケーションを実装することをウリにしているように感じていましたが、その機能ではなく、「開発サイクルを早く回すことこそ、トータル的に優れた品質のものを生み出す、そのためにRubyでありRailsでなければいけないのだ」というロジックは非常に明確で分かりやすく、納得できるものだったのです。本書ではRubyのコードはほとんどでてきません。全ページで出てくるコードを合わせても1ページに満たないかもしれません。それだからこそ、早くRubyに触れたい、Railsを身に付けたい、と思わせる一冊です。唯一、難点を挙げるとすれば、PHPとの比較は予想を超えてほとんど触れられていない点です。Webアプリケーションの代表的な言語と言えるはずのPHPをもう少し挙げて、Rubyとの比較があればさらに納得できる点があったかと思えます。それでも十分に満足できる良書と言えると思います。IT系の経営者、マネージャ、開発者、全ての人におすすめの一冊です。