目次
はじめに
仕事でJasperReportsを使う案件に携わりました。
JasperReportsのライセンスは「LGPL」です。ただJasperReportsはiTextのjarファイルも使用します。このiTextのライセンスが現在は「AGPL」ライセンスになっており、古い「LGPL」ライセンスのiTextには問題が発覚していたりと、複雑になっていました。
スポンサーリンク
本記事では、JasperReportsそしてiTextとのライセンス問題について調べた事を紹介しています。
JasperReportsとは
JasperReportsとは、帳票デザインツール(Jaspersoft Studio)を使用して簡単に帳票を出力する事ができるライブラリです。
PDFファイルを出力する際、iTextなどのライブラリを使用すると、ソースコード内に文字を配置する座標を指定する必要あり、表示イメージも動かして見るまでよく分かりません。
そしてソースコードは複雑になりやすい傾向にあります。
しかしJasperReportsを使用する場合は、Jaspersoft Studioという帳票ツールでPDFイメージをデザインできるので、比較的簡単にPDFファイルを出力する事が可能です。
JasperReportsを使う場合は、主に下記のjarファイルが必要です。(他にも関連するjarファイルがありますが、ここでは省略しています)
jarファイル名 | 説明 |
jasperreports-*.*.*.jar | JasperReportsを使用する為のjarファイル |
itext-2.1.7.js*.jar | JasperReportsが使用するiTextのjarファイル |
iTextAsian.jar | 日本語を表示する為に必要なフォントファイル |
※*はバージョンです。
iTextのライセンス問題
iText2系~iText4系は商用利用をお勧めしていない
iTextはiText5系からライセンスを「AGPL」に変更しています。
その理由が下記のiText公式サイトに掲載されていました。
【質問】iText 2.1.7 / iTextSharp 4.1.6以前は商業的に使用できますか?
【回答(※抜粋)】フリーモデルの下の古いバージョンのiTextには、他の人々の著作権または知的財産権を侵害するコードの断片が含まれている可能性があります。 iText Software Groupは、バージョン5.1の時点で、これらすべてのケースの識別と排除に多大な投資をしてきました。これが、現在有料の商用バージョンとなっている理由の1つです。あなたの会社が著作権または知的財産権の侵害に対して責任を負う可能性があるため、商用プロジェクトでは5.1より前のバージョンの使用をお勧めしません。
※翻訳しているため、表現が正確ではない可能性があります。正しくは出典のURLを参照してください。
上記のサイトには、iText2系~iText4系には、著作権または知的財産権を侵害するコードの断片が含まれている可能性があり、商用プロジェクトでは5.1より前のバージョンの使用をお勧めしていないようです。
スポンサーリンク
要するにiText2系~iText4系は「LGPL」ライセンスとしては、不適切なコードが存在している可能性があるということです。
そのため、iTextは5系からライセンスを「AGPL」に変更しています。
JasperReportsは問題対象であるiText2系を使用している
ここで問題になるのは、JasperReportsが使用しているiTextが問題になっているバージョン2系を使用している所です。
この問題については、JasperReports公式サイトに質問が投稿されていました。
【質問(※抜粋)】JasperReports CommunityはLGPLとしてライセンスされていますが、ライセンスの問題があることが知られているiText 2.1.7に依存しています。
【回答(※抜粋)】iText 2.1.7のカスタムバージョンを使用しています。これは、いくつかの問題を修正し、特定の種類のフォントの動作方法(合字)を改善したためです。オリジナルのiText 2.1.7がリリースされたLGPL / MPLの条件の下でこれらの修正を行いました。
※翻訳しているため、表現が正確ではない可能性があります。正しくは出典のURLを参照してください。
出典:https://community.jaspersoft.com/questions/1086626/jasperreports-lgpl-license-and-itext-217
上記のサイトでは、iText 2.1.7をカスタマイズして問題個所を修正しているので問題はないと記載されています。確かに通常のiTextは「itext-2.1.7.jar」ですが、JasperReportsが使用しているのは「itext-2.1.7.js*.jar」(js*はバージョン)とitext-2.1.7をカスタマイズして*部分のバージョンを上げて運用しているようです。
JasperReportsとiTextのライセンスについて
JasperReports6.0.0~6.0.3は「AGPL」であるiText5系を使用している
JasperReports5系では「LGPL」ライセンスだったItext2系をしていました、しかしJasperReports6.0.0~6.0.3は「AGPL」ライセンスであるiText5系を使用しているのです。
この問題に対しても、JasperReportsの公式サイトに掲載されていました。
Jaspersoft製品は、iText Softwareとの契約書の署名者に従って、LGPLの下でiText 5.5を使用および頒布します。
この契約では、iTextの機能に直接アクセスするのではなく、Jaspersoft APIコールを介してアクセスする限り、LGPLの条項が適用されることが規定されています。
あなたがJaspersoftの機能を通してiTextを使っている限り、つまりあなたがレポートをPDFにエクスポートしている限り、あなたは私たちがiText 5.5の下に出荷しているLGPLの用語に問題はありません。
※翻訳しているため、表現が正確ではない可能性があります。正しくは出典のURLを参照してください。
出典:https://community.jaspersoft.com/questions/847229/jasperreports-6-itext-5-affero-licensing-catch
上記サイトには、Jaspersoft製品を使っている場合のみ、iText5.5は「LGPL」ライセンスとして使用できると記載されています。
スポンサーリンク
JasperReports6.0.4から再びiText2系を使用している
JasperReports5系は「LGPL」ライセンスだったItext2系を使用し、JasperReports6.0.0~6.0.3は「AGPL」ライセンスだったiText5系を使用していました。
そしてなぜか、JasperReports6.0.4から再びiText2系に戻っているのです。正直混乱です・・・。
この問題についても、JasperReportsの公式サイトに掲載されていました。
【質問】なぜjasperreport v6.0.4がitextをダウングレードするのですか?
【回答】当時のJaspersoftとiTextの間の合意のおかげで、本当に特別な例外がありました。
しかしTibcoがJaspersoftを買収したため、MPL 1.1の下でiTextにライセンスされた法的問題を回避するため、現在の形で契約を継続することを保証することはできませんでした。
TibcoとiTextの間で再び合意に達した場合は、コミュニティからの利益がすぐに得られるようにします。 それまでは、Mozilla Public License 1.1の下で配布されているiText 2.1.7に戻ってきました。
※翻訳しているため、表現が正確ではない可能性があります。正しくは出典のURLを参照してください。
出典:https://community.jaspersoft.com/questions/853221/why-jasperreport-v604-downgrade-itext
上記のサイトより、Jaspersoft社が買収されたため、買収前のiTextとの契約が保証できなくなり、元のiText2系を使うように戻したと掲載されていました。確かにJaspersoft社は、2014年4月28日に米TIBCO Softwareに買収され、米TIBCO Softwareの部門になっていました。
終わりに
JasperReportsを使用する時のiTextのライセンスについて調べた結果をまとめてみました。
iTextのライセンスが変わっており、JasperReportsが使用するiText2系には問題が見つかっていたため、JasperReportsはライセンス的に大丈夫なのか?という不安な気持ちになりましたが、結局「LGPL」ライセンスである、JasperReportsは問題なく使えそうという結果で安心しました。