Seasarに関してこの2年間やってきたこと
おととい、Seasarの理事、主にまさたかさんと、しばらくぶりにちゃんと話しました。そこで、おいらが、この2年間くらいの間、何を考え、何をしていたか話したんだけど、「ひがさんが何をしていたかしらなかったよ」と、まさたかさんがいってたので、きっと、コミッタの人やユーザーの方も同じだと思うので、Seasarに関してこの2年間やってきたことについて書いておこうと思います。
まさたかさんと、ここんとこ話をしていなかったのは、別に仲が悪かったわけではなく、はぶさんが理事を抜けた後、飲み会とかやらなくなったから、というのが原因。後、おいらも結婚したので、あまり外で飲まなくなったってのもあります。
2年前のSeasarがどのような状態にあったかっていうと、ちょうど、キャズムに陥っている状態。そこそこの知名度はあるけど、アーリーアダブタ以外は手を出さない。
そこで、私が行なったのは、HOT deploy、さくさく感のある開発、HTMLテンプレート、ページ駆動開発、scaffoldなどのキーワードをちりばめた、派手なマーケティング活動です。Super Agile Web Development with Seasar2というタイトルで、セッションを30回以上はやったかなぁ。
この派手なマーケティング活動に、疑問・違和感を持っていた人たちが、Seasarの内にも外にもいたことはわかっていました。でも、キャズムに陥っている状態で、これまでの延長で活動していたら、尻貧になってしまいます。
派手なマーケティング活動の結果、Seasar2のユーザーは増えました。MLのメンバー数、メールの流通量、ダウンロード数などがぐっと伸びました。
これで、キャズムを超えたかというとそうではありませんでした。マジョリティの人たちに受け入れてもらうため(キャズムを超えるため)には、単にプロダクトが良いだけでなく、ドキュメントの量と質、サンプルやチュートリアル、書籍の充実などが必要になります。
最初にSeasar2自身のドキュメントを整理しました。縦に長いという批判はあるかもしれませんが、内容的には過不足ないはずです。
だだ、プロダクト自身に大きな計算違いがありました。約2年前にリリースされたSeasar2.4には、Churaファミリーと呼ばれたTeeda、KuinaDaoがあります。今後は、EJB3、JSF、JPAがはやると思って用意したのですが、予想通りには行かなかったのです。
TeedaのHTMLレイアウトは人気があったんですが、JSFの部分が、仕様も多く、実装も複雑なので、いざ何かあったときに、ソースを追いかけ辛いという指摘を受けていました。
Teedaによって、StrutsからJSFに世代交代させることを狙っていたんですが、狙い通りには行きませんでした。JSFが思ったより受け入れたもらえなかったというか、Strutsが思ったよりも強かったっていうか。
JSFがはやれば、Teedaチームのノウハウが強みになって、自分たちの時代だと思ったのに。JSFを実装までした人たちってのは、世界にもそうはいないからね。
データアクセスについても、今後は、JPAがはやると思って、KuinaDaoを用意したんですけど、これも、狙い通りには行きませんでした。Hibenate(JPA)がはやれば、小林さんとか中村さんとかHibenateに強い人たちのノウハウが強みになって、自分たちの時代だと思ったのに。
EJB3、JSF、JPAの不人気に悩んでいたころ、あるお客様で、超大規模案件で、Seasar2を採用したいという話がありました。Seasar2.4、S2Struts、S2Daoを使いたいということでした。実際のプロジェクトのスタートまでは時間があったので、私が選んだのは、S2Struts、S2DaoをHOT deployにネイティブに対応させ、超大規模案件でも耐えられるように作り直すことです。
詳しくは、SAStrutsとS2JDBCを作ったわけをご覧ください。
SAStruts、S2JDBCは、キャズムを超えるためのキラープロダクトとして開発をしました。自分で作ったほうが早いと思いつつ、StrutsベースでSAStrutsを作ったのは、マジョリティの人たちに安心して使ってもらえるようにするためです。
ドキュメントの量と質、サンプルやチュートリアルを最初から充実させました。派手なマーケティングより、実質的な中身を優先しました。scaffoldが最近までなかったのも、派手な機能よりも地道な改善を重要視したからです。
某調査機関によるWebアプリで使用されているフレームワークランキングでも、TOP10に入っているので、なんとなくキャズムを超えたかなと思っていますが、今後も皆さんに安心して使っていただけるよう地道に改善を続けていきたいと思っています。