今まさに広まりつつあるデジタルアーカイブの国際規格IIIFの導入の仕方

前回の記事では、IIIFについて、主にユーザ側の視点から、良くなりそうなことを簡単にご説明しました。今回は、IIIFの導入の仕方についてちょっとご紹介したいと思います。

 

一昨日開催された人文科学とコンピュータ研究会で、10分だけ、IIIFをご紹介する機会をいただいたので、研究者としてこれと付き合うとしたらどういうポイントがあり得るか、という視点からちょっとご紹介をしました。その中で使ったスライドの図を、まずは以下に掲載します。

 

f:id:digitalnagasaki:20160516015416j:plain

 

要するに、

1.対応画像サーバソフトをインストール・設定する

2.メタデータ等をPresentation APIに従ってJSON-LDに変換する

という2点ができればOKです。では一つずつ下記で検討していきましょう。

 

1.対応画像サーバソフトをインストール・設定する

 まずは、画像にアクセスできるサーバマシン上に、対応画像サーバソフトをインストールして設定します。ただし、これに際しては、場合によっては、画像形式をTiled TIFF画像形式に変換しなければならないことがあります。特に、画像がかなり大きかったり、アクセス数がかなり多く見込まれる場合などです。そこで、ここでは2つのやり方を見ていきましょう。

 

1-1. Loris IIIF Imageサーバ:画像が大きくなくてアクセス数もそれほど多くない場合

 画像サイズが1MB~数MBで、アクセス数もそれほど多くなければ、サーバマシンのスペックにもよりますが、Loris IIIF Imageサーバという、Python製のサーバで大丈夫ではないかと思います。また、実験的に導入してみようという場合も、とりあえずはこれで十分かと思います。

 インストールはPythonにある程度通じていればなんということはないと思うのですが、ちょっとややこしいのが画像の置き場のディレクトリ構成です。設定ファイル loris2.conf の中で

src_img_root = '/opt/imagefiles/'

とした場合、

/opt/imagefiles/NIJL0008/NA4-0644/NA4-0644-00007.jpg

という画像が、下記のURLでアクセスできることになります。

http://www2.dhii.jp/loris/NIJL0008/NA4-0644/NA4-0644-00007.jpg/full/full/0/default.jpg

 (初めてインストールした時はこの関係がよくわからなくて、インストールに成功したかどうかすらよくわからず、ちょっと時間をつぶしてしまいました)

 

1-2. IIP Image サーバ:画像が大きかったりアクセスが多そうな場合

 一方、ファイルサイズが大きい場合(目安は10MB~?)、あるいは、アクセスがかなり多く見込まれる場合、IIP Image Serverを使っていただいた方が良いかもしれません。こちらはインストールがちょっとややこしいので、公式サイトのインストールガイドに加えて、私が書いたインストールガイドもご覧ください。特にCentOS環境なら、私のインストールガイドだけでもインストールできると思います。Debian系の場合も、注意点(バイナリをインストールしてもIIIF対応バージョンがインストールされない、等)は共通するところがあるようですので、一応目を通しておいていただくとよいと思います。

 こちらの場合は、上記のインストールガイドにも書いてあるように、タイル形式画像を用意する必要があり、お金がなければTiled Tiffしか選択肢がないので、結果的に、ちょっとストレージをたくさん必要とすることになります。この点、ちょっと注意が必要です。

 

さて、画像サーバのインストール・設定が終わったら、次はPresentation APIへの対応、つまり、JSON-LDファイルの作成です。

 

2.メタデータ等をPresentation APIに従ってJSON-LDに変換する

 これは特に難しいことはありません。既存のメタデータと、画像の入っているディレクトリがあれば、あとは、Presentation APIに従って、JSON-LDファイルを作っていくだけです。ただし、ここで、上記のIIIF対応画像サーバによって使えるようになる Image APIに準拠した画像のURLが必要になりますので、手順としては、画像サーバインストールが先に必須になります。

 ファイルの作り方については、たとえば私の場合、PHPで、同内容の連想配列を作ってから

json_encode(連想配列, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT)

などとしています。「とりあえずIIIF対応ビューワに読み込ませて動作する」というレベルのものについてはこちらを参考にしてみてください。このPresentation API準拠のJSON-LDファイルが IIIF Manifest等と呼ばれるものになります。ここでは「マニフェストファイル」と呼んでおきましょう。

 

 基本的な考え方としては「キャンバス」を集めたものが「マニフェスト」です。このマニフェストが一つの本とか作品等にあたります。

 マニフェストから上位の概念を見ていくと、マニフェストを集めたものが「コレクション」で、コレクションはさらに集めて上位の「コレクション」とすることもできます。コレクションの例はたとえばこんな感じです。

 一方、マニフェストから下位の概念を見ていくと、「キャンバス」が、画像やアノテーション等を載せるための仮想的な概念(コンテナ)として用意されています。この「キャンバス」の順番を決める「シーケンス」があり、さらに、キャンバスを「章」のような形で少しずつまとめていく「ストラクチャー」も用意されています。ただし「ストラクチャー」については、きちんと実装されているビューワはハーバード大学版Miradorくらいしかみたことがありません。先週この開発者にお会いしたので聞いてみたところ、近々Miradorの正式版にもこの機能が取り込まれるとのことでした。

 

 ちなみに、私は画像上にアノテーションを付ける目的があってIIIFとMiradorにちょっと入れ込んでおりまして、ごく近いうちに、その機能を活用した画像データベースを公開する予定です。アノテーションの付け方は、前回の記事にも書きましたが、たとえばこういうマニフェストファイルを作って(このファイル中の http://www2.dhii.jp/loris/NIJL0008/NA4-0644/p5 の「otherContent」に注目してください)、これに対してアノテーションのファイルはこんな感じになります。IIIF対応画像ビューワMiradorでの実際の利用例はこちらです。Media Fragments URIがここできちんと活用されるようになっていることに感涙することしきりです。

 

f:id:digitalnagasaki:20160428184604j:plain

 

 

 

<実際にマニフェストファイルをIIIF対応ビューワに読み込んで確認してみましょう>

 

さて、JSON-LDによるマニフェストファイルができたら、あとはこれをビューワに組み込むだけなのですが、代表的なビューワは、いずれもマニフェストファイルのURLを入力すればそのマニフェストに含まれる画像やメタデータを表示してくれるようになっており、さらにMiradorに至っては、上記のようなアノテーションまでも表示してくれます。

  マニュフェストファイルをビューワに読み込ませる方法ですが、Universal Viewerはリンク先をみていただけば一目瞭然で説明の必要はないと思います。あるいは、公式サイトでは、いきなりマニフェストファイルのURLの入力を要求されるようになっています。ただしこちらは、アノテーションの表示がまだできないようです。Universal Viewerはマルチメディアコンテンツを色々表示できるように拡張に取り組んでいるそうです。

 Miradorの方は微妙にわかりにくく説明を必要とすると思うので、一応、下記に説明をしておきます。たとえば、こちらの例の場合では、画面の左上の方に用意されいているアイコンをクリックすると…

f:id:digitalnagasaki:20160516030230p:plain

 

下記のようなメニューが現れますので、「新しいオブジェクト」を選択します。

 

f:id:digitalnagasaki:20160516030231p:plain

 

そうすると、右上に「URLで新規オブジェクト追加」という項目が表示されて入力欄が出ますので、ここにマニフェストファイルのURLを入力して「Load」をクリックします。そうすると、そのマニフェストファイルのコンテンツが表示されるようになっています。

f:id:digitalnagasaki:20160516030234p:plain

 

 ここまでできたら、IIIF対応はできた、と言っても大丈夫ではないかと思います。

 

 

 

さて、せっかくIIIF対応マニフェストファイルを用意できたのですから、自前でビューワを用意してそこに読み込ませたい、という気持ちが出てくるのは当然かと思います…が、それはまた次回に、ということで。