2010年4月12日月曜日

iPhone用のEXIFライブラリはライセンスがキビシイ!

iphone-exifはGPLだから使いづらい

iPhoneのアプリでEXIFを扱うライブラリはあるのかなぁと思って調べてみたら、やはりあった。「iphone exif」のキーワードでGoogle検索するとトップに出てくる。
iphone-exif - Project Hosting on Google Code

非常に使いやすそうなライブラリなのだが、いかんせんライセンスが「GNU General Public License v2」だ。これは独占的なプログラムには利用できないライセンスのはずだ。つまり、自分が書いたソースコードを公開しない場合は利用できない。

GNU GPLに関して良く聞かれる質問 - GNU プロジェクト - フリーソフトウェア財団 (FSF)

・・・私の独占的なシステムに、GPLで保護されたソフトウェアを組み入れたいのですが、それは可能ですか?
GPLで保護されたソフトウェアを独占的なシステムに組み入れることはできません。・・・

ということで、やはりダメだろう。


iphone libexifもLGPLなので使いづらい

というわけで、他の同様のライブラリはないかと探したところ、もう一つ見つけた。
Iphone exif how i hate you — Paper Bag

Stuartさんはiphone-exifがGPLライセンスであることをお怒りのようだ。そこで「libexif」というLGPLライセンスのCのライブラリをiPhone用にビルドしたそうだ。そのXcodeプロジェクトはここでダウンロードできる。
libexif-iphone

いや、ちょっと待て。LGPLライセンスのライブラリは独占的なプログラムには動的リンクしか許しておらず、つまり静的リンクを許していないはずじゃなかったか?そしてiPhoneのプログラムは静的リンクが必要なはずだ。

追記10.04.13:
「iPhone OSは動的リンクを許していないはず」などという曖昧なことを書いていたのが気になって調べたら、やはり明記されていた。

iPhone OS テクノロジーの概要」(PDF P14)
・・・フレームワークのコードやダイナミックライブラリをアプリケーションに組み込むには、プロジェクトをビルドする際にそのコードを静的にアプリケーションの実行可能ファイルにリンクする必要があります。・・・

GNU 劣等一般公衆利用許諾契約書 - GNU プロジェクト - フリーソフトウェア財団 (FSF)

・・・
5. 『ライブラリ』のいかなる部分の派生物も含まないが、それとコンパイルされるかリンクされることにより『ライブラリ』と共に動作するようデザインされているプログラムは、「『ライブラリ』を利用する著作物」と呼ばれる。そのような著作物は、単体では『ライブラリ』の派生著作物ではないので、この契約書の範囲外に置かれる。

しかし、「『ライブラリ』を利用する著作物」に『ライブラリ』をリンクして実行形式を作成すると、それは「『ライブラリ』を利用する著作物」ではなく、『ライブラリ』の派生物となる(なぜならそれは『ライブラリ』の一部を含んでいるから)。そこで、実行形式はこのライセンスで保護される。
・・・

ということで、やっぱりダメだろう。


もちろん、事前に標準ライブラリが無いか調べたが無いようなので、これは・・・結構大変なごた。

10.04.15追記:
琴線探査: iPhone OS4.0はEXIFサポートだ! 悶々とする日々は終わった。

しかし、なんでこう、GPLってわかりにくいんだろう。例えば、上の条項はこれだけで十分ではないだろうか。

「動的リンクの場合はソースコードを公開する義務はありません。静的リンクの場合はソースコードを公開する必要があります。」