小飼弾のアルファギークに逢いたい♥

#4 The Seasar Project チーフコミッタ ひがやすを(中編) JSRで成功しているのはごく一部

この記事を読むのに必要な時間:およそ 2 分

The Seasar Project チーフコミッタひがやすをさんとの対談の中編です。

編集部注)
本対談は2006年11月に行われたものです。

Java談義

弾:Javaがオープンソースになったのって,つい先日ですよね。Javaが最初に出たのって95年? そんなもんでしたよね。失われた10年だったりして。Javaそのものがオープンソースでなくて悔しい思いをしたとかは?

撮影:編集部

画像

ひが:VM(Virtual Machine)などの部分は,そんなにソースコードとか読みたいと思っていたところじゃなかったので。

弾:私の場合,Javaで一番いやだったのはClosure注1が使えないことだったんです。Javaって,簡単なところは簡単にっていうところはよかったんですよ。Javaが出た初期に,Dukeが踊ってるところ見て,すげえ,っていうのがあったんですが,実際に使ってみると,CやC++では当たり前だったテクニックがとたんに使えなくなるわけです。たとえば関数ポインタ注2ってないじゃないですか。あぁソートどうするんだー! みたいな。

ひが:Javaでは,ソートとかはライブラリとかAPIが用意されているので,それを使えば別にコーディングする必要はないんです。

弾:でも使うとき,わざわざcompareのためのメソッドこさえてというのが面倒で。Closureぽんと渡しておしまいにできない。

ひが:Closureに相当するようなところを,インタフェースを用意しておいて,それをインプリしたインタフェースを渡すというようなまどろっこいことは必要ですね。

弾:あと,Javaってマクロ注3を否定してるじゃないですか。確かに,Cを使っているとマクロが嫌になることもあると思うんですよ。でもあれのおかげで,ぐしゃぐしゃしてたコードが一発でえいやってこともけっこうあるんですよね。

ひが:私の考えでは,そのへんはコードをたくさん書く人にとっては,重要な意味があると思ってるんですけど,一般の開発者ということでいうと,そんなに使わないのかな?という気もするんですよ。最近JavaはCOBOL化していると言われることも一部あるみたいなんですけど。実際COBOLみたいに,だんだん,一般の開発者が書くところはそういう雰囲気になっていて,そんなに難しいこともやらないし,言われたとおりにやるみたいなところがあるんじゃないかなと。

弾:それはすごく残念なことだと私は思うんですよね。というのも,永遠の初心者っていないと思うんですよ。Matzさん注4もよく言ってることですけれど。この辺はよくできるようになったから,次に難しいことをエレガントに簡単に書きたいっていうときに,そこへの手段がロックされていると,それを無理やりにでもやってしまおう,っていう動きが出てくると思うんですよね。

ひが:Javaの世界だと,難しいことがあると,それをどこかのフレームワークにお願い,みたいなそういうノリで,自分で書くっていうのがそんなになくなってきているんじゃないかという気がするんですよね。

弾:ただ,それはほんとに簡単なのかっていう疑問はあると思うんですね。たとえば確かにIDEを使っていればクラス名を一発で全部直してくれるじゃないですか,あれはあれでかっこいいんですけれども,裏を返せば,JavaのDRY注5でないところをIDEが始末していると。

ひが:そうですね。

弾:何でJavaって重たく感じるかっていうと,Javaをまともに使うために用意しなければいけない環境が大きいんですよね。50行もあれば書けるもののために,何でEclipseを立ち上げなければならないんだ,とときどき思います。

ひが:そういう意味では,Eclipseさえ入っていればあとはデフォルトでインストールできますよ。URLをぽーんと指定するだけで。

撮影:編集部

画像

弾:なんでもかんでもEclipseになってしまうし,結構,Javaの好き嫌いってIDEの好き嫌いっていうところもあると思うんですよ。viだけで楽しくJavaとつきあうわけにいきませんかね,vi作った人がCTOやってた会社注6の言語ですし(笑)。

ひが:そういう意味では,Javaは,単にテキストのエディタだけではもう楽しめない言語なのかなという気がしますね。Javaの世界にいると,IDEがないと生産性が出ないですよね。私はJavaに移ってからは,Javaの開発はIDEでやるというので決めてます。

Javaの仕様への要望

弾:これでめでたく,Javaもオープンソースになったんですけど,ひがさんから,こういう仕様があったらありがたい,みたいな要望はどう報告してます? あるいはどう反映されてます?

ひが:JavaってJava Community Process(JCP)っていうところで仕様を話していて,それがJSRっていう仕様になって,それがインプリされていくというのがこの数年の流れなんですけど,最近,ある記事を書くときに,JSRってどんなのがあったかな,と思って調べてみると,規格倒れになったものが多いんですよね。成功しているのはごく一部で,それもほかで成功してるAPIをそのままJavaに持ってきましたというものばかりで。そういう意味で最近思っているのは,みんなが会議をしながら仕様を作っていくっていうのは限界があるというか,玉虫色になりがちなのかなって思っていて。

弾:コミュニティがデザインしたみたいなのは,たいていイケてないですよね。委員会方式でやると。もうUnicodeとかUnicodeとかUnicodeとか…(笑)。

ひが:そういうのを見ていると,委員会方式よりは,まずは自分で作って世の中に出しちゃって,それが広く受け入れられれば,これが良いねという感じでJavaにとりこまれるという方向で動いたほうが楽しいんじゃないかって,思っています。

注1)
データと関数をひとまとめにしてカプセル化したもの。Closureが生成された個所のローカル変数を参照することができる。
注2)
関数型を参照するポインタで,関数のアドレスを値として持つ。
注3)
プログラム中の文字列を別の文字列に置き換えることができる機能。
注4)
Rubyの生みの親,まつもと ゆきひろ氏のこと。
注5)
Don't Repeat Yourselfの略語。
注6)
BSDの開発に携わり,Sun Microsystemsの共同設立者として知られるBill Joy。

著者プロフィール

小飼弾(こがいだん)

ブロガー/オープンソースプログラマー/投資家などなど。ディーエイエヌ(有)代表取締役。1999~2001年(株)オン・ザ・エッヂ(現(株)ライブドア)取締役最高技術責任者(CTO)。プログラミング言語Perlでは,標準添付最大のモジュールEncodeのメンテナンス担当。著書に『アルファギークに逢ってきた』(2008年5月,技術評論社)。ブログは『404 Blog Not Found』

URLhttp://blog.livedoor.jp/dankogai/

コメント

コメントの記入