[Book] 03 May 2007 はてなブックマーク - 「JavaからRubyへ」の3章までの感想について Twitterでつぶやく

「JavaからRubyへ」の3章までの感想について

java2ruby
遅ればせながら、角谷さんが翻訳をされた「JavaからRubyへ —マネージャのための実践移行ガイド」を入手しました。
全てを読み終わらないうちに、待ちきれずに書いてしまいます。今ちょうど第3章を読み終わったところですが、その内容は私を打ちのめすのに充分でした。

まずはRubyが如何にすばらしいのかという点よりも、私が愛してやまないJavaの見て見ぬふりをしていた点をズバリ指摘している部分に衝撃を受けました。


1,Javaは生産性が低いという事実
2,WEBアプリを作るに当たって最適解ではない事実
3,Javaの再利用性の幻想


これらについて私は以下のように感じました。
1について、これは認めたくない事実であり、事実と直感的に知りながら目をそらしていた事実です。実際、Javaにおいては厳密な型定義と規格の準拠に多くの時間が費やされます。
特にそれに伴うコンパイルと複雑なデプロイ、またはビルドツールの設定作業は、宗教めいた儀式と化して私のテックマン(*1)としてのプライドに安心と尊厳を与えてくれます。
その点を除けば、残念ながらこの崇高な時間は明らかに無駄であり開発プロセスから省かれるべき儀式です。
恥ずかしながら、私は周辺技術をマスターしそれを扱えることが、大事な仕事であると勘違いをしていました。

ある中国人エンジニアの言った「Javaは面倒くさいですよ。」という言葉が深く突き刺さります。私はそのとき単にそれを「技術が低いからでる言葉」であると切り捨てました。
しかし確かに、Springの設定も、WARのデプロイも、Mavenによるビルドも面倒であり本質的では無いことを認めます。


2については否定のしようもありません。むしろ、しばらく前から自分でも社内において下記のような(私的には)敗北宣言を出していました。
「少なくともWEBサイトの構築においてJavaはPHPより向いているとは口が裂けても言えません。個人的にはJavaでやりたいが、この案件は明らかにPHPでやるべきです。」

そして3,私は、時々インタフェース主義は全てを達観したスーパーエンジニアでなければ対応できないのではなかろうかと思うことがあります。つまり「精兵主義の軍隊に精兵がいなかった事(*2)」というわけです。
少なくとも私は今に至るまで、ミクロな規模を除いて有効な再利用がされているところを見たことがありません。
反論される人がいると思います。でもよく考えてみてください、インタフェースを修正したことはありませんか?絶対にあるはずです。
どんなにDAOとServiceを綺麗に分離してDIコンテナによりシンプルにしても、開発中WEB層からの呼び出し時にインタフェースの修正をしたことがあるはずです。(そもそもバイトコードインジェクションによるAOPという技術がそれを証明しています。)

ミクロな視点でのインタフェースの利用に文句はありませんが、これを業務ロジックに適用すると破綻をきたしているのに疑いはありません。なぜなら業務ロジックは生き物であり外的容認により変化し、また新たに発見されるからです。

本書でも繰り返し述べているように、Rubyが全ての最適解にはなり得ないでしょうが、少なくともこれまでJavaだけを見ていた私にとっては開発の本質を取り戻す良い機会になる事だけは間違いないです。

さて、続きを読まなければ・・・・ww
#上海までこの本を持ってきてくれたH君、ありがとう。

*1 アイザック・アシモフのファウンデーションシリーズにおいてホーバー・マロウが訪ねた銀河帝国の原子力発電のエンジニア、ホーバー・マロウは下記のように表現している。
「かれらはもはや自分たちの巨大技術すら理解できなくなっているんだぞ。」

*2 山本七平による「日本はなぜ敗れるのか」で引用されている小松真一による敗因21ヵ条の第一条より
「精兵主義の軍隊に精兵が居なかった事。然るに作戦その他で兵に要求される事は、全て精兵で無ければできない仕事ばかりだった。武器も与えずに。米国は物量に物言わせ、未訓練兵でもできる作戦をやってきた」


Comments

No comments yet

Add Comment

このアイテムは閲覧専用です。コメントの投稿、投票はできません。