2人娘の父でもある

Javaの父、Java以外の開発言語を語る

2007/05/22

 Java言語を発明したジェームズ・ゴスリング氏は、サン・マイクロシステムズの副社長でフェローでもある。同氏は2007 JavaOneでeWEEKのシニアエディター、ダリル・K・タフトの取材に応え、Javaオープンソース化、Javaプラットフォームの新たな方向性とプログラミング全般、新しいサンの技術とマイクロソフトとの競争について語った。前編に続き、今回は、インタビューの後半をお届けする(関連記事)。

―― JVM(Java Virtual Machine)では、次に何が登場するのですか。JVMは基本的に32ビットであり、Java言語が中心です。JVMのアップグレードでは、サンは何をしなければならないのですか? 大幅な改良が必要なのでしょうか?

ゴスリング氏 改良に向けた計画はたくさんあります。32ビットだといわれましたが、実際にはずっと以前から32ビットと64ビットの両方に対応しています。大量のメモリを搭載したマシンもサポートしています。JVMのGC(ガベージコレクション)アルゴリズムでは、最大500Gバイトのメモリまで対応しています。現実には、500Gバイトのメモリを搭載したマシンを使っている人は多くありませんが、サンは以前からそういったマシンを提供してきました。

 われわれは現在、GCで2Tバイトまで対応するかどうかで悩んでいます。最適化に関しても、多くの作業を進めています。現在、インテルプロセッサで最大限のパフォーマンスを実現するために、特殊な問題に狙いを絞った最適化に向けた作業をインテルと共同で進めています。

 ほかの言語で特殊な問題に対応するという点について言えば、以前からJava VMを目標としている言語はたくさんあり、実際、このアプローチは広範な言語でうまくいっています。しかしそれが非常に難しい言語もあります。例えば、CやC++がそうです。そういったことをやろうとすると、大きなセキュリティホールができてしまうのが最大の理由です。それはCやC++が抱えている問題の一部です。これらの言語の裸のポインタが問題なのです。

C#は風変わりな言語

―― C#はどうですか?

ゴスリング氏 C#は風変わりな言語です。というのも、C#のコードには保護された部分とそうでない部分、管理された部分とそうでない部分があるからです。C#の管理コードは基本的に、Javaのマニュアルからカット&ペーストしたようなものです。しかしC#は、非管理コードを極めて多用しています。われわれは基本的に、裸のポインタを使用するC#の非管理コードというのは、愚かなアイデアだと考えています。しかし一部のスクリプティング言語にも、メソッド呼び出しに関して改善すべき問題があります。われわれは現在、PythonとRubyでメソッドのディスパッチを高速化するためにバイトコードを追加するプロジェクトを進めています。

―― マイクロソフトは最近、DLR(Dynamic Language Runtime)を発表するとともに、同社のCLR(Common Language Runtime)の移植性に関する発表も行いました。これにより、.NETは移植性という点でJavaに並ぶかもしれません。同社が実際にそれを実現しつつあると思いますか?

ゴスリング氏 CLRはほかのプラットフォームに移植されています。しかし重要なのはCLRではありません。ほかのプラットフォーム上でCLRを動作できるようにするというのは、技術的にそれほど大したことではありません。これは基本的にマーケティング戦略なのです。その理由は、開発者に見えるのは言語の一部であり、それが仮想マシンにマッピングされるということです。それを実行するのがJVMやCLRなのです。

 しかし言語のもう1つの要素として膨大なライブラリがあります。確かにマイクロソフトはCLRを移植すると発表しました。しかし、.NETの世界で利用する巨大なライブラリの1つはExcelです。Wordもそうです。では、彼らはWordをLinuxなどに移植するつもりなのでしょうか。そんな話は聞いたことがありません。

 つまり、Microsoft .NET APIのスタック全体のうちのどれだけの部分が、ほかのプラットフォームで利用できるようになるのかということです。それを考えれば、.NETアプリケーションのうちのどれだけの部分が、ほかのプラットフォーム上で実際に動作するようになるのか、だいたい見当がつきます。

―― 動的メソッドのディスパッチについて言及されましたが、これはマイクロソフトがDLRでやっていることと似ているのですか。彼らも、DLRでPythonやRubyなどの動的言語をサポートしようとしています。

ゴスリング氏 別々のランタイムが必要だとは思いません。というよりも、それはまずいアイデアです。人々は広範なプラットフォーム間での相互運用性を強く求めているからです。Java VM上で動作する素晴らしいRubyのインプリメンテーションがすでに存在します。現時点ではまだ完全なものではありませんが、JRubyからバイトコードに変換するコンパイラが存在するプラットフォームであれば、ネイティブのRubyよりもかなり高速に動作します。それに加えて、膨大なJava APIにアクセスできるようになります。ほかの各種のスクリプティング技術をJavaプラットフォーム上で使用するのであれば、JavaScriptとRhinoエンジンを組み合わせることができます。共通のVM上に置かれたバージョンを使用する場合は、RubyとJavaScriptを連携することができます。

 これらの言語の間で共通のVMがあれば、非常に強力な相乗効果を実現できるわけです。

―― サンの動的言語を使ってJavaFX Scriptのプログラミングができるというわけですね。

ゴスリング氏 JavaFX Scriptは面白いスクリプティング言語です。というのも、JVMを念頭に置いて設計されたからです。つまりJVM以外の支援メカニズムを必要としないのです。現在のインプリメンテーションはプレビューリリースの段階なので、この点に関してはまだ不完全な部分もありますが、開発中のコンパイラは素晴らしいパフォーマンスを実現するでしょう。ですが重要なのはパフォーマンスよりも、そのサイズです。

―― では、JavaFX ScriptはWebブラウザを通じて配布されるのですか?

ゴスリング氏 そうです。JavaFX Scriptはアプレットのようなものを生成します。

Rubyをサポートするために多大なエネルギーを投入

―― RubyとRuby on Railsは、「クールな」プログラマーにとってデフォルト言語になりつつある感がありますが、この人気をどんなふうにみていますか?

ゴスリング氏 わたし自身は、Ruby環境で動作するソフトウェアを書くことはめったにありません。ですから個人的には、少し不思議な感じがします。Rubyで輪郭検出アルゴリズムや画像を渦巻き化するアルゴリズムを作成するのは不可能です。しかしRubyには魅力的な部分がたくさんあり、われわれはRubyをサポートするために多大なエネルギーを投入してきました。アプリケーションサーバ関連でわれわれが進めてきた取り組みの1つが、GlassFishサーバであらゆる種類のコンテナをホストするというものです。GlassFishコンテナを使って配備した Ruby on Railsアプリケーションは、素晴らしいパフォーマンス、拡張性、管理性を実現しています。

―― DSL(Domain Specific Language:ドメイン固有言語)についてはどう考えていますか?

ゴスリング氏 DSLに対しては一種の愛憎的な気持ちを抱いています。アイスクリームを盗み食いするような後ろめたい楽しみとでもいえばよいのでしょうか。特定の分野にフォーカスしたプログラムを開発している人にとっては、その分野のドメイン固有言語があれば大いに助かるでしょう。わたしもDSLが大好きです。JavaFX Scriptもドメイン固有言語です。JavaFX Scriptはグラフィカルユーザーインターフェイスの作成には非常に役立ちますが、それ以外の用途ではそれほど役立つわけではありません。

 DSLは適切な用途で使用すれば素晴らしい成果が得られます。不適切な用途で使用すれば――例えばML言語を使ってグラフィカルユーザーインタフェイスを作成しようとすれば、非常に不幸な結果になるでしょう。

 巨大で複雑なシステムではプログラミングが難しくなります。ユーザーインターフェイスをプログラミングする分野があるかと思えば、Webフロントエンドの分野や高度な数式を駆使する分野もあり、また、AI(人工知能)に近い分野もあれば、リアルタイムデバイス制御に関連した分野もあるからです。 Javaの特徴の1つは、これらすべてのプログラミングを1つの言語フレームワークの中で行えるということです。Javaはこれらの分野のどれに対しても完璧にチューニングされていないかもしれませんが、そのすべてに対応できるという汎用性に極めて優れているのです。

 ドメイン固有言語は、特定の分野では素晴らしい威力を発揮しますが、複数の分野にまたがる必要がある場合には苦労することになります。

マルチスレッディング、人工知能に関心

―― 次に登場する大物は何だと思いますか? 次の大物として、どんな言語あるいはプログラミング環境が登場するのでしょうか? それが何であるかまだ分からないとしたら、どういった技術が求められていると思いますか?

ゴスリング氏 次の大物で求められる技術のスケールをどう見るかによります。新技術の開発は常に、何かほかのものにサービスを提供するのが目的です。ですから次の大物の開発は、Webの社会的進化あるいは技術の方向性における次の大きな波が引き金になります。 Javaの開発の引き金になった要因に注目すると、すべてネットワークに関連したものです。開発初期段階でのJavaのデザインに関する決定のほとんどは、スタンドアロンコンピューティングとネットワークコンピューティングとの違いに関するものでした。

 そういったレベルの変化を引き起こす次の大物は何かというのが、ご質問の意味だと思いますが、わたしの予想では、その候補は2つほどあります。わたしが全般的に関心を抱いているのは、マルチスレッディングの方向性です。ムーアの法則が言う指数関数的増大傾向は、CPUコアの数の方にシフトしてきました。Javaは優れたスレッディングモデルを備えており、トランザクション処理などにも問題なく対応することができます。コアの数は2年ごとに倍増しているように思えます。今日の最先端のデスクトップマシンは8コアCPUを搭載しています。20年後には、8000コアCPUを搭載したデスクトップマシンが出回っているかもしれません。そんなマシン用にプログラムを書ける人がいるでしょうか。

 わたしにとって特に興味深い問題の1つは、この転換がどんなふうに進み、どこへ向かうのかということです。

 わたしが関心のある分野の1つがAIの分野です。マシンが8000コアというレベルのパワーに到達すれば、多くのAI技術が実用的になるでしょう。

 デスクトップPCの処理能力が実際に人間の頭脳の能力を超えるのはいつかという問題に関する研究も行われており、その多くは2022年という予測を示しています。その世界では、プログラミングはどんなふうになるのでしょうか。また、人々とこれらのマシンの関係はどんな感じになるのでしょうか。

Eclipseで競争がスタートした

―― EclipseはJavaの世界のイノベーションを促進するのに貢献したと考えていますか?

ゴスリング氏 ええ、もちろんです。NetBeansの開発は、いわばのんびりと進められていました。そこにIBMがいきなりEclipseをリリースしたのです。「さあ、1つ競争をしようではないか」といった感じでした。

―― しかし単なる競争にとどまらず、彼らが立ち上げたプロジェクトの一部はJavaプラットフォームを大きく発展させました。

ゴスリング氏 確かにそうです。しかしこれは、軍事衝突ではなくスポーツ試合という意味での競争なのです。

―― 青少年、マイノリティ、女性がコンピュータサイエンスに携わる機会を拡大するためにサンは何かしていますか? 教育関連の構想はありますか?

ゴスリング氏 サンはある意味で、(カリフォルニア大学)バークレー校のヒッピー上がりのおじさん集団です。金もうけも否定しませんが、われわれは1つの理念を目指した集団なのです。一種、変わったタイプの企業だといえるでしょう。

 われわれは教育に力を入れています。BlueJ構想も支援しています。これは、青少年の教育に熱心な教育者らが進めている取り組みです。彼らが抱えている問題の1つは、どうすれば青少年にプログラミングを学ぶ意欲を持たせられるかということです。そこで彼らが編み出したのがGreenfootです。これはBlueJを拡張したもので、Javaを使って独自のビデオゲームを作成することができます。その反響は上々のようです。

女の子がコンピュータに興味を持つ魔法の薬

―― 娘がいらっしゃると聞きましたが、より多くの女性や女の子たちがコンピュータサイエンスに興味を持つようにするためのアドバイスはありますか? 魔法の薬はないのでしょうか?

ゴスリング氏 私には娘が2人いますが、残念ながら、そういった薬は知りません。私には、一般的なことはいえません。2つの個別ケースしか知らないからです。上の娘の場合、私が反面教師だったらしく、この分野で何かに挑戦してみることにさえ抵抗するようになりました。

 彼女に技術への興味を抱かせようと、私は大いに努力しました。技術に関連した本やオモチャをたくさん買い与えたのですが、彼女は全然興味を示しませんでした。しかし歴史の本は別でした。9歳のころにウィンストン・チャーチルの「英語国民の歴史」を読み、それとほぼ同じころに「我が闘争」も読んだのです。わたしはこういったものを読むのは苦手です。しかし彼女は先学期にプログラミングコースを選択し、面白かったと白状ました。

 しかし下の娘はまったく違います。彼女はLegoブロックでものを作るのが好きで、私たちは彼女が技術者になるのではないかと思っています。

 そんなわけで、私には女性や女の子に影響を与える方法は分かりません。彼女たちに本当に影響を与えることはできないと思います。われわれにできるのは、彼女たちにとっての社会的障害を取り除くことだけです。

―― OSGi(Open Services Gateway Initiative)の人気については、どう思いますか。Sunは当初、OSGiを支援していましたが、その後、手を引きましたね。

ゴスリング氏 OSGiが奇妙な特許囲い込み組織になってしまったためです。

原文へのリンク

(eWEEK Darryl K. Taft)

情報をお寄せください:



@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)