#! /bin/blog

実行形式のブログです。というか、ほぼポエムです。

Adobe XMP Toolkit SDKをiOSアプリに組み込んでみた

画像ファイルに埋め込まれているメタ情報の中に、XML形式で格納されたデータがあります。
ざっくり言えば、ExifXML版でしょうか。
XMPというAdobeによって標準化されたフォーマットなんだそうです。

iOSアプリのための、このデータを扱うOSSのライブラリを探してみたところ、Adobe XMP Toolkit SDKというのがありましたので、組み込みんでみました。

詳細は、以下、githubを参照してください。

github.com

正直、スタティックライブラリを生成するまでは、付属のドキュメントに書かれていたので簡単でしたが、それをアプリに組み込むところについては、これといった情報も見つからず、苦労しました。

ところで、画像ファイルのメタ情報は、iOS SDKCore Imageで読み書きできますが、メタ情報が完全じゃなかったり、画像自体が再エンコードされてしまうことは、ご存知でしょうか。

Core Imageを使用せずに、メタ情報を取得する方法の一つとして、Adobe XMP Toolkit SDKを候補にしてみてはいかがでしょうか。

尚、Adobe XMP Toolkit SDKは、Exifを取得できません。

Exifを取得するには、libExifというライブラリがあります。
さまざまなOSのディストリビューションに組み込まれて、なかなか枯れたライブラリです。

GitHub - ryu1/iOS-LibExif

私が動作確認した結果、iOSにアプリに組み込めるのですが、Exifを書きこむと、XMP情報が削除されてしまう問題が発覚しました。

どうことかというと、XMPExifも、JPEGファイル上のAPP1というレイヤーに属しています。
これが変な話しで、XMPExifの両方がある場合、APP1のレイヤが2つだぶった状態になるのです。
libExifは、APP1が1つのみという思想でつくられいるため、XMP情報が書き込まれているAPP1は削除され、Exifが書き込まれているAPP1が残るという現象が発生してしまいました。(もう頭が痛くなってきましたね。)

libExifは、いまはもう、メンテされていないようなので、今後、改善されることはないでしょう。

そんななか、救世主となるのが、Exiv2 というライブラリです。

www.exiv2.org

ExifXMPの両方に対応しているスグレモノです。

これが実は、私の大本命だったです。

でも、iOSアプリに組み込む方法がわからなかった。教えてくれぇ。。。

増田 亨さんが待望の書籍化


増田さんは、あの難解なDDDを実践しているということで、
以前から、リスペクトしていた人です。

勉強会に参加できませんでしたので、スライドシェアをずっと見てました。

亨 増田 presentations | SlideShare

もちろん書籍も予約しましたよ。

内容は、間違いないに決まってる。


増田さん以外にも、DDDに取り組んでいる方は、いらしゃいます。


かとじゅんさんであったり、

blog.j5ik2o.me


都元ダイスケさんであったり、(僕は、昔、都元さんのhatena blogの読者でした。)

sssslide.com


僕には、まだ雲の上の存在ですが、アーキテクチャを考えるとき、参考にさせて頂いてます。

UPnPのライブラリを探して

ライブラリって探すとあるもんですね。
自分で、実装するときの参考になりそうです。

Cling

Android(Java)のライブラリ。

Cling - Java/Android UPnP library and tools

ドキュメントがしっかりしてる印象。

クラス図は、参考になりますね。

http://4thline.org/projects/cling/core/manual/img/api_overview.png

http://4thline.org/projects/cling/core/manual/img/metamodel_overview.png

mupnp

cyber garage社のライブラリで、Objective-C製のもの。

mupnp/wrapper/objc/mUPnP at master · cybergarage/mupnp · GitHub
github.com