IIIF Manifestを書く:会津日新館細江図を題材に

# はじめに

本演習の目的は，すでにIIIF Image APIで公開されている画像に対して，最初から最後まで通しで，IIIF Manifestをとにかく書いて，IIIF Manifestの全体像を掴むことである。例えば，次のURLで示す IIIF Manifest https://www.dl.ndl.go.jp/api/iiif/2542527/manifest.json ，これが，読めるようになる，書けるようになることを目的としている。この演習を最後までやり通せば，これにかなり近いものを作成することになる(成果物：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff )。また，便利なツール（[IIIF Manifest Editor](https://digital.bodleian.ox.ac.uk/manifest-editor/)，IIIF ビューア，jsonプラグインなど）を使って体験してみることも目的の一つである。

この文書を使って，3時間ワークショップをする・自習しようと思えばできなくもないというイメージで執筆した。例えば，図書館が自館の資料を画像化してIIIFで公開することを検討している際に，ちょっと手を動かしてIIIF Manifestについて理解してみたいといった用途に使えるようにということを意識した。

これは，2019年4月13日に行われたGLAMtech Vol.7 https://glamtech007.peatix.com/ で体験した内容を元に筆者なりに復習も兼ねて整理したものである（とはいえ，かなり筆者のアレンジが入っている）。特に，当日は講師の中村氏が用意したOmekaサービスも使って，自身が用意した画像を使った演習であったが，それは使わずにできるようにアレンジを加えた。

注意1: IIIF とは何か？IIIF Manifestとは何か？といったIIIFに関するもっとも基本的なことは他の文書 [^iiifdoc] に譲る。この文書ではあくまでも演習として手を動かす部分に着目したものとしている。

注意2：演習に必要な項目の値だけをピックアップして入力しているので，IIIF Manifestを公開する為に最低限必要な項目のすべてを入力をしているわけでないことに注意が必要である。

注意3：あくまでも体験演習として必要なことなのでやっている部分がある（公開時には，やらないであろうことが含まれる）ので注意すること。例えば，今回は，作成したIIIF Manifest は，演習の都合上，エディタが指定したWebサイトにアップロードして使うことにしている。しかし，実際に公開する際には，公開用のWebサーバーにアップロードすることになるなど。

# 準備：jsonファイルを見やすくする

IIIF Manifestは，jsonファイルである。この演習では何度もjsonファイルをみることになるので，まずは，jsonファイルを見やすく表示してくれる環境を整えることにする。ウェブブラウザのChromeにJSONファイルを見やすくするplug-inをインストールすることで実現する。

- ウェブブラウザのChromeをインストールする
    - https://www.google.com/intl/ja_ALL/chrome/
- JSONファイルを見やすくするplug-inをインストールする
    - オススメ：JSON Viewer - Google Chromeの拡張機能　 
    - https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh?hl=ja
- jsonファイルのURL （例： https://www.dl.ndl.go.jp/api/iiif/2542527/manifest.json ）にアクセスして，行番号が表示されたり，色がついたり，インデントがされたりして見やすくなっていることを確認する ![aizu-json-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/fb3041f5-e4a6-67ce-8b03-5eeb8843ac0f.png)
- 参考：FirefoxではPlag-inをインストールせずとも標準の状態で以下のように表示されるので，こちらの方が便利な時もある。今回はChromeを使って演習を進めることにする。
![aizu-json-firefox_trim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/81af2ea1-8b0b-e9a8-c0c5-9bc796d1a33a.png)

# 題材

国立国会図書館デジタルコレクションにある：
**「会津日新館細江図」というページ数がさほど多くない（3コマ分）の和書**を題材に，
IIIF Manifestを試しに書いてみることにする。

## 題材の概要

まずは，どんな題材かの概要を紹介する。

- 和書
- タイトル：会津日新館細江図
    - ヨミ：アイズ ニッシンカン ホソエズ
- 全3コマ分のカラー画像あり（カラースケール，定規あり）
- 表紙：１コマ
- 本文：見開きで1コマ
- 裏表紙：1コマ
- 著作権：保護期間満了

**題材（「会津日新館細江図」）の国立国会図書館デジタルコレクションのURI**
http://dl.ndl.go.jp/info:ndljp/pid/2542527
![NDL-digicore-aizu-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/7cfae4b4-591e-1f4d-93af-3bd8105b5efa.png)


**題材のIIIF ManifestのURI**
https://www.dl.ndl.go.jp/api/iiif/2542527/manifest.json

上に示すURLで表示されるようなjsonを書ける・読めるようになるイメージで進める。

このURIは，左下のIIIF ManifestURIの表示から知ることができる。
![NDL-digicore-aizu-iif-uri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/7efa8ba3-3f5f-9b48-521c-12ae24f1e2ee.png)

**1コマ目の標準画像のURI**
https://www.dl.ndl.go.jp/api/iiif/2542527/R0000001/full/full/0/default.jpg
（アクセスすると，画像が見られる）
![NDL-digicore-aizu-no01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/67b408e2-5702-bff4-dff5-d31b7605e543.jpeg)

“canvases” の中の　”canvas/1” の  ”images” の中の “resource” の “@id” の文字列から知ることができる。（https://www.dl.ndl.go.jp/api/iiif/2542527/canvas/1 というIDがついたcanvas）。

![NDL-digicore-aizu-no01-json-imageuri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/315f06e6-b560-0315-90a0-eda227e1b264.png)

1コマ目の画像のベースURI
 https://www.dl.ndl.go.jp/api/iiif/2542527/R0000001
（アクセスしてもNot Foundになる。ベースURIなので。）

“canvases” の中の　”canvas/1” の  ”images” の中の “service” の中の “@id” の文字列から知ることができる。
![NDL-digicore-aizu-no01-json-imageuri-base.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/a59e5ea9-f695-c370-c0c1-97b029dee6bb.png)

**1コマ目の画像の基本情報（info.json）**（ベースURIに　/info.json を付与したもの）
https://www.dl.ndl.go.jp/api/iiif/2542527/R0000001/info.json

この画像の基本情報（画像サイズなど）をjsonで見られる。
このURIを使ってeditorに画像が指定できるので，このURIをメモしておく。

**2コマ目の画像のURIs（1コマ目と同様に調べる）**
標準画像 https://www.dl.ndl.go.jp/api/iiif/2542527/R0000002/full/full/0/default.jpg
画像ベースURI  https://www.dl.ndl.go.jp/api/iiif/2542527/R0000002
画像基本情報（info.json）https://www.dl.ndl.go.jp/api/iiif/2542527/R0000002/info.json

**3コマ目の画像のURIs（1コマ目と同様に調べる）**
標準画像 https://www.dl.ndl.go.jp/api/iiif/2542527/R0000003/full/full/0/default.jpg
画像ベースURI  https://www.dl.ndl.go.jp/api/iiif/2542527/R0000003
画像基本情報（info.json）https://www.dl.ndl.go.jp/api/iiif/2542527/R0000003/info.json

ここまでで，1，2，3コマ目の画像の基本情報のURIがわかった。
このURIを使って，この画像のIIIF ManifestをManifest Editorを使って書いてみよう！

# Manifest Editor の起動と初期設定

ブラウザ上で動いて，IIIF Manifest が書ける便利な IIIF Manifest Editor： **The Bodleian's IIIF Manifest Editor** があるのでそれを利用する。

- 以下のURLからThe Bodleian's IIIF Manifest Editor（以下、Manifest Editor）にアクセスする
    - https://digital.bodleian.ox.ac.uk/manifest-editor/
- 「New Manifest」を選択する
![IIIFManifestEditor-top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/b627d28a-9d3c-3b5a-32d2-bbf857a56462.png)
- 右上の歯車のアイコン（設定のアイコン）をクリックする![IIIFManifestEditor-setting.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/90ac695a-9104-bf45-f7d9-440c66ae3969.png)
    - 一時的にjsonファイルをサーバにおくための設定作業である。（注意：これは，**本演習用の設定**で，IIIF Manifest のjsonファイルをダウンロードして，自らのサイトにアップロードするときには必要のない作業） 
- 「click here to use JsonStrage.net」 をクリックする
![001-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/b253c474-8621-1d31-123a-39f9522a330e.png)

- 「Save Settings」をクリックする
![002-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/a7be9300-f5e4-ac89-583c-450a7a10dc25.png)

- 「Close」をクリックする。これで初期設定まで終了である。
![003-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/c8514431-db2d-6bc6-d83d-db2fb1e0775e.png)

# IIIF Manifest を書く前に

IIF Manifest のそれぞれの内容の詳細は，文献(神崎2017a)[^kanzakia] が詳しいので，適宜参照しながら演習する。

Presentation API の概要図 [^nakamura]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/017e2344-9241-f51b-6848-f416be5c319a.png)

Manifest Metadata，Sequence Metadata，Canvas Metadataの順に書いていく。適宜，この図を振り返りながら進めると良いだろう。

# Manifest Editor を使ってManifest Metadataの情報を書いてみる(1)

Manifest Metadata には，「資料オブジェクト全体に関する情報」（神崎2017a）[^kanzakia]を書く。今回の題材の「会津日新刊細江図」全体についてのメタデータを書く。どんなラベルなのか，利用ライセンスは何か，所蔵館，その資料全体を示すサムネイルなどがある。

- 画面右上の「Manifest Metadata」が開いているのを確認する。開いていなければ，「Manifest Metadata」をクリックする。![IIIFManifestEditor-manifest-start.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/8845e99c-9ec7-aa3a-28e7-edc7f2b46d3b.png)
- 「Label」を修正する。「Label」をクリックして，「会津日新館細江図」を入力し，Enterを押して確定させる。![IIIFManifestEditor-manifest-label.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/6c70e8ee-9a0c-d933-5b74-b6fc2a003cd5.png)
- 同様に，「Description」のDescriptionを「彩色」，Languageを「ja」に変えたり，「Licence」（標準では，CC BY 3.0） を「http://dl.ndl.go.jp/ja/iiif_license.html 」に変えたり，「Attribution」を「国立国会図書館 National Diet Library, JAPAN」に変えたりする。![IIIFManifestEditor-manifest-misc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/5d1e74c4-351a-b5ba-a59c-e1a7a3d76eaf.png)
- これで，Manifest Metadataのうち，Manifest Editorがあらかじめ入力を用意している項目のLabel, Description, Licence, Attributionのを入力完了した。

# Manifest Editor を使ってIIIF Manifest を書き出す

ここまでの入力を実際に，jsonとして書き出してみよう。

- 右上の「Save Manifest」をクリック![IIIFManifestEditor-manifest-first-save.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/438cf11c-56ff-9c4e-79ed-0cd85029a5b8.png)
- 「Store manifest remotely 」をクリック![004-1-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/f81d1e18-69c7-aa7c-c252-7f466a18e1eb.png)


- 画面が変わるので，「Store Manifest on Server」をクリック![004-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/b8ed92cf-84f0-6c92-a7b6-8a2eae1f6c6b.png)

- 画面が変わるので，「Close」をクリック![005-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/68cbf5bc-ba26-169f-0107-2105deca277e.png)

- これで，紫の四角で囲んだところで示したURI（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）で今作業して作成したIIIF Manifestがアクセスできるようになった
-　注：このURIは，右側にある「Manifest Metadata」の上部にある「Manifest URI」に表示されているのでいつでも参照できる。

# Chromeで作成したIIIF Manifest のjson を見る

- Chromeで，先ほどの紫四角で囲んだURI（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）にアクセスすると，IIIF Manifest のjsonファイルを閲覧できる。先ほど修正した部分も反映されていることがわかる![IIIFManifestEditor-manifest-json-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/391e78eb-fcc5-4225-9ede-0e51e91ec80b.png)

# Manifest Editor を使ってManifest Metadataの情報を書いてみる(2)--新たな項目の追加--

新たな項目を追加してみよう。

- 「Add metadata field」ボタンをクリックする（Manifest MetadataのLicenseの下にあるので，表示されていなければ，スクロールバーで下に移動して表示させる）。![IIIFManifestEditor-manifest-addMetadata.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/1e112634-6ef2-592d-c7d4-fef04361b5c9.png)
- 「Add metadata field」の上に「Choose filed」が出てくるのでこれをクリックして，「Logo」 を選択する。![IIIFManifestEditor-manifest-choose.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/d29144e9-6dec-4aab-880d-78ce72565ee7.png)
- 「Logo」を修正する。「Logo」をクリックして，LogoのURL「http://dl.ndl.go.jp/resources/images/dlicon.png 」を入力し，Enterを押して確定させる。これにより、この画像のサービスのLogoを指定できる。![IIIFManifestEditor-manifest-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/92eb481b-9461-1543-5267-fb70a6877c19.png)
- **Logoと同様にして**，「Viewing Direction」を修正する。「Add metadata field」ボタンを押す。「Add metadata field」の上に「Choose filed」が出てくるのでこれをクリックして，「Viewing Direction」を選択する。
- 「Viewing Direction」をクリックして，「right-to-left」を入力し，Enterを押して確定させる。これにより，画像が右から左に並べられていることを示すことができる。

これで，IIIF でプロパティとして用意されているものについて入力できるようになった。資料の詳細なメタデータについては，**seeAlso**プロパティを使って，URIを書いておきそこにあると示すのが良い。ただ，そういってもある程度詳細に書きたいというニーズがあるのでそれは，後で説明する**metadata**プロパティで記述すると良い。

# Manifest Editor を使ってIIIF Manifest を上書きする

- 右上の「Save manifest」をクリック![IIIFManifestEditor-manifest-json-update-viewingD.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/8d2f11f7-06fb-6af8-90a7-c0c6be3cbe21.png)

- 「Update Manifest on Server」 をクリック![007-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/1f63b67b-a65e-99f1-5362-2aa85b090d26.png)

    - 演習用のみ。実際は，Download manifest を選んでダウンロードし，自身のサーバーのファイルへ再度アップロードすることになる
- 「Close」をクリックして閉じる。![008-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/ec398f3e-2e5e-2819-d4ae-c94bcdb35b77.png)

- これで，IIIF Manifest のjsonファイルが更新された。

# Chromeで作成したIIIF Manifest のjson を見る（２）

- Chromeで，先ほどの紫四角で囲んだURIにアクセスする
    -  （例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）
- 先ほどのjsonファイルの，LogoとViewingDirectionが追加されたのがわかる。![IIIFManifestEditor-manifest-json-update-viewingD-g.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/159d7a65-a984-f953-78a3-b63104d6a4ff.png)

# Manifest Editor を使ってManifest Metadataの情報を書いてみる(3) -- メタデータ記述 --

**metadata**プロパティを追加してみよう。これは，資料についてより詳しい書誌的な情報や説明を追加したいときに使う。「仕様でプロパティとして定義されていない、表示のための情報項目を記述するもの」（神崎2017b）[^kanzakib]。自由に項目名を設定して入力することができる。

- Manifest Editorにおいて、画面右部の「Manifest Metadataの「Custom Fileds」タブをクリックする。（「Custom Fileds」は，Manifest Metadataの最上部にあるので，表示されていなければ，スクロールバーを使って上部へ移動して表示させる）![IIIFManifestEditor-manifest-customF.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/6b90ad47-8dcd-c9cd-470e-bb2902ff4847.png)
- まず「Add metadata field」をクリック![IIIFManifestEditor-manifest-customF-M.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/80881520-a8e5-f7ea-23ca-f88d1053f23c.png)
- 「Label」と「Value」の入力タブが表示される![IIIFManifestEditor-manifest-customF-M-input.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/ffa9d019-282c-e3ce-bf09-f74719ea69eb.png)
- 「Label」と「Value」を入力する
    - 例： LabelにPersistent ID，Valueにinfo:ndljp/pid/2542527![IIIFManifestEditor-manifest-customF-M-PID.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/1c66e232-06c7-ef94-5949-401ec684c78e.png)
- 次に，言語が区別できるタイプを入力してみよう。日・英のタイトルを言語を区別して書きたい時などに利用する。
- 「Add language metadata field」をクリック![IIIFManifestEditor-manifest-customF-LM.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/c8ad9a4f-f5a3-213e-e39e-280e8643ef9e.png)
- 「Label」と「Value」「Language」の入力タブが表示される![IIIFManifestEditor-manifest-customF-LM-input.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/c09685b0-c28c-f516-e16d-f2a4e6fc00e3.png)
- 「Label」「Value」「Language」（ja, enなど）を入力する
    - 例：LabelにPublisher,  Valueに写, Languageにja ![IIIFManifestEditor-manifest-customF-LM-pub.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/432eab81-f675-f34e-e8e9-c998b194d3bb.png)
- 「**Manifest Editor を使ってIIIF Manifest を上書きする**」してここまでエディタに入力した値をjsonに上書きし，「**Chromeで作成したIIIF Manifest のjson を見る**」で，作成したjson見てみる。metadataに追加されたのがわかる ![IIIFManifestEditor-manifest-customF-LM-json.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/a85f40cb-6eea-6b9c-0824-1206ac000c26.png)

# Manifest Editor を使ってSequence Metadataの情報を書いてみる

Sequence Metadata を修正する。画像の順序の塊を表す。その塊がどういうものかについてを書く。例えば，現在の綴られている順番ですよ（Current Page Order）などを書く。一般的な図書館の所蔵資料の場合であれば，１つしかないことが大多数ではあるが，資料の綴られている順序でない順序で画像を並べたバージョンも欲しいといったなどのときのために用意されている。例えば，資料のページ順が間違っており，正しいページ順の画像の順序のものも欲しいといったときに活用される。ちなみに，複数のSequenceを作りたい場合は，２つ目以降は別のjsonファイルに書く必要がある。

- 画面右側の「Sequence Metadata」をクリックする。![IIIFManifestEditor-sequence.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/7b2740df-c9ab-67e0-d054-a1f0c10ce5de.png)
- 画面右のSequence  Metadataのタブが開くので，「Sequence Label」を修正する。「Sequence Label」をクリックして，「Current Page Order」を入力し，Enterを押して確定させる。![IIIFManifestEditor-sequence-input.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/a0837ca6-ce98-68d0-3c3a-cc94531c20de.png)
- 「**Manifest Editor を使ってIIIF Manifest を上書きする**」してここまでエディタに入力した値をjsonに上書きし，「**Chromeで作成したIIIF Manifest のjson を見る**」で，作成したjsonを見てみる。

# Manifest Editor 使って1コマ目の画像を読み込む

- 画面左下の「Add Canvas」をクリックする![IIIFManifestEditor-add-image-01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/13cfd360-2951-66bf-10c8-28de783ed92e.png)
- 左に出現した「Empty canvas」をクリックする![IIIFManifestEditor-add-image-01-emC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/fde2a0da-6a4d-7c33-5b97-a05e17097f80.png)
- 画面右部の「Canvas Metadata」をクリックする![IIIFManifestEditor-add-image-01-C-metadata.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/24ad94b3-868c-09fd-9958-421e599c641e.png)
- 画面右のCanvas Metadataの下に出てきた「Add Image to Canvas」をクリックする![IIIFManifestEditor-add-image-01-C-metadata-input-image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/7f0b6023-837a-2c89-c812-646fd005d1f1.png)
- 「From info.json URI」を選択し、**1コマ目の画像の基本情報のURI**を入力する![IIIFManifestEditor-add-image-01-C-metadata-input-image-uri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/3ebc9557-dc3d-3dac-3828-b3ff713df16d.png)
    - 1コマ目の画像の基本情報URI https://www.dl.ndl.go.jp/api/iiif/2542527/R0000001/info.json
- 「Submit URI」をクリックする![IIIFManifestEditor-add-image-01-C-metadata-input-image-submit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/3adf0033-a9f3-2acd-79d0-7296c2932c67.png)
- 1コマ目が読み込まれた![IIIFManifestEditor-add-image-01-C-metadata-input-image-done.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/8dd1e180-c388-9034-8162-1d9ec30c2ed0.png)
- 「**Manifest Editor を使ってIIIF Manifest を上書きする**」してここまでエディタに入力した値をjsonに上書きし，「**Chromeで作成したIIIF Manifest のjson を見る**」で，作成したjsonを見てみる。
    - "canvases":[ 以下のあたりが修正されていることがわかる。

# Manifest Editor を使ってCanvas MetadataのLabel情報を書いてみる

一つの画面で表示するCanvasについての情報を書く。1コマ目ですよとか，Canvasの幅と高さなどを書く。

- Canvas Metadata を修正する。
- 画面右上の「Canvas Metadata」が開いているのを確認する。開いていなければ，「Canvas Metadata」をクリックする。![IIIFManifestEditor-canvas-metadata.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/fd7f3b68-605d-6be8-6c88-11854cdb0b89.png)
- 「Canvas Label」をクリックして，「Empty canvas」を消して「1」を入力し，Enterを押して確定させる。これはコマごとのページに表示される値となる（1コマ目なので「1」としている）。![IIIFManifestEditor-canvas-metadata-label.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/0dba78e3-b8ba-2c0c-657f-7d6984d2033a.png)
- 注：Canvas MetadetaのCanvas Width, Canvas Height, Image URI, Image Anotation URI はデータを入力してすぐの場合，0だったり空だったりすることがあるが，後ほどエディタが自動挿入するので気にしないでおく（画面左下のサムネイルをクリックするなどすると自動挿入される）。
- 「**Manifest Editor を使ってIIIF Manifest を上書きする**」してここまでエディタに入力した値をjsonに上書きし，「**Chromeで作成したIIIF Manifest のjson を見る**」で，作成したjsonを見てみる。
    - "canvases" 中の "label" が "1"になっているのがわかる。

# Manifest Editor 使って2コマ目，3コマ目の画像を読み込み，Canvas MetadataのLabel情報を書いてみる

- 「Manifest Editor 使って1コマ目の画像を読み込む」と同様にして，2コマ目を読み込む
    - 2コマ目の基本情報（info.json）https://www.dl.ndl.go.jp/api/iiif/2542527/R0000002/info.json
- 「Manifest Editor を使ってCanvas Metadataの情報を書いてみる」と同様にして，「Canvas Label」をクリックして，「Empty canvas」を消して「2」を入力し，Enterを押して確定させる。これはコマごとのページに表示される値となる（2コマ目なので「2」としている）。
- 「**Manifest Editor を使ってIIIF Manifest を上書きする**」と同様にして，IIIF Manifestを上書きする
- 「**Chromeで作成したIIIF Manifest のjson を見る**」と同様にして，Chromeで，先ほどの紫四角で囲んだURIにアクセスする
    - 例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff
- 同様に，3コマ目もやってみる。
- 2コマ目，3コマ目が登録できた![IIIFManifestEditor-add-image-02-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/b884289e-bf64-e9bd-c9c2-34887dcf54e1.png)

# Manifest Editor を使ってCanvas MetadataのLavel情報以外の情報を自動挿入した状態にする

- 画面左下の1コマ目のサムネイルをクリックする。これで，1コマ目のCanvas MetadetaのCanvas Width, Canvas Height, Image URI, Image Anotation URIがエディタ上に自動挿入された（緑四角部分が該当部分）![IIIFManifestEditor-image-info-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/240e04d0-9e96-952b-7250-a818dabd9baa.png)
- 同様に画面左下の2，３コマ目のサムネイルをクリックすると，2，３コマ目の分も自動挿入される（緑四角部分が該当部分）。Canvas Metadataをクリックして，Canvas Metadeta を開く。緑四角の部分に，具体的な数値やURIが入ったのがわかる![IIIFManifestEditor-image-info-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/c1762e6a-be5e-f796-42a2-a4f55fb3e5a8.png)

# Manifest Metadata (サムネイルの登録）

- 最後に，資料全体を示す画像のサムネイルを登録する。これは検索結果一覧などに使われることを想定した画像となる。
- 画面右のManifest Metadataをクリックする
- 「Add Manifest Thumbnail」ボタンをクリックする（ボタンが見当たらない場合は，Manifest Metadataタブのスクロールバーを使って上部に移動すれば出てくる）。![IIIFManifestEditor-thumbnail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/909431a3-7c29-fcaf-5415-f7c6522b7f49.png)
- 1コマ目が選ばれているのを確認する。もし，2コマ目にしたければ，「2」を選択する。「1」や「2」は，先ほどCanvas Labelで設定した「1」や「2」である。「Save」をクリックする。![IIIFManifestEditor-thumbnail-p.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/ddb419fa-5418-7efc-497d-d1269ca0ce42.png)
    - 注：この図のように，「ぐるぐるなっている」ことがあるが気にしない（普通は，該当する画像が表示されているはず）。
- サムネイルが登録された（緑四角部分を参照）![IIIFManifestEditor-thumbnail-done.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/00c36cf9-562b-3fc1-2d4d-3c1c9ca97662.png)
- 「**Manifest Editor を使ってIIIF Manifest を上書きする**」と同様にして，IIIF Manifestを上書きする
「**Chromeで作成したIIIF Manifest のjson を見る**」と同様にして，Chromeで，先ほどの紫四角で囲んだURIにアクセスする
例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff

## 注意：国立国会図書館デジタルコレクションの資料全体のサムネイル画像について

国立国会図書館デジタルコレクションでは，Sequence Metadaの方にサムネイル指定があり，また，資料全体を表すサムネイルは別途用意してあり（スケールやカラースケールなどはトリミングされてる），以下のURIである。

本全体を示すサムネイルのURI（こちらはjsonにベースURIや基本情報の記述はない）
https://www.dl.ndl.go.jp/api/iiif/2542527/T0000001/full/full/0/default.jpg
![ndl-thmbnail.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/ba12f10e-1cd0-e4a0-e168-23bb25950f84.jpeg)

“sequences” の中の “thumbnai”l の中の “@id” の文字列
![ndl-thmbnail-json.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/f3c28619-6049-2799-038d-1ff83e994b9b.png)

今回の演習では，一コマ目の画像のCanvasのURIを，サムネイル画像として指定しているが，国立国会図書館デジタルコレクションのサムネイルは，別の画像を指定しており，異なる画像であること，指定方法が異なること（Canvas URIの指定vs 画像サーバーのURI）に注意が必要である(今回使用したManifest Editorではcanvasに使っていない画像を指定した資料全体のサムネイル登録はできなかったため)。


# おまけ：Manifest Editor で修正を再開する方法

終了したら，Manifest Editor を閉じて構わない。作成したManifest を修正したい場合は，すでに書いたものを読み込んで修正することができる。今回の演習で作成したManifestは，https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff にある。こちらを読み込んで修正する方法について紹介する。

- 以下のURLからThe Bodleian's IIIF Manifest Editor（以下、Manifest Editor）にアクセス
    - https://digital.bodlein.ox.ac.uk/manifest-editor/
- 「Open Manifest」を選択![IIIFManifestEditor-reopen-t.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/edaa4925-5efd-dfcf-2842-5eed1f0b2aa2.png)
- 今回の演習で作成したManifest のURL （例： https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）を入力し，「Open」ボタンをクリック![009-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/040dd44b-a851-1513-4ecc-8bb7e37f8ded.png)

- すると，このManifestを読み込んだEditorが起動する![010-IIIF-Manifest-Editor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/a0e9647a-3020-6109-0e12-9422436f8abb.png)
    - Manifest URI（右の紫の四角で囲ったところのURL）が指定したURIとなっていることがわかる

- これで，Editorを使って，編集作業が再開できる

# IIIF Manifest 入力のまとめ

これで一通り最後までIIIF Manifest のデータを入力したことになる

- 今回作成したIIIF Manifest
    - 例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff
- 国立国会図書館デジタルコレクションのIIIF Manifest
    - https://www.dl.ndl.go.jp/api/iiif/2542527/manifest.json

これらを見比べてみよう。異なる記述もあるが，概ね同じようにできていることがわかる（どうして異なるのかを調べてみるのも今後の発展的な勉強として良い？）。

注：演習の都合上，時間短縮のため，seeAlsoなど実際の公開サービスとして最低限必要と考えられる項目の全てを入力しているわけではないので注意すること。

# IIIF ビューアーでみてみよう（1）

今回の演習で作成したIIIF Manifest（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）を実際にビューアでどのように見えるか確認してみよう。まずは，ビューアを紹介する。

## 様々なIIIF Viewer 

- Mirador
    - http://projectmirador.org/demo/
        - デモサイト。ここにアクセス後，ManifestのURLを入れる
    - https://github.com/ProjectMirador/mirador/releases
        - リリース版置き場。ここにアクセスして，「Latest release」と左側に書いてあるものの「build.zip」をダウンロード，解凍，example.htmlをダブルクリック
- Universal Viewer
    - https://universalviewer.io/uv.html?manifest=
        - このURLの最後にManifestのURIを入力してアクセスする，以下のViewerも同様
- Image Annotator
    - https://www.kanzaki.com/works/2016/pub/image-annotator?u=
- IIIF Curation Viewer
    - http://codh.rois.ac.jp/software/iiif-curation-viewer/demo/?manifest=
- TIFY
    - http://tify.sub.uni-goettingen.de/demo.html?manifest=

今回は，Mirador, Universal Viewer, Image Annotator を使ってみる。Mirador は，一番有名なビューアではあるが，演習で作成したIIIF Manifest を読み込ませるやり方までいくつか手順が必要なため最後に演習する。

# IIIF ビューアーでみてみよう（2）:Universal Viewer

- https://universalviewer.io/uv.html?manifest= の後ろに，演習で作成したIIIF Manifest のURI（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）をくっつけたURLを作成する。
    - 例：https://universalviewer.io/uv.html?manifest=https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff
- このように表示される![UniversalViewer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/946ccdd9-c2c6-73ca-a4d1-6a698a6703b4.png)
- Manifest MetadataのLabelに「会津日新館細江図」と入れたので，左上の方に表示されているなどがわかる
- 左側にはサムネイルが表示され，「１」「２」などCanvas Labelで入力した値も表示されていることがわかる

# IIIF ビューアーでみてみよう（3）: Image Annotator

- https://www.kanzaki.com/works/2016/pub/image-annotator?u= の後ろに，先ほどの演習で作成したIIIF Manifest のURI（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）をくっつけたURLを作成する
    - 例:https://www.kanzaki.com/works/2016/pub/image-annotator?u=https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff
- このように表示される![ImageAnnotator.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/9bb91f98-960e-311f-96a6-19dde58835e5.png)
- 1コマ目と2コマ目のサムネイルが，左から右に並んでいるのがわかる。

# IIIF ビューアーでみてみよう（4）:Mirador

一番有名なビューアーである。デモサイトを使ったやり方と，ローカルにダウンロードして使ったやり方と2通りやってみる。

## Miradorデモサイトを使ってみる

- http://projectmirador.org/demo/ にアクセス
- 右側のウインドウを消したいので，右側のウインドウの左上にあるバツボタンをクリック![MiradorViewer_batu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/b6ad2cef-0889-1a0e-63d0-87e9469691ae.png)
- 左上の四角が4つのアイコンをクリックし，メニューが出てくるので「新しいオブジェクト」をクリック![MiradorViewer_new.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/d944bb45-c13b-052e-1fc9-2f5affafef6e.png)
- 演習で作成したIIIF Manifest のURI（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）を「URIで新規オブジェクト追加」に入力して「読み込み」ボタンをクリック![MiradorViewer_uri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/22f3580e-2aab-6a0f-4aea-cd27ad71ec89.png)
- 演習で作成したIIIF Manifestのコンテンツが上部に表示されるので，1コマ目のサムネイルをクリック![MiradorViewer_select.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/d595c21b-e50c-f6c5-2c10-a140781bb70f.png)
- するとこのように表示される。下部サムネイルが右から配置されていることがわかる。![MiradorViewer_done.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/c35f586d-912c-5775-1808-4b71587d597f.png)

## Miradorを手元にダウンロードしてローカルで使ってみる

デモサイトではなくても，ローカルにMiradorをダウンロードしてきても使える。

- https://github.com/ProjectMirador/mirador/releases にアクセス
- 緑色で「Latest release」と左側に書いてあるバージョンの「build.zip」をダウンロード![MiradorViewer_local.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/748ad2a7-ba24-c665-877d-b866efcce53b.png)
    - 2019-04-25現在，Mirador 2.7.0がリリースされた最新バージョンであった
    - 注意！「Latest release」ではなく，「Pre-release」だと，ソースしかなく，すぐに動く example.htmlが入っていないので，必ず「Latest release」の方をダウンロードすること。
- ダウンロードしてきた build.zip をダブルクリックするなどして解凍
- 解凍したファイル群の中にある example.html をダブルクリックするなどしてウェブブラウザで開く![MiradorViewer_local_file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/8265fb71-b324-aa02-dee6-fa6f50288b8e.png)
- 真ん中の「+」をクリック（なぜか，英語インタフェースになってしまうのですが・・・）![MiradorViewer_local_plus.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/a347d6a8-e715-df82-6558-573523e2d7a5.png)
- 演習で作成したIIIF Manifest のURI（例：https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff ）を「addNewObject:」に入力して「load」ボタンをクリック![MiradorViewer_local_load.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/ae4be32c-a0a7-d5d1-3e45-b7689c3bce47.png)
- 演習で作成したIIIF Manifestのコンテンツが上部に表示されるので，1コマ目のサムネイルをクリック![MiradorViewer_local_uri.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/420519d1-b56c-b78f-c225-0c5060b9ac5e.png)
- するとこのように表示される。下部サムネイルが右から配置されていることがわかる。![MiradorViewer_local_done.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/333119/f100480d-1324-0fc3-323a-eb141374258f.png)

# その他

- Presentation API Validator
    - https://iiif.io/api/presentation/validator/service/ 
    - IIIF Manifest が文法として正しく書けているかをチェックできる
- メタデータに seeAlsoが書ける。詳細なメタデータのありか(URI)を書くことによって，詳細なメタデータは,IIIF Manifestに書かなくても，他所を参照するようにとなっている
- カンバスの画像は，必ずしも，IIIF Imageサーバーで提供しなくても良い
    - ref.  https://www.kanzaki.com/works/2018/pub/0125kda.html#s28 神崎先生による解説。
- IIIFのイメージサーバーを使わずに，Manifestだけを作って公開しているサービス例
    - 史料集版面ギャラリー　IIIFコレクション版（東京大学史料編纂所編を改変）https://nakamura196.github.io/hi/
        - 例： https://nakamura196.github.io/hi/data/11/01/0016.json 
    - 「史料一覧」というリンクでexcelでのデータ提供も行なっている。github上のexcelをオンラインビューワで表示させている。

# GLAMtech Vol.7 資料

- GLAMtech vol.7 の記録
    - https://github.com/GLAMtechEvent/note/wiki/vol.7
- GLAM Tech 7 スライド（中村) 
    - https://docs.google.com/presentation/d/1Tmm9EkA5lRZKUJdcdb0LHBwl8mfkpB5UQ5MQFOYKN1M/edit#slide=id.g50e952e6a5_0_119
- GLAM Tech 7 作業マニュアル（中村＋参加者）
    - https://docs.google.com/document/d/1FqOB5B61CVbEGzuUnMejf3wrJNGU6E3OZg-yBnNb5uQ/edit#heading=h.zekehikvnbxr
 
# 成果物

https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff

```json
{
  "@context": "http://iiif.io/api/presentation/2/context.json",
  "@id": "https://jsonstorage.net/api/items/da1dd900-978d-429e-830c-b74e40dcc2ff",
  "@type": "sc:Manifest",
  "label": "会津日新館細江図",
  "metadata": [
    {
      "label": "Persistent ID",
      "value": "info:ndljp/pid/2542527"
    },
    {
      "label": "Publisher",
      "value": {
        "@value": "写",
        "@language": "ja"
      }
    }
  ],
  "description": [
    {
      "@value": "彩色",
      "@language": "ja"
    }
  ],
  "license": "http://dl.ndl.go.jp/ja/iiif_license.html",
  "attribution": "国立国会図書館 National Diet Library, JAPAN",
  "sequences": [
    {
      "@id": "http://b761eb7b-2c73-4d3f-adb3-0d029f7cc67c",
      "@type": "sc:Sequence",
      "label": "Current Page Order",
      "canvases": [
        {
          "@id": "http://2379af9f-5538-4624-ba4a-b4370d3adfa7",
          "@type": "sc:Canvas",
          "label": "1",
          "height": 6168,
          "width": 7051,
          "images": [
            {
              "@context": "http://iiif.io/api/presentation/2/context.json",
              "@id": "http://663cfcff-d56b-4298-a419-88ce84e0e0c3",
              "@type": "oa:Annotation",
              "motivation": "sc:painting",
              "resource": {
                "@id": "https://www.dl.ndl.go.jp/api/iiif/2542527/R0000001/full/full/0/default.jpg",
                "@type": "dctypes:Image",
                "format": "image/jpeg",
                "service": {
                  "@context": "http://iiif.io/api/image/2/context.json",
                  "@id": "https://www.dl.ndl.go.jp/api/iiif/2542527/R0000001",
                  "profile": [
                    "http://iiif.io/api/image/2/level1.json",
                    {
                      "formats": [
                        "jpg"
                      ],
                      "qualities": [
                        "default"
                      ],
                      "supports": [
                        "regionByPct",
                        "sizeByWh"
                      ]
                    }
                  ]
                },
                "height": 6168,
                "width": 7051
              },
              "on": "http://2379af9f-5538-4624-ba4a-b4370d3adfa7"
            }
          ],
          "related": ""
        },
        {
          "@id": "http://8fe6fced-df9e-4575-b46d-98d51e8138e7",
          "@type": "sc:Canvas",
          "label": "2",
          "height": 5832,
          "width": 12904,
          "images": [
            {
              "@context": "http://iiif.io/api/presentation/2/context.json",
              "@id": "http://60135f6d-a38c-4e7b-907e-530151d700fb",
              "@type": "oa:Annotation",
              "motivation": "sc:painting",
              "resource": {
                "@id": "https://www.dl.ndl.go.jp/api/iiif/2542527/R0000002/full/full/0/default.jpg",
                "@type": "dctypes:Image",
                "format": "image/jpeg",
                "service": {
                  "@context": "http://iiif.io/api/image/2/context.json",
                  "@id": "https://www.dl.ndl.go.jp/api/iiif/2542527/R0000002",
                  "profile": [
                    "http://iiif.io/api/image/2/level1.json",
                    {
                      "formats": [
                        "jpg"
                      ],
                      "qualities": [
                        "default"
                      ],
                      "supports": [
                        "regionByPct",
                        "sizeByWh"
                      ]
                    }
                  ]
                },
                "height": 5832,
                "width": 12904
              },
              "on": "http://8fe6fced-df9e-4575-b46d-98d51e8138e7"
            }
          ],
          "related": ""
        },
        {
          "@id": "http://ab37c7a2-c9bc-44c7-ad9c-39425d878874",
          "@type": "sc:Canvas",
          "label": "3",
          "height": 6168,
          "width": 7051,
          "images": [
            {
              "@context": "http://iiif.io/api/presentation/2/context.json",
              "@id": "http://a9f6b142-8a21-487e-a8c7-f829944a434c",
              "@type": "oa:Annotation",
              "motivation": "sc:painting",
              "resource": {
                "@id": "https://www.dl.ndl.go.jp/api/iiif/2542527/R0000003/full/full/0/default.jpg",
                "@type": "dctypes:Image",
                "format": "image/jpeg",
                "service": {
                  "@context": "http://iiif.io/api/image/2/context.json",
                  "@id": "https://www.dl.ndl.go.jp/api/iiif/2542527/R0000003",
                  "profile": [
                    "http://iiif.io/api/image/2/level1.json",
                    {
                      "formats": [
                        "jpg"
                      ],
                      "qualities": [
                        "default"
                      ],
                      "supports": [
                        "regionByPct",
                        "sizeByWh"
                      ]
                    }
                  ]
                },
                "height": 6168,
                "width": 7051
              },
              "on": "http://ab37c7a2-c9bc-44c7-ad9c-39425d878874"
            }
          ],
          "related": ""
        }
      ]
    }
  ],
  "structures": [],
  "logo": "http://dl.ndl.go.jp/resources/images/dlicon.png ",
  "viewingDirection": "right-to-left",
  "thumbnail": {
    "@id": "http://2379af9f-5538-4624-ba4a-b4370d3adfa7"
  }
}
```

 










[^nakamura]: 「GLAMtech vol.7　IIIF Manifestを書く」　中村覚. "Presentation API" p.12 https://docs.google.com/presentation/d/1Tmm9EkA5lRZKUJdcdb0LHBwl8mfkpB5UQ5MQFOYKN1M/edit#slide=id.g50e952e6a5_0_288
[^iiifdoc]: (神崎2017a)[^kanzakia]， (神崎2017b)[^kanzakib]，（永崎2019）[^nagasaki]を参照のこと
[^kanzakia]: (神崎2017a) 神崎　正英. 画像共有の新しい標準IIIF，LOD Library, 2017/1/27 https://service.infocom.co.jp/das/loddiary/2017/01/20170127001583.html
[^kanzakib]: (神崎2017b) 神崎　正英. 一歩進んだIIIFマニフェストの利用，LOD Library, 2017/3/14　 https://service.infocom.co.jp/das/loddiary/2017/03/20170314001601.html
[^nagasaki]: （永崎2019） 永崎 研宣. IIIFに関する日本語情報の私的なまとめ（2019/5/9版）, http://digitalnagasaki.hatenablog.com/iiif

# 更新履歴
2021-03-04 myjson.com が使えなくなっていたので、jsonstorage.net に差し替え（一部のスクリーンショットに、myjson.comのままのものが残っているが適宜、jsonstrage.netのものと読み替えてほしい）。成果物のjsonを追加。