BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Rod Johnson氏へのSpringプロジェクトに関するインタビュー

Rod Johnson氏へのSpringプロジェクトに関するインタビュー

QCon Tokyo 2009のために来日したRod Johnson氏に、チェンジビジョンの近藤氏が、ご自身の事やSpringプロジェクトについてインタビューしました。

Rod Johnson(以降、Rod氏):SpringSourceのCEOであり、実践J2EEシステムデザインの著者。実践J2EEシステムデザインの中で当時のJ2EE,特にEJBの仕様に辟易し、同等の機能を如何にシンプルに実現するか、を語り、そこで記述していたソースコードを元に、Spring Frameworkとして公開した。QCon 2009 Tokyoの2日目の基調講演をした。
近藤寛喜(以降、近藤氏):チェンジビジョンにてソフトウェア開発に従事している開発者。Spring Frameworkに触れたのは、最初から仕事として。その後、書店でJ2EEについて勉強のため、たまたま手に取ったのが「実践J2EEシステムデザイン」と言う本だった。Spring Frameworkのコードに感動し、そこからソースコードの読み方を学ぶ。QCon TokyoにRod Johnson氏がやってくると聞いて、楽しみにしていた。Planet Eclipseに所属し、時々Eclipse Plug-inの開発勉強会を開催している。

近藤氏: 私はSpringFrameworkからソースコードの読み方を、そして実践J2EEシステムデザインを読んで(と言いつつ、持参した本をRod氏に渡す)J2EEを学びました。SpringFrameworkはソースコードがとても綺麗ですね。昨日まつもとゆきひろ氏がビューティフルコードについて話をされていましたが、SpringFrameworkのコードもビューティフルコードだと思います。

Rod氏: ありがとうございます。日本語版は読んだことがありませんでした。(本を手に取ってコードの部分を見る)なつかしい。

近藤氏: この本の中に、あなたは音楽科のドクターを取られていたと書かれていますね。驚きました。なんの楽器をやられていたんですか?

Rod氏: ピアノをやっていました。

近藤氏: そうなんですか?何を専攻されていたんですか?

Rod氏: music mathmatics(音楽数理論)です。

近藤氏: ありがとうございます。私は偉大なプログラマの中には、素晴らしい演奏ができる方が多いと思っているのですが、それはなぜなんでしょう?例えば楽譜は、曲の構造を示していると思います。そのため、素晴らしい演奏ができる人は構造を認識するのが得意ではないでしょうか?これはソフトウェアの構造を認識する能力につながっていると思うんですが、どう思われますか?

Rod氏: いろいろと違う部分もあると思いますが、確かにそういう似ている部分はあると思います。

近藤氏: ありがとうございます。ところで昨日講演された万葉の大場氏は、名前付けがシステムの方向性を決めるくらい重要だとおっしゃっていましたが、Rod氏がSpringFrameworkのコードを書く際、クラスやインターフェース、メソッドはどうやって名前をつけていたのですか?

Rod氏: Sunが提唱する命名規約はもちろんしたがっていますが、さらに読みやすくするために、目的を示す名前をつけるようにしていました。例えばAwareと言う単語を追加したクラスがいくつもSpringFrameworkの中にあります。ApplicationContextというコンテナを示すインターフェースがありますが、このインターフェース名にAwareをつけることで、クラスを利用するユーザーに特に気づいて欲しいメソッドを表しています。クラスを利用するユーザーを顧客として考えて名前をつけているのです。

近藤氏: SpringFrameworkの中にはサーバーサイドの技術のものが多いと思っているのですが、RIAのようなクライアントサイドをSpringを使って構築したい場合、どういうものを使うとよいでしょうか?

Rod氏: UIの開発にベストな方法なんてないと考えています。セッションの中でも語りましたが、開発者ごとに得意とする技術が違うので、利用する技術を選べることが重要ではないでしょうか?SpringFrameworkはFlexと連携することができる、Blaze DSとのインテグレーションを用意していたり、Spring Web Flow 2ではSpring Scriptと呼んでいるdojoと連携するためのライブラリを用意しています。JSFとの連携もありますが、JSFはUIをコンポーネントとして扱って再利用できるようにする技術なので、RIAのような複雑なUIを求めるようなものには向かないのではないでしょうか。

近藤氏: それではSpringのリリースプロセスについてお伺いします。Springのプロジェクトではどのようにリリースを進めているのでしょうか?

Rod氏: Springプロジェクトと言ってしまうと、非常に多岐に渡ってしまいます。ライブラリごとにチームがわかれており、例えば、Spring batchではbatchチーム、Spring securityであれば、securityチームと言うようになっています。だから、Coreプロジェクトに限って答えますね。Coreプロジェクトでは10人のコントリビュータがコードを書いています。そのうちフルタイムでCoreプロジェクトに関わっているのが3人です。3週間ごとにスプリント(注:スクラムと言うプロセスで用いられる用語で、スクラムでは一定の期間内に何をするのか、ゴールを定めます。その期間の事をスプリントと呼んでいます。)を区切って実装を進めています。

近藤氏: スプリント内で実装する機能はどのように決めていますか?

Rod氏: SpringプロジェクトではBTSにJIRAを使っていますが、そこに登録されている要望に投票してもらって、票数の多い機能を導入しています。また、Springは革新的なプロジェクトなので、要望ばかり聞いているわけにはいきません。例えばSpring Java Configurationという機能を開発していますが、これはユーザーからの要望から開発を始めたというわけではありません。本当に革新的な機能は、J2EEの開発を変えていく事のできる機能なので、そこは我々が示し、導いているのです。

近藤氏: ところで、Eclipseではリリースを年に1度行う、とタイムボックスが厳密に定められていますが、Springは随時リリースをする、というスタイルを取っています。これはなぜですか?

Rod氏: Springが随時リリースをするスタイルを取っているのは、ユーザーからのフィードバックをたくさん得たいからです。たくさんリリースをすればそれだけたくさんのフィードバックを得ることができます。

近藤氏: しかしSpringもすでに広く使われるようになり、開発の基盤として導入されるようになりました。Eclipseはプラットフォームとしての役割を持つため、リリースの機会を定めておくことで、ユーザーが載せ替えやすいようにしている、と聞きました。Springの場合もたくさんバージョンが上がれば、ユーザーがアップグレードするときのテストが増えてしまいますよね?

Rod氏: Eclipseで指しているのはPlug-inの事を言っているのでしょうか?確かにEclipseのバージョンを上げてしまうと、Plug-inが動作せずにこわれてしまう事が多いでですよね。特に複雑なUIを構成している場合はそうです。ただ、Springは後方互換性に関しては特に気をつかっているので、安心してバージョンを上げていただいて大丈夫です。

近藤氏: 時間になりました。お忙しいところお時間をいただき、ありがとうございました。

この記事に星をつける

おすすめ度
スタイル

BT