オープンソースソフトウェアを活用した実用ソフト開発講座(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 | プログラミング言語 | Sun | 6.0 Update3 | 独自 |
Eclipse | Java統合開発環境 | Eclipse.org | 3.4.1 | EPL |
Eclipse日本語化パック | 言語パック | NTTデータ | 3.4.1 | 独自 |
SWT | Javaで軽快に動作するGUIを生成するためのライブラリ | Eclipse.org | 3.3.0 | CPL |
JFace | Javaで軽快に動作するGUIを生成するためのライブラリ | Eclipse.org | 3.3.0 | CPL |
Visual Editor | GUIデザインの容易に作成するためのツール | Eclipse.org | 1.3-RC | CPL |
Commons Discovery | Javaの開発を支援するユーティリティクラスライブラリ | Apache Software Foundation | 1.0 | ASL |
Commons Logging | Javaの開発を支援するユーティリティクラスライブラリ | Apache Software Foundation | 1.0 | ASL |
Commons Codec | コーデックライブラリ | Apache Software Foundation | 1.3.0 | ASL |
Commons Pool | オブジェクトプール | Apache Software Foundation | 1.2 | ASL |
Commons Lang | Javaの開発を支援するユーティリティクラスライブラリ | Apache Software Foundation | 2.0 | ASL |
Commons DBCP | Javaの開発を支援するユーティリティクラスライブラリ | Apache Software Foundation | 1.2.1 | ASL |
Log4J | ログの出力および形式を制御するライブラリ | Apache Software Foundation | 1.2.8 | ASL |
Apache Axis | JavaでWebサービスを呼び出すライブラリ | Apache Software Foundation | 1.3 | ASL |
Lomboz | JavaEEの開発補助ライブラリ | ObjectWeb | 3.0.1 | CPL |
POI | JavaでOfficeファイル(Excel)の制御するライブラリ | Apache Software Foundation | 3.0-rc4-20070503 | ASL |
iText | JavaでPDFを生成するライブラリ | Bruno Lowagie / Paulo Soares両氏 | 1.3 | LGPL |
JFreeChart | Javaでグラフを生成するライブラリ | David Gilbert氏 | 1.0.6 | LGPL |
Java Mail | メールライブラリ | Sun | 1.4.1 | 独自 |
JavaBeans Activation Framework | Javaの開発を支援するユーティリティクラスライブラリ | Sun | 1.0.2 | 独自 |
JSmooth | JavaのクラスファイルをWindowsのEXE形式にラッピングするツール | JSmooth project | 0.9.9-7 | GPL |
PropertiesEditor | Propertyファイルの作成を支援するツール(マルチバイト文字) | ちょま吉氏 | 4.8.2 | GPL |
ResourceBundle Editor | Propertyファイルの作成を支援するツール(多言語ロケ−ル) | Essiembre Consultant | 0.7.7 | LGPL |
MergeDoc | Eclipse上のJavaDocを日本語化するツール | Essiembre Consultant | 2.1.4 | LGPL |
Apache Ant | Javaのビルド支援ツール | Apache Software Foundation | 1.7.0 | ASL |
Clay Core | DBモデリングツール | アッズーリ | 1.4.2 | 独自 |
GEF | グラフィカルエディティングフレームワーク | Eclipse.org | 3.4.1 | EPL |
Hibernate | O/Rマッピングツール | Hibernate Group | 2.1.8 | LGPL |
MiddlegenIDE | Hibernate開発支援ツール | Ultimania Organization | 1.3.3 | BSD |
HSQLDB | DBサーバ | Hypersonic SQL Group | 1.7.3 | 独自 |
JDrip | Javaインストーラ作成ツール | 大金システム設計事務所 | 1.0.7 | 独自 |
■ドキュメント作成
Helpましん | CHTMLの作成支援ツール | うな氏 | 2.4.6 | 独自 |
Cappuccino | 画面キャプチャツール | TonTon氏 | 1.9.0 | 独自 |
■ソース構成管理
ソフトウェア | 説明 | 提供元 | ver. | ライセンス |
Subversion | SVNサーバ | CollabNet, Inc. | 1.4.5 | BSD |
TortoiseSVN | SVNクライアント | CollabNet, Inc. | 1.4.5 | BSD |
■プロジェクト管理
ソフトウェア | 説明 | 提供元 | ver. | ライセンス |
Trac月 | プロジェクト管理ツール | Takashi Okamoto氏 | 1.5.1 | 独自 |
オープンソースソフトウェア(OSS)のすすめ
上記のソフトウェア含めて、世の中には多くの有益なOSSがありますので、ソフトウェア開発において、これを活用しない手はないと思います。OSSの代表的な特徴を以下にまとめておきます。- 基本的に無料で利用可能である
- 大半は無料で利用できます(一部、サポートのみ有料という製品もあります)。
- 高機能・高品質のものが多い
- 無償ゆえに悪いイメージが先行しがちですが、有償の商用製品に劣らず優れたものが多い
- ソースが公開されている
- OSS利用時に問題に遭遇した場合もソースが公開されているので、自ら修正して対処することも可能です。
- ライセンスの制限が緩い
- 実際は製品ごとにライセンス形式は異なるので個別に把握する必要がありますが、多くは自由に利用可能となっています。
オープンソースソフトウェア(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のサンプルアプリ開発に触れていきます。以降は、現在準備中です。随時公開していきますので、お待ちください。
- 「SWT」を用いたGUIプログラミング
- PDFファイル作成(by iText)
- Excelファイル作成(by POI)
- Webサービス呼び出し(by Axis)
- グラフ描画(by JFreeChart)
- 未定
本稿のサンプル動作環境
- OS(1): Windows: Windows98/ME/2000/XP
- OS(2): Linux: Red Hat Linux 9 (GTK/Motif)
- OS(3): Solaris: SPARC Solaris 9 (Motif)
- Library: Java 2 Standard Edition JRE 1.3x or 1.4x or 1.5.x(5.0.x) ※1.4.x推奨