このBlogは移転しました。今後は aish.dev を御覧ください。

James Gosling Interview about Java

2011年1月1日に、IEEEの "Computer"マガジンは James Gosling にインタビューを行った。インタビュアーは、Gosling が作った言語(訳注:もちろんJavaのこと)を用いてのオブジェクト指向デザインに関して、この21年間を回顧するインタビューが取れるものと思っていた。しかし、インタビューが進むに連れ、もともと取材しようとしてたものよりも衝撃的な記事を得ることになった。その後、業界への衝撃が強すぎるとして、 編集者はその取材記事をボツにしたが、 こういうものには情報のリークが付き物である。
以下、インタビューの生の記録をお届けする。編集を行っておらず、またぶっつけ本番であるため、原稿のあるインタビューのようにはきちんとしていないが、きっと読者は興味を感じてくれるものと思う…
尚、このインタビューの背景を正しく理解するために、同じインタビュアーによる Bjarne Stroustrup Interview about C++ を読んでおく必要がある。このインタビュアーは、Gosling との会見直後に退職した。現在では、シカゴのホットドッグ屋台で生計を立てている。

インタビュアー
あなたがソフトウェア設計の世界を変革してから何年か経ったわけですが、過去を振り返ってどのように感じますか?
Gosling
ちょうどあなたが来る前に、そのことを考えていたところです。 憶えてますか? 誰もが C++ プログラムを書いていました。問題は、皆それが非常に得意だったことです。 大学でも、C++ を教えるのが非常にうまかった。 彼らは有能だということが分かりつつあった − 私は「有能」ということを強調しますが − そして、驚くべき人数が卒業していたんです。 それが、問題を引き起こした原因です。
インタビュアー
問題?
Gosling
そう、問題です。誰もが C を書いていた頃を憶えていますか?
インタビュアー
もちろんです。私もそうでした。
Gosling
はじめの頃は、彼らはまるで神でした。 彼らの給料は高かったし、まるで王族のように扱われていました。
インタビュアー
いい時代でしたねぇ。
Gosling
その通り。そして、何が起きました? IBMは嫌気がさして、プログラマのトレーニングのために何億円も投資しました。 彼らが1ダースで10セント(訳注:珍しくもない、ありふれた、の意)になってしまうまで。
インタビュアー
だから私も辞めたんです。 一年もしないうちに給料が下がっていき、ジャーナリストの方が稼げるようになってしまいました。
Gosling
まさしくその通りです。 そして、同じことが C++ プログラマにも起きたんです。
インタビュアー
ちょっと待ってください。私は以前 Bjarne Stroustrup のインタビューで似たような話を
Gosling
ああ、あのインタビュアーはあなただったんですね。話を続けましょう。
インタビュアー
いやあの、ちょっと待っ
Gosling
ある日私は、オフィスに座って、ある小さな企みについて考えていました。 このバランスをちょっと修正できるような。 「それほど複雑ではなく習得は簡単だが、実際にシステムを構築するのは難しい言語があったとしたら、どうだろう。」と私は考えました。 実際のところは、CDE、Motifからアイディアをいただいたんですが。 あれは特定の商用Unixでしか動かない、ひどいグラフィクスシステムでした。 私の欲しかった素材は、すべて CDE が持っていました。中途半端なマルチプラットフォーム、見せかけのオープン性、ばかばかしい企業論理。 今では、誰も CDE のコードは書きません。 正気を保っていたいなら、Gnome が唯一の選択肢です。
インタビュアー
この先は聞きたくありません。
Gosling
まあまあ。他の問題もありました。 Unix は C で書かれていて、どの C プログラマもごく簡単にシステムプログラマになれました。 メインフレームシステムプログラマが、どれくらい稼いでいたか憶えていますか?
インタビュアー
憶えていますが答えたくありません。
Gosling
OK、ですから新しい言語は Unix から離れる必要があったのです。 この2つを非常にうまく結合していたシステムコールを、すべて隠蔽することによって。 このことで、Windows しか知らないプログラマでも、裕福な生活が得られるようになります。
インタビュアー
くそ、やっぱりそう来るのか…
Gosling
もうずいぶんと時間が経ちました。 多くの人が、Java は時間の無駄であると悟ったと思います。 私が想像したよりも長くかかりましたが。
インタビュアー
正確にはどのように行ったのですか?
Gosling
あれは単なるジョークの筈だったんです。 人々があの本を真剣に受け取るとは思っても見ませんでした。 脳みそを半分でも持っている人なら、デザインパターンプログラミングは非直感的で、不合理で、効率が悪いということを見て取れます。
インタビュアー
今なんと?
Gosling
そして、再利用可能コードに関しては、実際にコードを再利用している会社のことを聞いたことがありますか?
インタビュアー
ええ実際には… しかし…
Gosling
そういうことです。 念のため、早い時期にはいくつかの会社がやろうとしました。 シリコンバレーの会社 − ネットスケープと呼ばれていたと思いますが − は、'96年か'97年に、全てを Java で書き直そうという病気にかかってしまいました。 彼らについては非常に申し訳なく思いますが、しかし人々は彼らの例から学ぶだろうと思ったのです。
インタビュアー
明らかに学ばなかったと?
Gosling
全く、です。 問題は、たいていの会社は大きな失敗を隠そうとしたことです。 株主に30億円の損失を説明するのは大変だったでしょう。
インタビュアー
しかし、Java は基本的には健全な言語です。
Gosling
あなたは本当にそれを信じているのですね。 あなたはこれまでに、Java のプロジェクトで働いたことはありますか?

つまりこういうことです。

最初に私は、小さなプロジェクトだけが動くような落とし穴を充分こしらえました。 チェック例外を例に取りましょう。 プロジェクトの終わりには、殆どのモジュールが使っているでしょう。 人々はたいてい、チェック例外を使うべきだと感じてるからです。 彼らが受けたトレーニングコースの例のようにね。 モジュールが100やそこらあるときに、全てを一つにまとめられますか。 あちこちの会社で、人々が彼らのモジュールをお互いにコミュニケートさせるときの問題を聞くと、私は笑いをこらえることができません。「シナジェスティック」という言葉は、プロジェクトマネージャのあばら骨に刺さったナイフをひねるために特別に生まれた言葉です。
インタビュアー
しかし、絶対に、インターフェースは時間の節約になるでしょう?
Gosling
そうでしょうか。 C++プロジェクトの設計と、Javaプロジェクトの設計の違いに気付いたことはありませんか。 Javaプロジェクトの設計段階にかかる時間は、3倍です。 インターフェースにすべきもの、すべきでないものを正確に決めるためです。 それでも、判断を間違えます。
C++プログラムがメモリリークを起こしたと聞いた人がいますか? メモリリークを見つけるのは、いまや大事業です。 たいていの会社はあきらめてしまい、ふるいのようにリークを起こすことを知っていながら、問題を追跡する費用をかけないのです。
インタビュアー
あなたは成功したのでしょうか?
Gosling
ある程度は。プログラマの給料は大きく上昇しました。しかし、数年後にはすっかり陳腐化してしまい、前よりも低くなってしまいました。私は非常に複雑で習得がほとんど不可能なほどに巨大な J2EE を投入して給料を維持しようとしたのですが、複雑すぎてごく一部にしか受け入れられませんでした。時々、私のやり方は間違っていて、友人の Larry が正しかったのではないかと考えてしまいます。
インタビュアー
Larry?
Gosling
Larry Wall です。Perl 開発者の。彼はシステムの開発を困難にするのではなく、コードの属人性を高めることによって、雇用を長期間維持する方が重要だと考えていました。
インタビュアー
あいつもか…
Gosling
平均的なC++プロジェクトの長さを憶えていますか? 大体1年から2年です。 妻子のあるプログラマが余裕のある生活を手に入れるには、短すぎます。 同じプロジェクトをJavaでデザインしたらどうでしょう。 いいですか。3年から4年です。 素晴らしいじゃありませんか。 この仕事の安定性は、一つの判断の間違いから来るのです。
他にもあります。 大学では、C++ を昔ほど長い時間教えませんから、今ではきちんとしたC++プログラマが不足しているのです。 特に、Unixシステムプログラミングに関して何かを知っているプログラマが、です。 ガベージコレクタに長年慣れてしまった後、− 変数のスコープに煩わされることを忘れて − `delete'をどう扱えばいいか知っているのは何人いるでしょうか。 実際、たいていの Java プログラマは、メモリ管理というものを捨ててしまいました。 古きよき `デストラクタ' に何が起こったのでしょう。 少なくとも、-XX:+PrintGCDetailsの泥沼の中を捜しまわる必要なく、メモリが解放されたことが分かったはずです。
インタビュアー
もし私がこのインタビューを出版すれば、あなたはきっとリンチされるでしょう。分かっていますか。
Gosling
そういうことにはならないでしょう。 前にも言いましたが、Javaはもうピークの時期を過ぎました。 まともな神経の会社なら、いきなりJavaプロジェクトをスタートさせたりはしないでしょう。 まず試験的な試行をするはずです。 この試行で、障害が多数待ち受けているということを納得する筈です。 そうでなければ、彼らはしっぺがえしを食らうでしょう。
インタビュアー
ええと、ここでは普通私は「ありがとうございました」と言うんですが、今日はその言葉が適当だとはとても思えません。
Gosling
これが雑誌に載ると約束してください。 このごろでは、私の良心がうずくんですよ。
インタビュアー
後でお知らせしますが、編集者がなんというか想像できますよ。
Gosling
誰かがこれを信じるとでもいうの? いずれにしても、テープのコピーは送ってもらえますよね。
インタビュアー
それなら出来ます。
Gosling
Stroustrupにはちゃんとテープ送ったんですか?
インタビュアー
送りましたよ。