ユーザーの挑戦

フリーAPサーバで音楽ダウンロードサイトを構築


羽生章洋
有限会社エア・ビート
取締役兼CEO
2000/12/20

前編 アプリケーションサーバ「Enhydra」を使った挑戦


 

Enhydraで音楽ダウンロードサイトを構築

 Servlet、JSP、JDBCを使ってアプリケーションを作成するとき、実ははっきりいって手間のかかるコーディングを必要とします。Servlet側で管理するセッションとJDBCを通じて管理しているDBコネクションとの間の整合性を合わせないといけないからです。もちろんこれは一般論であり、私どもが愛用しているJBuilder4であればコネクションプーリング機能も用意されていますし、JSPの開発も非常に容易になっています。ですから比較的小規模のサイトではあるが将来性を考えた場合にJavaを使おうという判断をしたのであれば、このような開発ツールを利用することで非常に楽になります。

アプリケーションサーバはやはり必要

 しかし、最初からある程度以上の規模のサイトを構築するとなると、1つの開発ツールに向かい合い数人で作りこんでいくというスタイルは通用しなくなります。つまり分業が重要になるのです。そのためにはアプリケーションサーバの導入を検討する必要が出てきます。例えばWebデザイン1つを取ってみても専門のデザイナーと同じレベルでできるプログラマーは数に限りがありますし、いくらそういうスキルを持っていても両方同時に進めることは非常に困難です。またデータベースの実装を見ても非常にさまざまなノウハウを必要とします。インデックスの張り方やディスクパーティショニング、キャパシティプランニングなどさまざまな要素を検討しなければなりません。パフォーマンスチューニングの技法も必要になりますし、フェイルオーバーやロードバランシングなども組み込まなくてはなりません。そのほかも含めこれらの膨大な作業の積み上げを行っていかなければならないのが大規模Webサイトの構築であり、そのときにできる限り「お約束」の部分の実装には手間を割かずに、その「お約束」の部分の大半を吸収して個々の要素技術の橋渡しを実現し、ひいてはそれが分業化を実現する、それがアプリケーションサーバの必要性なのです。

Enhydraを選んだワケ

 ではアプリケーションサーバの必要性を認識したところで、どのアプリケーションサーバを採用するかということが次の課題となってきます。当社ではさまざまな検討を行った結果、Enhydraというアプリケーションサーバを採用しました。EnhydraはオープンソースのJava/XMLアプリケーションサーバであり、すべてがJavaで書かれています。開発におけるデザインとビジネスロジック、そしてデータオブジェクトの分離を実現するフレキシブルな環境を目指しており、現在のところそれは非常に効果的に機能しています。当然ながらRDBMSに接続して利用することになりますが、JDBCを使うことでさまざまなRDBMSをサポートしています。サイトはhttp://www.enhydra.org/ で、非常に活発な活動を行っています。コーヒーを飲んでいるラッコがマスコットなのですが、実はEnhydraというのはラッコの学名なのだそうです。http://www.enhydra.org/home/whoWeAre/index.htmlの右隅に小さく「Did you know? 」と書いてあり、ここをクリックするとモントレー湾の水族館のサイトにジャンプします。実はEnhydraの採用の最終決定は私が行いましたが、この「ラッコ」というところに引かれた、というのが採用決定の最大の理由でもあります(笑)。JavaにもDukeというキャラがいますし。

 今回当社はEnhydraを選定したわけですが、その理由は次の通りです。

  • フリーである
  • アプリケーションサーバである
  • オープンソースである
  • Javaで書かれている
  • サービスの開発もJavaで行う
  • プラットフォームを選ばない
  • 開発ツール(JBuilder)との連携
  • 分業レベルが非常に高い

 フリーというか無償であるというのは、企業にとっては非常に重要です。有償のアプリケーションサーバは運用ライセンスが数百万円にも達します。正直な話、資本金300万円の有限会社である私どもの場合、アプリケーションサーバを購入するだけで資本金を食いつぶしてしまうのです。実現するサービスのレベルが同等であるなら不要なコストは可能な限り抑えたいと考えます。もちろん有償のものを購入し、きちんと保守契約をすることも必要ですし大切なことです。しかし、一体どこまで本当にサポートしてくれるのか、またそれ以上にどこまでのサポートを必要としているのかを冷静に判断するべきです。その上で本当に必要であれば、有償のものを購入することをお勧めします。

 アプリケーションサーバ導入の目的を考えると、きちんと機能レベルが実現されていないと困ります。Enhydraはその点で十分に満足いくレベルにあると判断しました。セッション管理はもちろんのこと、ロードバランシングやクラスタリングの機能もあり、管理用ツールも充実しているなど、商用のものと比較しても遜色はありません。オープンソースであり、かつJavaで書かれているという点も大きな魅力です。そして何よりサービスの開発自体をJavaで行えるというのは、下手なスクリプト言語を強要されることと比較すると非常に高い生産性とデバッグ性を得られるというメリットがあります。大規模システムの構築においてはデバッグの容易性が非常に重要です。この点でJavaでコードを書くというのは非常に有効なのです。

 では、もう少し選定理由について説明していきましょう。

100% Javaで作られているメリット

 EnhydraはJavaで作られているため、マルチプラットフォームを実現しています。これは開発をWindows上で行い、運用をLinux上で行うといったことが可能になるということです。Javaの「write once,run anywhere」はまゆつば扱いを受けてきました。確かにGUIレベルでは今でも多少の問題がないわけではありません。しかしJavaが世に出てから既に丸5年以上の時間がたっています。ことサーバサイドにおいては、まったく問題のないレベルにまで達したといって差し支えないでしょう。JavaはWindows、LinuxだけでなくSolaris、HP-UX、AIX、さらにはOS400や汎用機の世界にもVMが存在します。スケーラビリティを考えたときに、Javaで開発しておくことは資産の有効継承を可能にします。実際当社のシステムは開発をすべてWindows上で行っていますが本番環境はLinux上に構築しています。リコンパイルの必要もなく単純にclassファイルをサーバ上にFTPでコピーするだけでそのまま問題なく動いています。

JBuilderとの連携に優れる

 またEnhydraはKelpと呼ばれる周辺ツールによって、JBuilderとの連携を実現しています。JBuilderは周知の通りJavaプログラミング環境としては非常に優れたプロダクトであり、多くの開発者から高い評価を得ています。しかもFoundation版は無償配布されています。私どもは既にJBuilderを愛用していることから、JBuilderの高い生産性をそのまま生かしてEnhydra上のサービスを実現できるという点を高く評価しました。

JBuilderにアドインして利用できる点が大きな特徴です。後述のXMLCコンパイラもJBuilderからウィザードで利用できるようになっています

デザイナーとプログラマーの完全分業

 最後に分業という点でEnhydraがほかのアプリケーションサーバと比較しても非常に抜きん出ている重要な機能があります。これが今回の選定の上で最も重要だったといえます。それはXMLCの存在です。XMLCについては次回に詳細を説明するとして、一言でいえばHTMLからServletを生成するコンパイラだといえるでしょう。

 現在のServletおよびJSP(Java ServerPages)は根本的な問題を有していると思います。それは、これらがHTMLフォームのデザインにおいてウォーターフォール型の開発を強いるものであるということです。ServletはHTMLのタグをすべて手でコーディングする必要があります。となると、HTMLの構造が決定しないとコーディングができません。つまりデザインが出来上がらない限りさまざまなロジックのプログラミングはできません。それを容易にするためにJSPが出てきたわけですが、その売り文句である「デザインとロジックの分離」というのは非常にチープなデザインの場合にのみ有効だということです。極論をいうとプログラマーが片手間にできる程度のデザインであれば何とかなるでしょうが、プロのデザイナーが作るレベルのものに対しては無力なのです。

 プロのデザイナーはプログラマーがプログラムを1本書くのと同程度の手間と時間をかけてページごとにデザインを起こしていきます。となると単純なデザインであればすぐにそのHTMLファイルを受け取ってJSPタグの埋め込みに入れますが、凝ったデザインのページになるとなかなかプログラマーが次の作業に入れないのです。つまり作業の分担は可能である、しかし並行作業は不可能である、ということになってしまうのです。

 プロのデザイナーは専用のデザインツールを使います。HTMLを書くというよりもデザインをした結果がHTMLになっているという感じです。当社はデザイナーの方との整合性を合わせるためマクロメディア社のDreamweaverというツールを使っていますが、生成されるHTMLはプログラミングの観点で見ると扱いづらいものです。正直いって後からJSPのようなスクリプトを書き加えていくのは苦痛です。しかも、実際にはデザインにロジックを組み込んで動かしてみることでまたデザインを修正したりということが頻繁に起 こります。このようなときに、デザイナー側でデザインを変更するとまたJSPの修正が必要になってしまうことも往々にしてあります。また、さまざまなブラウザの違いによって生じる表示の差を吸収するためにJavaScriptなどを組み込んだりということも必要になったりします。これはこれでいわば1つのプログラミングです。このような場合にどうやって分担するのかというと悩ましい問題になってしまいます。

 デザイナーはあくまでもデザイナーでありプログラマーではないわけですから、余計なことに気を使うことなくデザインに専念してほしいわけですが、一方でその分の負荷がプログラマーにかかってきます。XMLCはこの負荷をJSPと比較するとかなり軽減することが可能なのです。もちろんXMLCは万能でも完璧でもありません。プログラマーにかかる負荷が皆無になるとは到底いえません。しかし、それでも私どもの実績としてXMLCはJSPと比較して数倍以上の効率を実現できる優れたツールだと考えています。そしてその効率の源泉はやはり並行で分業を行えるという利点なのです。

自己責任というリスクよりメリットの方が大きかった

 このように見ていくと、Enhydraというアプリケーションサーバが非常に有用なものであることがお分かりいただけるかと思います。ただし問題点もあります。最大の問題点はすべて自己責任であるということです。何か問題が発生しても文句をいう先はありません。

 またベンダによる研修もなければ市販の書籍もありません。ユーザーコミュニティのメーリングリストなどが唯一の情報源であり、あとは試行錯誤と公開されているソースコードとの戦いということになります。ですから、一見したコストは非常に低いのですが、エンジニアに要求される取り組み姿勢は非常に厳しいといえます。

 ただ、やはり巨大な規模のサイト開発にはあまり向きません。あくまでも中規模から大規模の手前くらいという程度でしょうか。これは単純にまだまだ実績が少ないだけで、今後どんどん実運用を行うサイトが増えるに従って叩かれていくことでしょうが、今の時点で過大な期待をもって取り組むのはやはり若干の危惧を感じます。

 さらに大規模サイトではEJBをはじめとするJ2EE(Java2 Enterprise Edition)の導入が今後必要不可欠になっていくことは疑いの余地がありませんが、EnhydraではまだJ2EEに対応していません。現在のバージョンは3.0.1です。次のバージョンである4.0のα版が出ていますがこちらはJ2EEに対応しています。とはいえ、まだまだこれからという状況ですから、EJBではなくやはりEnhydra独自のDO(データオブジェクト)を使うことになります。

 しかしそれらをかんがみた上で、それでもEnhydraには非常に大きな魅力があります。あなたが中規模以上のサイト構築を低コストで行いたいのであれば、Enhydraは非常に有効であるといえます。当社は非常に資本が小さいためEnhydraの採用はリスクよりもはるかに巨大なメリットを得られたと確信しています。

Enhydraの入手方法


Index
フリーAPサーバで音楽ダウンロードサイトを構築(前編)
■Enhydraで音楽ダウンロードサイトを構築
 
アプリケーションサーバはやはり必要?
 Enhydraを選んだワケ
 Javaで作られているメリット
 JBuilderとの連携に優れる
 デザイナーとプログラマの完全分業
 自己責任というリスクよりメリットの方が大きかった
  ■Enhydraの入手方法
 RDBMSとJDBCドライバについて
フリーAPサーバで音楽ダウンロードサイトを構築
(後編 バーチャル組織で成功した理由と「Enhydra」の優位性)



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間