Javaなら「この書き方がベスト」と信じて書ける - きしだなおきに聞く、Javaのこれまでとこれから
Javaは1995年に誕生し、数多くのコミュニティや企業の影響を色濃く受けてきました。では、黎明期から現代に至るまで、Javaはどのように進化し、生態系を変化させてきたのでしょうか。Javaのスペシャリストとして知られる、きしだなおきさんに聞きました。
1995年に誕生した、オブジェクト指向プログラミング言語・Java。この言語の歴史は、数多くのコミュニティや企業の影響を色濃く受けてきました。
例えば、OracleによるSun Microsystemsの買収後、Javaのリリースサイクルは大きく変化しました。また日本においては、JavaカンファレンスやSeasarプロジェクト、日本Javaユーザグループといったコミュニティの存在が、Javaの普及・発展に大きな影響を及ぼしたことは間違いないでしょう。
では、黎明期から現代に至るまで、Javaはどのように進化し、生態系を変化させてきたのでしょうか。Javaのスペシャリストとして知られるLINE Fukuoka株式会社のきしだなおき(
- Strutsの斬新さは、オープンソースであったこと
- 日本のOSSコミュニティに大きな影響を与えた、Seasarプロジェクト
- OracleによるSun買収は、何を変えたか?
- Javaならば「この書き方がベスト」と信じてコードを書ける
- きっとまた、Javaが一番フィットする分野が現れる
Strutsの斬新さは、オープンソースであったこと
―きしださんは、Javaのスペシャリストとして知られています。業務のなかで、Javaに触れるようになったのはいつ頃ですか?
きしだ 学生時代から趣味で触れてはいましたが、業務という意味では2001年からですね。もともと、友人がプログラミングを教えるアルバイトをしていたんですが、彼が就職を決めてアルバイトを辞めまして。代わりに僕がそこでJavaを教えることになったんです。
当時はまだ、見よう見まねで書いていて、詳細な言語仕様はよく分かっていませんでした。人に教えながら、テキストを書きながら、少しずつ仕様を覚えていき、同時に開発業務でもJavaを使うようになっていきました。

―それ以前にも、プログラミング言語には触れられていたのですか?
きしだ 学生時代から、いろいろなプログラミング言語に触れていました。小学5年生の頃にMSX-BASICを書くことからスタートして、Z80アセンブラをやって、C言語をやって……。学生時代にはアルバイトでC++やVisual Basicを書いて。2000年にフリーランスになってからは、最初の仕事としてPHPを書いています。
―いま名前が挙がった言語とJavaは、さまざまな面で違いがあったかと思います。Javaという言語に、どのような印象を抱きましたか?
きしだ まじめな言語だなあ、と感じましたね。例えば、C++は演算子オーバーロードがあるのでプログラマに自由度の高い書き方を許していますが、Javaではplusなどのメソッドを定義する必要があるし、Visual Basicだと言語仕様にわりと曖昧な部分がありますが、Javaは仕様がはっきり決まっている。それに、PHPやVisual Basicは型における緩さがあります。一方のJavaは、良くも悪くも動きがかっちり決められていますよね。記述が冗長になっても動きがはっきりするようになっている。
―2000年代の前半には、有名なJavaフレームワーク・ライブラリが数多く登場しています。例えばApache Struts(以下、Struts)がかなり有名ですが、なぜStrutsは当時、多くのユーザーの評価を得たのでしょうか?
きしだ Strutsが斬新だったのは、オープンソースのフレームワークだったということです。というのも、Strutsが登場するまでJavaのフレームワークは“有料”なのが当たり前でした。例えばJavaを用いたシステム構築を可能にしてくれるミドルウェア製品として、日立製作所が提供していたCosminexusがありますが、エンタープライズエディションを使用するには何十万円も支払う必要がありました。
―現代のように、「ライブラリ・フレームワークは無料で使えるのが当たり前」という時代ではなかったのですね。その状況下で、無料で使えて、かつ便利なフレームワークが登場したのは衝撃的だったと。
きしだ ただ、僕は個人的にそれほどStrutsが好きではなかったですけどね(笑)。XMLを山ほど書かなければいけないなど面倒な作業が多くて、使いにくかったんです。設計がナンセンスだと思っていました。だから僕は、Strutsの不便な部分を解消するために、独自に機能拡張したフレームワークを使っていました。
―どのような方法で機能拡張を行っていたのですか?
きしだ 2004年に、J2SE 5.0でアノテーションという文法が出たんですね。アノテーションを付与することで、Javaでメタプログラミングが容易になりました。当時の僕は「アノテーションを活用すれば、XMLをたくさん書かなくていいようにStrutsを拡張できる」と考えて、アノテーションを使い倒してStrutsをカスタマイズしていました。僕はこのフレームワークを“無設定Struts”と呼んでいました(笑)。
―無設定Strutsですか(笑)。
きしだ 実はこの独自フレームワークは、SeasarプロジェクトでメンテナンスされていたS2Strutsの元ネタになっているんです。というのも、Seasarファウンデーションのコミッターの1人である木村 聡さんが無設定Strutsを見つけてインスピレーションを得たことが、S2Strutsの誕生に繋がっているからです。
日本のOSSコミュニティに大きな影響を与えた、Seasarプロジェクト
―驚きました。S2Strutsの誕生にきしださんのコードが大きく影響していたとは。プログラミング言語やフレームワーク・ライブラリの設計や機能は、誰かが書いたコードの影響を受けて変わるものなのですね。
きしだ そうです。だからこそ、言語やフレームワーク・ライブラリが発展するうえで、コミュニティの存在は非常に大きいと思っています。例えば日本では、Javaの黎明期にJavaカンファレンスやJavaコンソーシアムなどのユーザーコミュニティが存在しました。その後、2000年代後半にSeasarプロジェクトや日本Javaユーザグループが発足しました。
これらのコミュニティは、日本におけるJavaの発展に大きく影響しています。特にSeasarプロジェクトの存在は、日本におけるオープンソースの歴史上、かなり大きな意味を持っているのではないかと思います。当時、気の利いたエンジニアの多くはJavaをやっていて、Seasarプロジェクトにも優秀な方々がたくさん参加していました。また、Seasarプロジェクトは他のコミュニティが主にユーザーのコミュニティであったのと比べると、自分たちでフレームワークを開発するというオープンソースの文化が色濃く出ていたんです。
だからこそ、Seasarプロジェクトに所属していた方々が醸成したオープンソースの文化が、後々に日本国内のさまざまなユーザーコミュニティにも伝わっていったように思います。もしもSeasarプロジェクトがなかったら、日本で「オープンソースにコミットする」という文化が生まれるのは何年か遅れていたと思います。日本人が多く開発にたずさわるRubyの流行を待たなければいけなかったかもしれませんね。

―日本におけるオープンソースコミュニティの源流が、その時期にできたのですね。SeasarといえばDI(Dependency Injection)とAOP(Aspect Oriented Programming)を実現するフレームワークですが、同様の概念を実現するものとしてSpring Framework(以下、Spring)も極めて有名ですよね。
きしだ Springの普及に関しては『Expert One-on-One J2EE Development without EJB』という書籍の影響が大きいです。この本はSpringの作者であるRod Johnsonの著作で、SpringとHibernateを用いてアプリケーションを開発しながら、Springの設計や機能について解説しています。この本が2004年に出版されたことをきっかけに、Springが一気に普及した印象があります。
書籍のタイトルである“without EJB”に現れていますが、「Springを用いることで、Enterprise JavaBeans(EJB)を使わなくてもアプリケーションが開発できる」というのが、当時は大きなウリでした。
EJBはIBMとSun Microsystemsによって提唱された仕様ですが、複雑な設定ファイルの記述が必要だったり、非常に大きなインターフェースを書かなければいけなかったりして使いづらかったんです。でも、Springが登場したことで「EJBを書かなくても、こういう設計でアプリケーションを作ることも可能なんだ」という驚きがありました。
OracleによるSun買収は、何を変えたか?
続きをお読みいただけます(無料)。

- すべての過去記事を読める
- 過去のウェビナー動画を
視聴できる - 企業やエージェントから
スカウトが届く