GlassFish と私

この記事はGlassFish Advent Calendar 2013の24日目として新たに書き下ろしたものです。昨日は青江 @aoetk さんの「GlassFishで仮想ディレクトリマッピングを行う方法」でした(青江さん、いろいろ無理言ってゴメンナサイ...)。


今回は、100%筆者の思い出話です。興味がなければ読み飛ばして構いません。

筆者は2006年にOracle Database, Standard OneとOracle Application Server, Standard Oneを最小かつ最少構成である5NUPで購入し、Oracle Direct経由でサポート契約を締結しました(某家電量販店で購入したため、購入とサポート契約を同時に行うほど気を利かせてもらえませんでした)。結構な出費でしたが、2003年頃にOracle Database 9iをサポートなしで購入して痛い目に遭ったので、その経験から慎重に事を進めたつもりです。

今回はOracle Databaseについては置いておきます。現在はDatabase 12cのセットアップ準備をゆっくり進めているところです。

Oracle AS 10gは、当時OracleがBEA WebLogic相手にネガティブ・キャンペーンを展開していた時の当事者で、売りの一つとしてWebLogicでは管理サーバーを1台しか構成できず移行も困難だが、Oracle ASはクラスタのすべてのノードが必要に応じていつでも管理サーバーに昇格できる点を強調していたと記憶しています。また、Oracle ASはコンテナ部分であるOC4Jを単体動作させることができ、特に開発環境で効果的であるという触れ込みでもありました(筆者も実際にTomcat代わりとしてEclipse上で動作させていました)。

その後、Oracleが紆余曲折の後BEAを買収してから、事態は一転します。次期バージョン(Oracle AS 11g)でのJava EE 5対応を予定していたにもかかわらず(実際にOC4JについてはJava EE 5対応がかなり進んでおり、EJB 3.0に対応したバージョンもリリースされていました)、Oracle ASの新バージョン開発を中止し、WebLogicへの移行を促したのです。Oracle ASはDatabase同様にStandard Edition Oneがありましたから、最小構成の5NUPなら約10万円ほどで購入可能でしたが、WebLogicにはそれがなく、 最小10NUPのStandard Editionからとなり、初期費用だけで20万円以上が必要でした。Oracle ASユーザーへの優待は一切なく、Oracle ASへの投資を全く回収できていない自分にとっては、WebLogicへの移行という選択肢は到底受け入れがたいものでした。

参考まで、Oracle ASに関する顛末については、当時日本オラクルのJavaエバンジェリストであった佐藤直生 @satonaoki さん(現・日本マイクロソフト)のブログ記事「ところで、Oracle ASってどうなった? (オラクルのAPサーバーの歴史など)」が整理されていてわかりやすいです(時期的にGlassFishに対する言及もあります)。

結局、Oracle ASには見切りを付けざるを得ない、だがWebLogicに移行できるほど個人ユーザーには財力がない、ということで代替となるサーバーを探していたところに偶然見つかったのが SunのGlassFish v3 でした。当時のGlassFish v3はbuild 50前後の、まともに動くかすら怪しい状態でしたが、先行リリースされたGlassFish v3 Preludeと併用して、この新しいサーバーの持つ可能性を少しずつ感じ取っていました。当時の安定版であったGlassFish v2.1もインストールした経験はあるのですが、先にGlassFish v3系を知ってしまうと、言い方は悪いですが「雑魚」なんですよね。ということで、2009年12月上旬の正式リリースまで、筆者はGlassFish v3の開発版を使い続けました。バグには散々泣かされましたけど。

GlassFishユーザーとして大きな転機となったのは、2010年5月末に開催された最後の「Sun Hot Topicセミナー」に参加したこと、そこでのGlassFishエバンジェリスト(当時)の寺田佳央さん、日本唯一のJava Champion・櫻庭祐一さんといった方々と出会ったことでしょう。この時、最後の懇親会までしぶとく残ったのが今の自分の方向性を決定づけたと言っても過言ではありません。以後、東京地区での寺田さんのセッションのほとんどに参加しており、多くの知識を吸収しました。

最近Twitterで「@yoshioterada さんまたあの資料使い回している」とか「@yoshioterada さんが次に何言うかだいたい想像できるんだけどね」とぼやきとも取れるツイートをしているのは、寺田さんのセッション内容を丸暗記するほどの頻度で参加していた証拠なのです。

実はこの時期、筆者は体調を派手に崩してちょうど1年間の休職をしていた期間で(求職前2年間くらいも欠勤を繰り返しながら満身創痍で出社していた)、とはいいつつ体調はほぼ快方に向かっていたので、タイトなスケジュールを組まない限り比較的自由に行動できる時期でした。この自由な時間が、コミュニティ活動への参加のきっかけとなったと言えます。

正直なところ寺田さんの受け売りも多いのですが、実際に自分でGlassFish v3を使ってみて、Tomcat並みの簡潔さと、WebSphereWebLogicに匹敵する高性能を併せ持つ、将来有望なサーバーだと感じていました。v3の最初のリリースではクラスタ機能が外されましたが、クラスタを装備したv3ならばWebSphereもWebLogicも敵じゃない!とさえ本気で思っていました。今でこそ後発のJBoss AS 7やWildFly 8にパフォーマンス面で見劣りする部分もありますが、Java EEのリファレンス実装としてだけでなく、1つのアプリケーション・サーバーとしても、筆者はGlassFishの可能性に賭けていました。

その思いが通じたのか、ある時寺田さんから「GlassFish勉強会」で発表してみないかと誘われ、その時の功績からGlassFish Users Group Japanの副会長を拝命するに至りました。会長の岡崎さんが多忙で出席できないことが多く、また寺田さんはGlassFishユーザ会からOracle色を薄めたいという意向で裏方に回ることが多くなったため、不慣れながら筆者がユーザ会や勉強会を仕切ることになりました。

こうした活動は、今年6月のGlassFish 4.0リリースで最高潮を迎えた、と自分では思っています。寺田さんの裏方としてのご尽力もさることながら、常連スピーカーとなりつつある久保さん槙さん久保田さん加藤田さん上妻さん、ゲストスピーカーとして登壇いただいた浅井さん、伊賀さん、仲宗根さん・木村さん(@楽天市場)、Arshelさん、そして毎回多くの参会者の皆様に支えられながら、岡崎会長不在の中で何とか勉強会をやってこられたことに、とても感謝しています。

順風満帆に思えたGlassFishに暗雲立ちこめたのが、OracleのGlassFish 4.1以降に対する商用サポート打ち切りのアナウンスでした(v4.0系は最初から商用サポートが設定されていない)。この種の方針転換はOracleにとっては特別珍しいものではないのかもしれません。しかし、筆者は過去の同種の方針転換で直接的ダメージを受け続けてきたため、今回の件に関しても懐疑的にならざるを得ないのです。元OpenSolarisのおーたさんには気付くのが遅いと叱られそうですが...

  • Oracle Application Server 10g -- 前述の通り。WebLogic買収に伴い次期バージョンのリリース打ち切り。現行ユーザーに対してはWebLogicへの移行を強く推奨(Oracle ASユーザーに対する優待販売等は一切なし)。
    2013-12-28補足:@yamadamn 氏より、Oracle ASユーザーに対しては「WebLogic Server Basic」なるライセンスが提供され、WebLogicの一部機能について利用可能との情報あり。ただし筆者は日本オラクルからそのような話を一切聞いていないし、時期的にも筆者がOracle ASのサポートを解約した後に出てきた話のような気がします。
  • OpenSolaris -- 突然のプロジェクト解散。同時にSolaris自身はクローズド・ソースに逆戻り。元コミュニティメンバーはOSS済みコードをもとにOpenIndianaなどを立ち上げるが、往時の勢いは見られず。
    2012-01-13補足:一連の経緯は「[リレーコラム] OSC100回目に向けて(Raspberry Piユーザグループ 太田)」に詳しい。
  • Solaris -- OpenSolaris打ち切りによりクローズド・ソースに逆戻り。価格体系も変更され、サブスクリプションを購入しないと本番運用が出来ない(Sun時代はサポート不要なら無償で本番運用可能)。さらにSun時代と比べサブスクリプションの選択肢が狭まり、全体的に価格上昇。
  • Sun Java System Web Server 7.0 -- 現iPlanet Web Server。価格体系変更により、Oracle Web Tireを購入しないと本番運用が出来ない(Web TireにはOracle HTTP Serverなど別製品も含まれる)。サポートについてもWeb Tireで一元化され、全体的に価格上昇。その上、新機能の追加はOracle HTTP Serverに集中し、iPlanetはほぼ放置された状態。確かSJSWSにもOSS化の動きがあったはずだが...多分潰されたと思う。
  • GlassFish 4.1 -- 来年リリース予定で、その際に商用サポートが提供されると明言されたものの、ここに来て一転、サポート中止。これにより国内外のコミュニティは混乱し、いまだ収束していない。Oracleでは商用サポートユーザーはWebLogicに移行するよう強く奨励しているが、Oracle ASの時を思い起こさせるような施策に、個人的には不快感を持っている。まあ、あんなレガシー・アーキテクチャにNucleusの代わりなど務まるはずがないと思っていますが...。

この他にも、多くのユーザーから信頼を失いMariaDBなどが派生するに至ったMySQL、権利関係であれこれ揉めた上にJenkinsという形でスピンオフせざるを得なかったHudson(Jenkinsについては、スピンオフが成功した例だと思っています)などの例もあり、そういったことを考えると、GlassFishの将来は決して楽観視できるものではないと考えています。

OracleはGlassFishをJava EEのRIに特化させるつもりです。しかし、単にJava EEのRIとして存続するのであれば、現在GlassFishが有しているアプリケーション・サーバーとしての機能の多くは不要です。(その先のことは敢えて伏します)

GlassFishをこれまで通りのアプリケーション・サーバーとして存続させるためには、私たちコミュニティがGlassFishを支えなければなりません。たとえOracleがGlassFishへの投資をほとんど行わなくなったとしても、プロジェクトが存続できるような体制を私たちは構築しなければならないと感じています。

Sun Microsystemsからの最後の贈り物、GlassFishを、絶対に護ります。


明日は「GlassFish Advent Calendar 2013を振り返って」というタイトルで、最後にこのAdvent Calendarについて今一度、考えてみようと考えています。