なぜ僕はJavaにこだわるのでしょうか。
Javaが良い言語である、というのはその答えではありません(むしろ嫌いな人の方が多いかもしれませんw)。それは、ほんの一面でしかないでしょう。
言語が良くて、開発者が満たされて、バザールが形成されるだけではエンタープライズ・アプリケーションは開発できません。LISPやRubyがそうであるように(これは批判でもなんでもなく。Ruby、好きですし)。
Javaが普及したのはなぜか
エンタープライズ・アプリケーションとは億単位のお金が動くところです。Javaが普及した理由は言語仕様のおかげ(だけ)ではない、というのは誰もが知るところでしょう。儲ける構図でも書いたとおり、
では、Javaの儲けの構図とはなにか。それは、Javaの仕様に従うことで、1から10まで一通りの利益構造を自社内に揃えることが可能な点だ。サーバ、SI、ミドルウェア、OSのすべてを自分で揃えられれば、利益構造は、かなり自由になる。だから、Javaに対して、大手ベンダーはコミットをすることができるのだ。スクリプト言語が、いかに優れていようと、こうした儲けの構図がはっきりしない限り、大手ベンダーは手を出さない。だから、Javaは、企業システムで使われるのである。
こう言い換えてもいいでしょう。Javaが普及した理由はテクノロジーではなく、経済なのです。Javaというテクノロジーはそのための手段に過ぎません。
Javaを取りまく環境
一方でJavaはテクノロジー面で面白さを維持できています。それはコミュニティの存在であり、ベンダーが直面しているジレンマです。
特にUSで強い傾向ですが、Javaカンファレンスでベンダーが製品名を連呼と開発者からブーイングが起きます。それが分かっているからJavaOneでのIBMはエリック・ガンマ氏を呼んでEclipseの開発サイクルを話させるわけです(ORACLEだって最近は色々やっているのだから話せばいいのにと思ってしまいます。そういう意味でORACLE佐藤さんのブログは地味ですが重要な活動)。
一方、コミュニティの象徴であるオープンソースを支えているのはベンダー企業の寄付です。ASFのほとんどのプロジェクトにはベンダーの社員が仕事(day work)として関わっているでしょう。そして半分ぐらいのプロジェクトは企業の研究部門からコントリビュートされたものです。
Javaに関わる企業にとって悩ましいのは、民主化するイノベーションの力を、いかに自社の利益に結びつけるのかということです(一方、MS圏では…というのも面白い考察)。
テクノロジーと経済
テクノロジー・マネージメントとは経済活動です。イノベーションとは経済活動です。お金があるから人が動きます。
Javaにおいて僕らが取り組むべきことはテクノロジーと経済の両面でしょう。
人月や派遣やオフショアの問題を解決するのはテクノロジーではなく経済です。テクノロジーは手段に過ぎません。人月をなくすためには営利目的企業の経済合理性が証明されなくてはいけません。テクノロジーの進歩で売上や利益が減ってうれしいSIerがいるでしょうか?
そんなわけで、前回は
頭を下げて、次世代に教えを請うのです。
と書きましたが、こういう泥臭い経済話がわかっているおじさま達(失礼!)にも、頭を下げて教えを請う必要があると思うわけです。
