オープンソースソフトウェアを活用した実用ソフト開発講座(Java編)

OSSの基本入門〜実用ソフト開発まで

「iTranslator for Java」でも多くのOSSを活用させていただいております。
主にJava開発者の方に向けて、OSSの魅力やどんな活用方法があるかをサンプルコード交えて紹介します。

- Last Update:2008/12/01

背景

いきなり本稿の核心を書きますと、「iTranslator for Java」は全て無償で入手できるソフトウェア(オープンソースソフトウェア(以後、OSSと表記)およびフリーソフト)を用いて開発しています。ソフトウェア開発には開発環境の準備など、お金がかかりそうと思われがちですが、インターネット上で公開されている様々なソフトウェアを用いることで、PCさえあれば、実用的なソフトウェアの開発も可能であるということをお伝えできればと思います。

「iTranslator for Java」の開発環境/利用しているソフトウェア

「iTranslator for Java」は製品名に含まれていますように、プログラミング言語として「Java(厳密にはJavaSE(旧称:J2SE))」を用いて開発しています。メインの開発環境としては、Java開発者の方であれば、1度は耳にしたことがあると思いますが、Java統合開発環境であるEclipseを利用しています。その他にも以下のような計36個のソフトウェア(OSS/フリーソフト)を活用させていただいています。



■開発環境・ライブラリ

ソフトウェア説明提供元ver.ライセンス
JavaSE SDKプログラミング言語Sun6.0 Update3独自
EclipseJava統合開発環境Eclipse.org3.4.1EPL
Eclipse日本語化パック言語パックNTTデータ3.4.1独自
SWTJavaで軽快に動作するGUIを生成するためのライブラリEclipse.org3.3.0CPL
JFaceJavaで軽快に動作するGUIを生成するためのライブラリEclipse.org3.3.0CPL
Visual EditorGUIデザインの容易に作成するためのツールEclipse.org1.3-RCCPL
Commons DiscoveryJavaの開発を支援するユーティリティクラスライブラリApache Software Foundation1.0ASL
Commons LoggingJavaの開発を支援するユーティリティクラスライブラリApache Software Foundation1.0ASL
Commons CodecコーデックライブラリApache Software Foundation1.3.0ASL
Commons PoolオブジェクトプールApache Software Foundation1.2ASL
Commons LangJavaの開発を支援するユーティリティクラスライブラリApache Software Foundation2.0ASL
Commons DBCPJavaの開発を支援するユーティリティクラスライブラリApache Software Foundation1.2.1ASL
Log4Jログの出力および形式を制御するライブラリApache Software Foundation1.2.8ASL
Apache AxisJavaでWebサービスを呼び出すライブラリApache Software Foundation1.3ASL
LombozJavaEEの開発補助ライブラリObjectWeb3.0.1CPL
POIJavaでOfficeファイル(Excel)の制御するライブラリApache Software Foundation3.0-rc4-20070503ASL
iTextJavaでPDFを生成するライブラリBruno Lowagie / Paulo Soares両氏1.3LGPL
JFreeChartJavaでグラフを生成するライブラリDavid Gilbert氏1.0.6LGPL
Java MailメールライブラリSun1.4.1独自
JavaBeans Activation FrameworkJavaの開発を支援するユーティリティクラスライブラリSun1.0.2独自
JSmoothJavaのクラスファイルをWindowsのEXE形式にラッピングするツールJSmooth project0.9.9-7GPL
PropertiesEditorPropertyファイルの作成を支援するツール(マルチバイト文字)ちょま吉氏4.8.2GPL
ResourceBundle EditorPropertyファイルの作成を支援するツール(多言語ロケ−ル)Essiembre Consultant0.7.7LGPL
MergeDocEclipse上のJavaDocを日本語化するツールEssiembre Consultant2.1.4LGPL
Apache AntJavaのビルド支援ツールApache Software Foundation1.7.0ASL
Clay CoreDBモデリングツールアッズーリ1.4.2独自
GEFグラフィカルエディティングフレームワークEclipse.org3.4.1EPL
HibernateO/RマッピングツールHibernate Group2.1.8LGPL
MiddlegenIDEHibernate開発支援ツールUltimania Organization1.3.3BSD
HSQLDBDBサーバHypersonic SQL Group1.7.3独自
JDripJavaインストーラ作成ツール大金システム設計事務所1.0.7独自

■ドキュメント作成

HelpましんCHTMLの作成支援ツールうな氏2.4.6独自
Cappuccino画面キャプチャツールTonTon氏1.9.0独自

■ソース構成管理

ソフトウェア説明提供元ver.ライセンス
SubversionSVNサーバCollabNet, Inc.1.4.5BSD
TortoiseSVNSVNクライアントCollabNet, Inc.1.4.5BSD

■プロジェクト管理

ソフトウェア説明提供元ver.ライセンス
Trac月プロジェクト管理ツールTakashi Okamoto氏1.5.1独自

オープンソースソフトウェア(OSS)のすすめ

上記のソフトウェア含めて、世の中には多くの有益なOSSがありますので、ソフトウェア開発において、これを活用しない手はないと思います。OSSの代表的な特徴を以下にまとめておきます。
  1. 基本的に無料で利用可能である
    • 大半は無料で利用できます(一部、サポートのみ有料という製品もあります)。
  2. 高機能・高品質のものが多い
    • 無償ゆえに悪いイメージが先行しがちですが、有償の商用製品に劣らず優れたものが多い
  3. ソースが公開されている
    • OSS利用時に問題に遭遇した場合もソースが公開されているので、自ら修正して対処することも可能です。
  4. ライセンスの制限が緩い
    • 実際は製品ごとにライセンス形式は異なるので個別に把握する必要がありますが、多くは自由に利用可能となっています。

オープンソースソフトウェア(OSS)の利用時の注意点

OSSのメリットに関して述べましたが、利用に際して注意すべきこともあります。OSSでは製品ごとに利用時に適用される様々なライセンス体系があります。OSSのライセンスの解釈を誤ると、特に企業において商用利用した場合に、信用を失うなど深刻な問題につながることもあります(国内・国外問わず裁判ざたになっている問題も少なくありません)。本稿の冒頭で、「iTranslator for Java」で利用しているOSS一覧において、ライセンス欄に「ASL」「CPL」「GPL」「LGPL」と紹介しましたが、それぞれがいったいどのようなライセンスなのかを解説します(*1)。

GPL (General Public License)

 GPLのもとに配布された著作物Aを改変して派生物A'を作成した場合、A'を再配布するときにはGPLで公開しなければならない(ソースの公開義務あり)とされている。また、Aを改変することなく、A’に1ライブラリとしてAを含めて(静的・動的リンクいずれも)再配布する場合でも、A'にはGPLを適用しなければならない。このようにGPLとして配布された製品を用いると、常に派生物にもGPLが適用されソースコードの公開が義務付けられるため(コピーレフトライセンス)、一般的には商用利用しづらいライセンスとされている(GPLはOSSの元祖とも言える発想でソフトウェア技術流通に大きく貢献したもので、批判するつもりはありません)。ただしA'にAが含まれない場合(Aが変換ツールの場合など)は、'A'にGPLを適用しなくても問題ないと解釈されている。

LGPL (GNU Lesser General Public License)

 LGPLのもとに配布された著作物Aを改変して派生物A'を作成し、A'を再配布するときにはA'にもLGPLを適用しなければならない。ただしAを改変することなく、A'に1ライブラリとしてAを含めて再配布する場合は、A'にLGPLを適用しなくても問題ないと解釈されている。

ASL (Apache License)

 Apache Software Foundation傘下の製品に主に適用されているライセンスで、現在バージョンが2つ(1.1と2.0、最近の製品はほとんど2.0が利用されている)ある。ASLのもとに配布された著作物Aを改変したかしないに関わらず派生物A'を作成し、A'を再配布するときでもA'にはASLを適用しなくてもよいとされている。ただしver.1.1の場合、条件として再配布する場合は、オリジナルの著作者の紹介が必須である(ver.2.0は本制約はなし)。

CPL (Common Public License)

 Eclipse.org傘下の製品に主に適用されているライセンスである。現在は、CPLでなく、新たにCPLの代わりに制定されたEPL(Eclipse Public License)が主流となっている。CPLのもとに配布された著作物Aを改変して派生物A'を含む製品Xを作成し、Xを再配布するときにはXのうち改変部分に当たるA'のソースコードは開示する必要があるが、その他の箇所に関しては同義務は発生しない。ただしAを改変することなく、Xに1ライブラリとしてAを含めて再配布する場合は、全くソースコードの開示義務は発生しない。

(*1:OSSのライセンスは、各プロダクトに同梱されている「原文」のみが有効となります。上記の解説は一般的な解釈の一つにしか過ぎません。参考にされる場合は、自己責任でご参照ください。)

オープンソースソフトウェア(OSS)を用いたサンプル開発

ここからは、OSSを活用したJavaのサンプルアプリ開発に触れていきます。
以降は、現在準備中です。随時公開していきますので、お待ちください。

  1. 「SWT」を用いたGUIプログラミング
  2. PDFファイル作成(by iText)
  3. Excelファイル作成(by POI)
  4. Webサービス呼び出し(by Axis)
  5. グラフ描画(by JFreeChart)
  6. 未定

本稿のサンプル動作環境

本稿を紹介していただいたWebサイト

準備中

その他