Seasar2によるスーパーアジャイルなWeb開発
『Seasar2によるスーパーアジャイルなWeb開発』発売記念
ひがやすをさんインタビュー[前編]
ひがやすをさんは,Seasar/Seasar2の生みの親であり,現在もSersarファウンデーションのチーフコミッターを務めています。Seasarの啓蒙活動をはじめ,ソフトウェア開発やエンジニアの仕事などをテーマにした著作や講演活動でも知られるひがさんですが,意外なことにSeasar2について単独で書き下ろす書籍は,『Seasar2によるスーパーアジャイルなWeb開発』が初めてです。そこで,本書の発売を記念して,ひがさんにあらためてSeasar/Seasar2,そして本書誕生の背景について伺いました。
クライアント/サーバでは,サーバ側が得意でした
- ―もう何度も話されていると思いますが,Seasarを開発した経緯について教えてください。
Seasarを作った一番最初のきっかけは,『WEB+DB PRESS』でもおなじみの羽生さんの会社で,軽いアプリケーションサーバがほしいと言われたことです。「EJBみたいなのはいらん,コネクションプーリングとかトランザクション管理だけはきっちりやってくれるライトウェイトなサーバがほしい」と言われて,そのときに作ったのが一番最初のSeasarの原型です。そのころはS0(エスゼロ)と呼ばれてました。2003年の4月ごろにカットオーバーしました。このときはまだオープンソースではありません。
オープンソースがまだそんなにメジャーではなかった時代です。羽生さんのところでこのS0と,データベースにPostgreSQL,サーバはTomcatといった組み合わせで,ほぼ全部オープンソースで組んだものができあがったということで話題になりました。うまく立ち上がったので,「じゃあオープンソースにしたいね」という声が上がり,コードを整理して出したのが2003年の8月くらいだと思います。それが最初のSeasar1と呼ばれているものです。そのころは単にSeasarと呼んでいましたが。
- ―Javaはずっと使っておられたのですか?
Javaを始めたのは2000年ごろからです。その前はクライアント/サーバアプリケーションの開発をやっていて,サーバはOracleで,クライアント側の開発にはDelphiなんかを使っていました。サーバサイドだけの開発も多かったですね。金融機関向けの開発を結構やっていたのですが,そういう開発だとGUIなんて使いません。ずっとバッチで処理するもので,基本的には「この計算をしなさい」とサーバに投げると1時間くらい計算しているような世界でした。その開発では,言語はCだけでしたね。
その後DelphiやVisualBasicも覚えたのですが,ちょうどクライアント/サーバが終焉を迎えたころに,そろそろDelphiもVBも変わるかなという感じだったので,私としてもキャリアを積む上で,次に学ぶのはJavaが良いかなと思って。
クライアントとサーバの開発はどちらも経験ありますが,どちらかというとクライアント側はそんなに得意じゃないんです。データベースにアクセスするところや,トランザクション管理やコネクションプーリングといったサーバサイドの部分は得意だったので,アプリケーションサーバも書けたんですね。ただ,Webのところはそんなにやっていませんでした。2002年~2003年くらいに仕事でフレームワークを作ったときに触ったのが最初です。
オープンソースは「みんなで実装している」
- ―Seasarがひがさんにとって最初のオープンソース開発ということになるんですね?
そうです。ただ,Seasarを作る前,オープンソースという形ではなかったのですが,近い経験をしたことがあります。BorlandがJBuilderというJavaの開発ツールを出していて,その中にデータベースと連携するコンポーネントが入っていたのですが,そのソースコードが最初は公開されていなかったんですね。それで「公開されてないんだったら作ってやるよ」と思って,同じ機能のコンポーネントを作りました。これはソースコードが公開されています。
そのコンポーネントを公開する勉強の過程を書いたのが,『詳説JDBCコンポーネントプログラミング』という本です。書き下ろしの書籍は,この『Seasar2によるスーパーアジャイルなWeb開発』がそれ以来2冊目ですね。この書籍の執筆も,ソースコードを公開したことがきっかけになって話をいただいたんです。そういう経験もあって,その本を書いた'97年ごろから,私はソースコードはオープンにすべきと思っています。
- ―最初はお仕事とは別にオープンソース活動をされていたわけですが,どのように切り分けていたのでしょうか?
私は会社の仕事でもフレームワークを作っていました。iSIDのDFORCEIIというフレームワークがあるのですが,それは私が主に作っていたものです。2000年くらいから関わっていました。ただ同じ人が作っていても,オープンソースと社内では,作り方も中身も違いますね。オープンソースのほうが,いろんな人たちの意見がたくさん上がってくる。
社内って距離が近いから,どうしても遠慮がちになるんです。隣にいる人や,近くにの部署の人たちが使っていますから,ちょっと不満があっても,言いづらいところもあると思うんですよ。でもオープンソースだと,基本的には使っているのは知らない人で,使うのも使わないのも自由。でも,「こういうところは直した方が良いよ」,という意見が出やすいんですよね。
会社で作るときには,私自身が「きっとこういうものがあれば生産性が上がるだろう」と思って作っているので,頭の中で最初から仕様を全部組み立てています。オープンソースでやるときも,最初からアイデアはあるのですが,会社のときのようにすぐに形にしないんです。
Seasar2を作り始めたときから,私は「はてなダイアリー」に日記を書き始めているのですが,その中で「自分はこういう風に思っているよ」と発言したら,それに対してフィードバックをくれるありがたい方もいるので,それに基づいて実装していくような感じです。なので,自分で実装しているというより,みんなで実装している感覚。そのころはコミッターは私一人だけだったのですが,自分一人で考えているという感覚はなかったですね。みんなで仕様を考えていると感じていました。
そうした後押しもあって,開発は進みました。そのころは会社でオープンソースでやることは認めてもらってなかったので,土日に会社に来てやっていたのですが(※1),ほぼ毎週リリースしていましたね。もちろん,Seasarの開発による知見を仕事にフィードバックもさせたりもしました。
今は会社でSeasar2の仕事をしていますが,最初から会社は意識していました。いつの日か会社,仕事でも使ってやろうとは思ってましたけど,けっこうSIerって保守的なんですよ。そんなに新しい技術を自分たちから率先して使おうとは思わない。あと金融機関系の仕事が多かったので,そういう場合,フレームワークを指定されることがほとんどでした。Seasar2をリリースした2004年当時は,オープンソースのフレームワークを使えるような状態ではなかった気がします。2005年ごろから流れが変わって,オープンソースは,かなり使われてきていると思います。
Seasar2が出てきたのと直接関係はないと思うのですが,そのころから,いろんなオープンソースプロダクトが一斉に出てきたのと,Javaの世界にだんだん商用のものがなくなっていく状況になりましたから。2005年以降はオープンソースの時代と言えますね。
- ※1)
- ひがさんは当時も現在も自宅にコンピュータをもっていません。
Seasar1からSeasar2へ―開発者の生産性に貢献したい
- ―先にフレームワークについて触れておられましたが,Seasar2はSeasar1から大きく変わったプロダクトになりましたね。
Seasar1が私の最初のオープンソースプロダクトなんですけど,アプリケーションサーバというのはそんなにニーズがあるところでもないし,開発者の生産性だとかにそんなに寄与するところでも実はないんです。たとえば,コネクションプールだろうが,データソースだろうが,あってあたりまえなんです。それがあるからといって,そんなに生産性が高くなるものではない。
なので,もう少し開発者の生産性に寄与するものにしたいと思っていて,それだったらアプリケーションサーバよりもうちょっと上のレイヤの,フレームワークだとか言われているもののほうが,寄与できるんじゃないかなということで,フレームワークとしてあらためて出直したのがSeasar2というわけです。また,そのころちょうどDI(Dependency Injection)とかAOP(Aspect Oriented Programming)といった技術の流行りはじめだったので,さっそく取り入れて,より使いやすいDIコンテナということで作り始めたのが最初です。
開発は2003年の12月30日だとか,2004年のお正月ですね。だいたいちょうどお正月前後だと思います。そのくらいのころに作り始めました。
[後編に続く]
-
Seasarプロジェクトをなぜはじめたのか
『Seasar2によるスーパーアジャイルなWeb開発』発売記念 ひがやすをさんインタビュー[前編] 『Seasar2によるスーパーアジャイルなWeb開発』発売記念 ひがやすをさんインタビュー[前編](WEB+DB PRESS plusシリーズ)]|gihyo.jp … 技術評論社 技評さんのサイトでイン
Tracked : #1 ひがやすを blog (2008/04/04, 13:58)