近年、Linuxをはじめとしたオープンソースソフトウェアが注目を浴びてきています。Javaの世界では、Apache Software FoundationのApache XMLプロジェクト(http://xml.apache.org/)で開発されているXMLパーサのXerces、Jakartaプロジェクト(http://jakarta.apache.org/)のサーブレットコンテナであるTomcatをはじめとしたプロダクトに、多くの人が直接、あるいは間接的にお世話になっていることでしょう。最近では、EclipseやNetBeansといったIDE(統合開発環境)なども注目を浴びてきています。
本連載では、数あるオープンソースソフトウェアの中から「現場に活かすJakarta Project」と題し、Jakartaのプロダクトを気軽に試すことでその便利さが実感でき、実際の業務にも活用できる、といった内容で連載を進めていきたいと考えています。第1回目の本稿では、Jakarta Projectの全容について紹介するとともに、仕事へのJakartaのプロダクトの採用に踏み切れない人のために、Jakartaのプロダクトを採用するメリットについて述べたいと思います。
Jakarta Projectについては、すでにご存じの方も多いとは思いますが、オープンソースのWebサーバで有名なApache Software Foundationで運営されているプロジェクトの1つで、SUN MicrosystemsがServlet/JSPのリファレンスインプリメンテーションであるJSWDK(JavaServer Web Development Kit)をApacheに寄付したのをきっかけに発足しました。そして、このJSWDKをベースにTomcatの最初のバージョンが開発されました。
現在では、このTomcatはサーブレットコンテナとして単独で利用されるにとどまらず、Apache XMLで提供しているWebサービスエンジンのAxisを動かしたり、Eclipse/NetBeansでWebアプリケーションを開発する際に利用されたり、Jboss/JOnASといったアプリケーションサーバに組み込まれたりと、ほかのオープンソースプロジェクトでも必要なものとなっています。また、Tomcat以外にもJava標準のビルドツールのAntをはじめ、ロギングライブラリであるlog4jなど、さまざまなツール/ライブラリが提供され、広く使われています。プロジェクトの概要をつかむために、プロダクトをカテゴリごとに図1にまとめてみました。
Commons、Avalon、Turbineについては、その中でいくつかのモジュールを提供していますが、モジュールのうち、ほかのカテゴリに入りそうなものは、モジュール名(サブプロジェクト名)として、個別に記述しています。例えば、Logging(Commons)は、CommonsプロジェクトのLoggingモジュールという意味です。赤字で表記されているプロジェクトに関しては、「Ja-Jakarta Project」(http://www.ingrid.org/jajakarta/)で日本語訳が提供されています。また、最近では「Jakartaの杜」(http://www.terra-intl.com/jakarta/)でも活発に翻訳活動が行われているようです。英語が苦手な方はJa-Jakarta ProjectやJakartaの杜のドキュメントを利用するとよいでしょう。
次に、Jakartaのプロダクトについて、カテゴリごとに紹介します。
Jakartaプロジェクトの最初の提供プロダクトがサーブレットコンテナのTomcatであることから分かるように、Webアプリケーションの開発を支援するプロダクトは、Jakartaプロジェクトの目玉といってよいでしょう。サーブレットコンテナであるTomcatをはじめ、Turbine/Strutsといった、Webアプリケーションを効率よく開発するためのMVCフレームワーク、JSPを用いる際に便利な機能を提供するTaglibs、JSPよりシンプルで使いやすいテンプレートエンジンのVelocity、ポータルサイトを構築するのに便利な機能を提供するJetSpeedなど、非常に充実したラインアップとなっています。
Javaで記述されているポータビリティに優れたビルドシステムのAntをはじめ、全文検索エンジンのLucene、サーブレットに類似したメール処理を簡単に行うMailet機能を持つメールサーバであるJamesなどがリリースされています。
ログ出力を簡単に行うログAPIや、Perl/python/rubyなどのスクリプト言語ユーザーには欠かせない正規表現処理を行うライブラリ、DBに対するJavaオブジェクトのラッピングやコネクションのプーリングを行うものなど、さまざまなライブラリを提供しています。中でも、Jakarta Project内で共通して使えるライブラリを数多く提供しているCommonsプロジェクトが最近注目を浴びてきています。Commonsは、Jakarta Project内ではもちろんのこと、Apache XMLプロジェクトでも使われています。ライブラリに関しては、ほとんどのものがサーバサイド以外でも利用できるので、最も汎用的なプロダクトといえるでしょう。
ソフトウェアのフレームワークには、Struts/TurbineのようなWebアプリケーションに絡むもの以外のフレームワークも提供しています。中でもサーバアプリケーションのフレームワークであるAvalonは、James、Cocoon、JMeterなどのJakarta/Apache XMLプロジェクト内のほかのアプリケーションの土台として使われています。また、サーバサイドJavaのテスティングフレームワークであるCactusも最近注目を浴びています。
COLUMN Jakartaのプロダクトを簡単に使う方法
オープンソースのプロダクトを使っているとソフトウェアの頻繁なアップデートは煩雑な作業になります。そこで、Linuxをお使いの場合、Linuxディストリビューション用のパッケージを使うとインストールが楽になります。RPM系のディストリビューションでは、JPackageプロジェクト(http://www.jpackage.org/)でJava関係のパッケージを多数配布しているので、その成果を利用することができますが、多くのディストリビューションでは、デフォルトではJavaのソフトウェアをほとんど含んでいないのが現状です。そのような状況の中、Debian GNU/Linuxでは、Debian本家のサイトで多数のJavaパッケージを提供しています(利用できるパッケージについてはJava Package List for Debianを参照してください)。そのため、例えばantをインストールしたい場合、
# apt-get install ant
と入力するだけで、ネットワークから自動的にAntパッケージをダウンロード、インストール可能となっています(注)。もちろん、Antの動作に必要なXercesなども自動的にインストールされます。tar.gzをダウンロードして、解凍して、環境変数を通し……という手順は、もう不要です。新しいバージョンへのアップデートも簡単に行うことができます。もし、オープンソースのインストールの煩雑さにお悩みなら、ぜひ一度Debianをお試しください。
注:ただし、AntをはじめとしたJavaパッケージをインストールするためには、BlackdownのJava VMが必要になりますが、ライセンスの問題上、Debianのサイトでは配布されていません。事前にBlackdownのJavaVMをインストールしておく必要があります。詳細については「でびあんでじゃば」(http://yamaguch.sytes.net/~tora/debian/java.html)をご覧ください。
本連載では、数あるプロダクトの中から、現場ですぐに生かせるものを中心に選び、以下のプロダクトを取り上げて解説していきます(そのほかのプロダクトについては、別の機会に解説します)。
プロダクト名 | 内容 | |
---|---|---|
Ant | ポータビリティに優れたJava標準のビルドツール | |
Commons | Java標準APIを補完する便利なライブラリ群 | |
ログAPI (Commons-Logging/Log4j) |
ログの出力に便利なライブラリ | |
Taglibs | JSPにタグを挿入することで簡単に使えるタグライブラリ群 | |
WebDAVサーブレット | Tomcat付属のWebDAVサービスを提供するサーブレット。HTTPプロトコルを利用してファイル共有が可能 | |
OJB | JavaオブジェクトとRDBMSのマッピングツール | |
ORO | Perl互換の正規表現ライブラリ | |
さて、こうして紹介されると「Jakartaのプロダクトは便利そうだけど、実際に使うとなると、製品ではないし、品質やサポート面で不安だなぁ……」とお思いの方もいらっしゃることでしょう。次に、Jakartaのプロダクトを採用する理由について少し考えてみましょう。
(1)無料である
いうまでもないことですが、メリットとして、無料であるということが挙げられます。購入価格が無料なことはもちろんのこと、システムの運用の際にもライセンス料は取られません。また、注目していただきたいのは、バグが修正されたバージョンの入手や、アップグレードも無料ということです。
高額な商用ソフトウェアの中には、半年から1年ごとに次のバージョンがリリースされ、新しい製品を毎回購入するだけでばかにならない費用が掛かることがあります。また、購入したライセンス以上にユーザーが利用しないように、ライセンスの管理にも手間がかかります。オープンソースであれば、このような問題は発生しませんし、急な人事異動などで新しく人が入ってきた場合でも、煩わしいソフトウェア購入の手続きを行う必要がなくなります。
(2)ソースが公開されている
ソフトウェアを利用して問題が発生した場合、ソースが公開されているので、迅速に対処することができます。商用のソフトウェアを利用しているときに、何らかの原因でExceptionが発生しているがなかなか原因がつかめず、散々調べた揚げ句の果てには、ささいな設定ミスだった……ということは、誰しも経験があると思います。オープンソースの場合、例外が発生した部分のコードを少し読むだけで、自分の設定ミスなのか、あるいはソフトウェアのバグなのか、問題を即座に切り分けられることもあります。
(3)ライセンスの制限が緩い
Jakartaのプロダクトは、Apache Software Licenseという制約の緩いライセンスで公開されているため、プロダクトに利用しやすくなっています。GPLのソフトウェアを利用した場合(正確には、ライブラリとしてリンクして利用した場合)、ベンダが開発した部分もGPLで配布しなければならないという厳しい制約があります。しかし、Apache Software Licenseの場合、ドキュメントにApacheプロジェクトのソフトウェアを利用している旨を記述するだけでよく、ソースを公開する必要はありません。
(4)標準化仕様との関係
Jakartaのすべてのプロダクトというわけではありませんが、TomcatやJSTLはJavaの標準化団体であるJCPで策定されているJavaの標準仕様であるJSR(Java Specification Request)のリファレンスインプリメンテーションとして実装されており、仕様との互換性が非常に高いので、安心して利用できます。また、Commonsプロジェクトでは、Javaの標準APIにはありませんが、あると便利なライブラリを多数提供しており、標準仕様を補完しています。
(5)品質と保証
品質と保証面に関して、「オープンソースは不安だ」という話をよく聞きますが、Jakartaを含むApacheプロジェクトでは、Bugzillaと呼ばれるMozillaプロジェクトで開発されたバグ追跡システムを用いてバグを管理していて、ユーザーは誰でもこのBugzillaにバグを登録することができます。また、重要な変更を加えたり、プロダクトをリリースする際には、コミッタ(ソースコードを直接編集できる権限がある開発者)の間で投票を行うようになっています。これにより、独り善がりな開発はできないようになっています。これらにより、オープンソースプロジェクトでありながら高い品質を確保しています。
また、ユーザーをサポートするメーリングリストがプロジェクトごとに提供されているので、メーリングリストを通して、質問などを行うこともできます。ただし、質問やバグレポートに迅速に対応してもらえることもあれば、開発者が忙しい、質問の仕方が悪い(ドキュメントをよく読まずに質問している)などの理由により、きちんと対応してもらえないこともあります。「ソースがあるのだから、困ったときは自分で直せばよいのでは?」という方もいらっしゃるかもしれませんが、実際の現場では、自分の担当部の開発に精いっぱいでとてもソースの解析、修正を行っている時間がなかったり、開発しているSEやプログラマのスキルが足りず修正できない、といったような状況も少なくはありません。最近では、PostgreSQLのようにベンダが有料でサポートしているオープンソースソフトウェアも増えてきていますので、このようなサポートが受けられるようになれば、Jakartaのプロダクトももっと使いやすくなると思います。今後、有償できちんとしたサポートを行うベンダが現れることを期待したいところです。
最後になりますが、本稿に対してコメントをいただいたNTTデータの山口卓也氏にお礼を述べて第1回を終わりとしたいと思います。
次回はいよいよ活用の実際を紹介します。まずは、ビルドの手間を軽減するAntの活用について解説します。ソースコードの本数が増えるほど、ビルドの作業は煩雑になりがちで、思わぬ作業工数がかかる場合ばあります。Antでビルドの作業効率を飛躍的に向上させてみましょう。
岡本隆史(おかもと たかし)
岡山大学工学研究科修了後、(株)NTTデータに入社。文字認識ソフトウェアの研究開発を経て、Webサービス関連の研究開発に携わる。個人では、Debian GNU/Linuxの優れたメンテナンス性とほかのディストリビューションを圧倒するパッケージ数に引かれDebianを使い始めたのをきっかけに、Debianプロジェクトの開発者となる。DebianプロジェクトのStefan Gybas、Ola Lundqvistらとともに、Javaサポートの強化を行う。Jakartaに関しては、Tomcat/JMeter/ORO/Luceneなどの国際化/日本語へのローカライズ、AntのKaffe VM対応などを行っている。『Jakartaプロジェクト徹底攻略』(技術評論社)、『WEB+DB PRESS』(技術評論社)、『Java World』(IDGジャパン)、『JAVA Developer』(ソフトバンクパブリッシング)などで執筆活動を行っている。
Ja-Jakarta Projectについて
Ja-Jakartaプロジェクトでは、Jakartaプロジェクトのドキュメントの和訳やプロダクトの国際化/日本語化などを行っている。現在、プロジェクトのメンバーを募集中。Ja-Jakartaプロジェクトの活動に参加しようという方は、「Ja-Jakartaプロジェクトへの参加方法」(http://www.ingrid.org/jajakarta/site/getinvolved.html)を参照。
Copyright © ITmedia, Inc. All Rights Reserved.