メディアファイルをコモンズに一括アップロードするPattypan

### - コモンズ利用のヒント1
このところ細々と、浮世絵などを題材にOpenGLAMやオープンアクセスのムーブメントとウィキメディアの各プロジェクトをつなぐやり方をあれこれ調べたり試行錯誤してきました。その過程で見えてきたことや使ったツールの紹介など、いくつか記事を投稿予定です。何かの参考になれば幸いです。お気づきの点などありましたらコメント頂けると嬉しいです。
## 1 前置き
ウィキメディア・コモンズへの画像などのメディアファイルのアップロードはウィザードを利用すると、その指示に従うだけで比較的手軽にできるようになっています。複数アップロードする場合でも対象物の名前や説明などのメタデータを、共通する部分があれば全てにコピーすることもできます。
自分で撮った写真をとりあえず何件か登録する程度であればこれで十分なのですが、数が増えてきたり、メタデータを細かく指定したい場合には、全てをアップロードウィザード画面でひとつずつ対話的に処理していると手間が掛かるばかりでなく入力間違いも起こしやすくなります。
このあたりの改善を支援するツールが今回紹介するPattypanです。

## 2 [Pattypanの概要](https://commons.wikimedia.org/wiki/Commons:Pattypan/ja)
![](https://upload.wikimedia.org/wikipedia/commons/e/ea/Pattypan.svg)（Pattypan：かぼちゃの一種）
PattypanはJavaで開発された、コモンズへのメディアファイル一括アップロード用のツールで、例えばGLAM機関などが公開しているデジタルアーカイブを作品ごとのメタデータを付与しながらある程度まとめてアップロードする、といった用途に適しています。おおまかには
・提供者が持つメディアファイルとそのメタデータをもとに、コモンズ側のテンプレートに沿った内容を登録するための中間的なエクセルファイルをひな形として初期生成し、
・そのエクセル上でメタデータを細かく整備しながら入力値を検証したり、コモンズ上での見え方をプレビュー機能で確認し、
・問題が無くなった時点で内容をコモンズに一括登録する、
といった手順で使用します。

UIの完成度は決して高いとは言い難いものの、エクセルと連携して行き届いた細かい操作ができる点でとても実用的な支援ツールです。

## 3 インストール
Javaの実行環境があれば[こちら](https://github.com/yarl/pattypan/releases)から最新版の.jarファイルをダウンロードして起動するだけです。

## 4 操作説明
不慣れな方は操作の前に[最初の一歩](https://commons.wikimedia.org/wiki/Commons:First_steps/ja)をお読み頂いてアップロードウィザードから始めて頂くと良いと思います。Pattypanである程度まとまった量の一括アップロードを行う際には[こちらのガイドライン（英語）](https://commons.wikimedia.org/wiki/Commons:Guide_to_batch_uploading)も参照してください。特にGLAM機関がそのコンテンツを一括して提供する場合には、注意事項や便利な機能もいろいろ用意されていますので「[ウィキメディアコモンズへのデータ転写：機関のデータアーカイブの供用](https://meta.wikimedia.org/wiki/Learning_patterns/Data_transfers_to_Wikimedia_Commons:_Sharing_institutional_archives/ja)」も併せてよくお読みください。
### 4.1 事前準備
メディアファイルとメタデータ（作者、作品名、作成年などの書誌情報に相当）を用意します。
現在Pattypanが扱えるメディアファイルの拡張子は以下の通りです。
"png", "gif", "jpg", "jpeg", "tiff", "tif", "xcf", "svg", "wav", "ogg"

ここでは[川瀬巴水](https://ja.wikipedia.org/wiki/%E5%B7%9D%E7%80%AC%E5%B7%B4%E6%B0%B4)の[新版画](https://ja.wikipedia.org/wiki/%E6%96%B0%E7%89%88%E7%94%BB)作品を[NDLデジコレ](https://dl.ndl.go.jp/)で探して実際にコモンズへ登録してみます。
#### 4.1.1 NDLデジコレから情報収集
##### 4.1.1.1 画像をダウンロード
[NDLデジコレを「川瀬巴水」で検索](https://dl.ndl.go.jp/search/searchResult?featureCode=all&searchWord=%E5%B7%9D%E7%80%AC%E5%B7%B4%E6%B0%B4&viewRestricted=0)して見つかったもののうち、保護期間満了となっている作品の中から「[川瀬巴水版画集](https://dl.ndl.go.jp/info:ndljp/pid/2586549)」を選びました。50件ほどある画像をダウンロードします。この部分は一括操作ができないのでひとつづつ手で操作します。
画面上部にある「JPG」アイコンをクリックして「100%」で「表示」させてから名前をつけて保存します。
![](https://i.imgur.com/u55mGEd.png)
この時の画像ファイル名はアップロード時に変えられるので適当で良いのですが、識別しやすい名前をつけておくと作業がスムーズです。ここでは一例として以下の規則で命名します。

<b>NDL-DC_(pid)-(コマ番号).jpg</b>
NDL-DC：NDLデジタルコレクションの略称
(pid):NDLデジコレのコンテンツを一意に示すIDでURLに含まれる
(コマ番号)：コンテンツが複数ページに分かれている場合のページ番号に相当
その他：適宜（ここでは作品の作成年が読み取れたのでS02などのように追加）

オリジナル画像には丁寧にカラーパレットや目盛りも付いています。原本としては貴重な情報ですが、利用するだけの人には通常不要なので不要な余白をカットしたバージョンもcrd(croppedの略)を付けて保存します。これは必須ではありませんがきっと誰かの役に立つだろうと思いながらがんばります :)

こんな感じでファイル名を付けます。
![](https://i.imgur.com/wohzp5a.png)
##### 4.1.1.2 メタデータを参照
画像をダウンロードする際、左サイドで書誌情報を確認できます。
![](https://i.imgur.com/leu6itC.png)
次のステップでひな形エクセルを作成する際のメタデータはここから参照します。
### 4.2 ひな形エクセルの初期作成
Pattypanを起動します。（操作の詳細は[簡易マニュアル](https://commons.wikimedia.org/wiki/Commons:Pattypan/Simple_manual/ja)参照）
#### 4.2.1 初期画面
![](https://i.imgur.com/wFl8OO3.png)
「Generate Spreadsheet」ボタンをクリックし、下記画面で「Browse」ボタンでアップロード用画像ファイルを格納したフォルダを指定。正しく選択できたら「NEXT」。
![](https://i.imgur.com/V2JxXoz.png)
#### 4.2.2 テンプレートに応じたひな形エクセルへの出力値設定画面
左側にテンプレートの候補が表示されます。これはメタデータをコモンズのファイルページに登録する際に使用するものです。ここでは先頭のArtwork（芸術作品）テンプレートを使います。内容を詳しく知りたい場合は{{Artwork}}の隣にある「[Template documentation](https://commons.wikimedia.org/wiki/Template:Artwork/doc)」をクリックするとテンプレートの詳細説明が見られます。左から2列目以降、{{Artwork}}の下はテンプレートごとの入力エリアです。
![](https://i.imgur.com/sHunsS6.png)
入力エリアのうち、左側は各フィールド名、中央部は値の設定方法、右側は値の入力欄です。
左側のフィールド名は一般的に芸術作品に必要なものが列挙されており、準備したメタデータに対応するフィールドにそれぞれ値を入力します。多数ありますが、必須なのはsource（出典）だけです。手元にあるメタデータに対応するフィールドがあれば転記します。

中央部にあるラジオボタンを選ぶとそれぞれ次のように動作します。
Yes：右側に値の入力欄が現れ、複数行に対する同じ初期値があれば指定する。空欄でも構わない。
Const：右側に値の入力欄が現れ、複数行に対する同じ固定値を指定する。
No： 値の入力欄は現れず、入力もしない。不要項目はNoを選ぶ。

値には文字列や[ウィキテキスト](https://meta.wikimedia.org/wiki/Help:Wikitext_examples)が使えます。利用できるテンプレートがある場合は記入内容を簡略化したり自動的にリンクを張ったり他言語化したりできるため、{{テンプレート名}}のように記入して利用したほうがベターです。

それでは各フィールドに具体的な値を設定していきます。

フィールド名 (入力有無) 値【説明】

- Artist (Const) [``{{Creator:Kawase Hasui}}``](https://commons.wikimedia.org/wiki/Creator:Kawase_Hasui)【作者名。川瀬巴水には[作者ページ](https://commons.wikimedia.org/wiki/Creator:Kawase_Hasui)があるのでそれを呼び出す[{{Creator}}テンプレート](https://commons.wikimedia.org/wiki/Template:Creator)を使用します。】
- Author (No)【本などの著者】
- Title (Yes) 川瀬巴水版画集【作品のタイトル】
- Description (Yes) 昭和10(1935)年に渡辺画版店から出版された川瀬巴水の版画集内の作品【解説】
- Date (Yes)【日付。作品ごとに異なるため空欄とし、後からエクセルで個別に設定】
- Medium (No)【技法】
- Dimensions (No)
- Institution (Const) 国立国会図書館【コレクション】
- Department (Const) 国立国会図書館デジタルコレクション【所蔵】
- place of discovery (No)
- Object history (No)
- Exhibition History (No)
- Credit Line (No)
- Inscriptions (No)
- Notes (No)
- Accession Number (Yes) 本別7-302【台帳番号。美術館ではないため請求記号を充てています】
- Place of creation (No)
- Source (Yes)``{{NDL Digital Collections|2586549}}``【情報源/撮影者。NDLデジコレの出典を示す[{{NDL Digital Collections}}](https://commons.wikimedia.org/wiki/Template:NDL_Digital_Collections)テンプレートを使用。pidが作品により異なる場合は後からエクセル上で修正します。】
- Permission (Const)``{{PD-scan}}``【許可。2次元のパブリックドメイン作品をスキャンした忠実なデジタルコピーであることを示す[{{PD-scan}}](https://commons.wikimedia.org/wiki/Template:PD-scan)テンプレートを使用】（2020/12/3追記：アップロード後に別の方がこのテンプレートを{{PD-art|PD-Japan}}に差し替えていました。こちらを使用したほうが良いのかもしれません。）
- other versions (Yes)【その他のバージョン。同じ画像の別バージョンを示す。オリジナルと余白を切り取ったものがあるのでそのファイル名を相互に指定。作品ごとに異なるので値は後からエクセル上で設定します。ファイル名を``<gallery>``タグで括るとコモンズ上で画像プレビューが表示されます】
- References (No)
- Wikidata (No)【ウィキデータの項目番号。Wikidataに項目がある作品の項目番号を設定すると、wikidataに登録されている内容を対応するフィールド（Artistなど）に自動的に設定してくれます。】
- License (No)【利用ライセンスが明示されている作品は[ライセンスタグ](https://commons.wikimedia.org/wiki/Category:License_tags)の中から該当するものを選んで設定します。自分の作品は自分で決めます。】
- Partnership (No)
![](https://i.imgur.com/kioR4MD.png)
#### 4.2.3 エクセルひな形の生成
「Next」ボタンを押すと下記画面に遷移します。
![](https://i.imgur.com/bIdBIFj.png)
提案されたエクセルファイル名を確認し、必要なら修正して「Create file」ボタンを押します。
![](https://i.imgur.com/nLGNY1D.png)
「Open file」をクリックすると[初期作成されたエクセル](https://drive.google.com/file/d/1I8bM5_BM9TxvXKbl8jtIM4g-tc5Nxblx/view?usp=sharing)が開きます。
![](https://i.imgur.com/eiyybQv.png)
1つ目のシートがデータシートです。1行目は制御用の見出しなのでそのままにして、2行目以降で作品ごとに異なる内容を編集します。
![](https://i.imgur.com/WSzqm7H.png)
2つ目のシートは1シート目のデータを参照しながらコモンズ上のファイルページに書き込む内容です。こちらの内容は自分で処理を制御したい場合以外は触ることはありません。
### 4.3 ひな形エクセルの編集
ここではエクセルの機能を使って以下の編集を行いますが、複雑な編集が必要な場合はOpenRefineの利用をおすすめします。（[参考記事](https://qiita.com/higa4/items/7cb4c833e383b47b2c18)）

- nameフィールド：コモンズ上に登録されるファイル名。元のファイル名が初期設定されていますがここで変えられます。ある程度長くなっても分かりやすい名前がベターです。作者名や作品名を入れると分かりやすくなります。日本語も使えますが、ここでは海外からの利用者を意識してローマ字表記で作者名「Kawase Hasui」を追記することにします。
- dateフィールド：作品画像の余白にあった作成年をS02（昭和2年）のようにファイル名に付けておいたのでそれを西暦で記述します。
- other versionsフィールド：余白を切り取った画像は切り取り前後の相手方のファイル名をそれぞれ記入します。またファイルページでプレビュー表示されるように``<gallery>``タグでくくります。
- categoriesフィールド：コモンズの登録先カテゴリを記入します。既にある膨大な階層構造内の適切な位置を探しますが、考え始めると結構奥深い内容のため詳細は別記事にする予定です。ここではひとまず「[Images from NDL digital collection](https://commons.wikimedia.org/wiki/Category:Images_from_NDL_digital_collection)」というカテゴリ配下に置くことにします。
![](https://i.imgur.com/vGVzZg0.png)
編集後のエクセルは[こちら](https://docs.google.com/spreadsheets/d/15TRfhYn4UatkURXtarfPz8lo22w1H2Fo/edit#gid=498597562)
### 4.4 編集したエクセルの検証
Pattypanを再起動して「Validate & Upload」ボタンを押します。
![](https://i.imgur.com/wFl8OO3.png)
「Browse」ボタンで[編集後のエクセルファイル](https://drive.google.com/file/d/15TRfhYn4UatkURXtarfPz8lo22w1H2Fo/view?usp=sharing)を開きます。
![](https://i.imgur.com/ZWqNUMi.png)
4件警告が出ています。いずれも「その他バージョンが空欄」という指摘で、該当画像ファイルには
その他バージョンが無いのでこのままでOKです。「Next」ボタンを押します。
![](https://i.imgur.com/CRSzUkx.png)
左側で対象画像を選ぶと、右側でコモンズのファイルページに書き込まれる内容がプレビューできます。下にスクロールするとこんな感じ。記述を確認します。
![](https://i.imgur.com/FGquBAj.png)
「preview」をクリックするとコモンズのファイルページに表示される内容がブラウザでプレビューできます。
![](https://i.imgur.com/KdyzUXK.png)
問題なさそうです。
### 4.5 コモンズへアップロード
いよいよここからエクセルの内容をコモンズにアップロードします。アップロード後にもコモンズ側で修正はできますが、間違った数が多いと大変なので、まずは2件アップロードして確認してみます。
#### 4.5.1 エクセルから2件だけ切り出して確認

Pattypanに戻って「Next」で次に進み、IDとパスワードを入力してコモンズにログインします。
![](https://i.imgur.com/Mfb3ACR.png)
「Upload」ボタンを押して[2件だけ切り出したエクセル](https://drive.google.com/file/d/1rT3jwK3787zlAt6ANMgLwSp-AZJuhcNR/view?usp=sharing)をコモンズにアップロードします。
![](https://i.imgur.com/1Q12BAK.png)
しばらくすると無事に2件アップロードが完了しました。
![](https://i.imgur.com/5A1Ha8s.png)
[コモンズのファイルページ](https://commons.wikimedia.org/wiki/File:NDL-DC_2586549-03_Kawase_Hasui_S02.jpg)にアクセスしてみると問題なさそうです。
![](https://i.imgur.com/TxH6efe.png)

#### 4.5.2 残りをアップロード
[上記2件を除いた残り全部](https://drive.google.com/file/d/1Oraf6b7sypt9I3mxJ2RSJJ8grExIVKDv/view?usp=sharing)を同様に検証＆アップロードします。
![](https://i.imgur.com/SBx5Uyl.png)
全て完了しました。（この時は約100件の画像で24分ほど掛かりました。）
[アップロードしたカテゴリのページ](https://commons.wikimedia.org/wiki/Category:Images_from_NDL_digital_collection)を開くと全てアップロードされています。
![](https://i.imgur.com/JkphaFu.png)

### 4.6 後処理
#### 4.6.1 画像の回転
画像表示の方向が間違っている場合は角度を指定して回転させることができます。操作するにはまずコモンズの画面右上にある
個人設定＞ガジェット＞□RotateLink: ファイルページに「画像の回転を依頼」のリンクを表示する
のところをチェックします。
![](https://i.imgur.com/Rhmc4Md.png)
その上で回転したい画像のファイルページを開くと、画像の下に「(画像の回転を依頼)」と出てくるのでこれをクリックします。
![](https://i.imgur.com/FEdsMLT.png)
指定用のポップアップウィンドウが開くので回転角度を指定します。
![](https://i.imgur.com/re5zs16.png)
よく分からなくても角度を指定すると回転後のイメージをプレビューしてくれるので分かりやすいです。
![](https://i.imgur.com/dPuctFa.png)
これで合っていれば「依頼を確認」をクリックします。するとファイルページには以下のように表示された状態となり、botによる修正待ちの状態となります。
![](https://i.imgur.com/1icTisk.png)
この修正依頼はbotが見回っており、定期的に修正が行われます。処理周期は変わるので次の日には変わっているだろう、くらいのつもりでいると良いでしょう。カテゴリのページで回転が必要な画像を探して全て同様に回転させます。
## 5 課題
今回、メタデータの整備は手作業で行いましたが、そのあたりは改善の余地がありそうです。コンテンツの提供元からAPIで取得したりCSVで入手できると、より便利に充実した情報をインポート可能だろうと思います。
## 6 まとめ
オープンデータもそうですが、特に公的機関からのコンテンツ公開は二次利用が進むことが、その後押しにつながります。そのためには二次利用しやすい形での公開が重要です。しかしながらAPIなど二次利用しやすい形態での提供にはコストがかかります。限られたリソースはできるだけ公開作業そのものに使ってもらい、二次利用は外部で商用・非商用を問わず勝手にやってしまうのが理想的です。
この点、ウィキメディア・コモンズは利用者参加型であることの長短を理解してもらえれば、誰でも自由に使える二次利用のプラットフォームとしてひとつの解になるでしょう。
欧米ではGLAM機関によるオープンなコンテンツが既にかなりの数コモンズにアップロードされ二次利用されています。日本でもデジタルアーカイブが自由に利用できる状態で公開されることが増えてきましたが、コモンズへのアップロードはまだあまり行われていません。最初にエクセルのひな形を作るまでは少し大変ですが、いちど作ってしまえば同じ所蔵館であれば追加や変更は簡単です。よろしければお試しください。不慣れな方は最初のコモンズのお作法的な部分はお知り合いのウィキペディアンなどに相談して頂くと良いかもしれません。
## 7 この先
コモンズ側のメタデータは元々テンプレートをベースとしたテキスト（＋ウィキテキスト）の仕組みでしたが、2年ほど前からより機械が操作しやすい構造化データの枠組みが導入されています。両者の使い分けはまだかっちりとは決まっていませんが、最近では両方とも併記されることが増えてきました。個人的にはシンプルなテンプレート＋コモンズ内の構造化データ＋外部のウィキデータという3つの層をそれぞれに適した使い分けができると良いなと思っています。今回登録した内容にカテゴリを増やしたり構造化データを追加するやり方は別途投稿予定です。


## 8 関連情報
- [Commons:最初の一歩](https://commons.wikimedia.org/wiki/Commons:First_steps/ja)
- [一括アップロードのガイド](https://commons.wikimedia.org/wiki/Commons:Guide_to_batch_uploading)
- [ウィキメディアコモンズへのデータ転写：機関のデータアーカイブの供用](https://meta.wikimedia.org/wiki/Learning_patterns/Data_transfers_to_Wikimedia_Commons:_Sharing_institutional_archives/ja)
- [Pattypanポータル](https://commons.wikimedia.org/wiki/Commons:Pattypan/ja)
- [Pattypanダウンロード](https://github.com/yarl/pattypan/releases)
- [Pattypan簡易マニュアル](https://commons.wikimedia.org/wiki/Commons:Pattypan/Simple_manual/ja)
- [Pattypanビデオチュートリアル](https://www.youtube.com/watch?v=UCQPfZnBdfo&feature=youtu.be&t=6148)
- [ウィキテキストとは](https://meta.wikimedia.org/wiki/Help:Wikitext_examples)
- [{{Artwork}}テンプレートの詳細説明](https://commons.wikimedia.org/wiki/Template:Artwork/doc)
- [今回作成したエクセルファイル](https://drive.google.com/drive/folders/1ooR0bmxdjKFgM0k2nw4CX1jWuFehWiPU)
- [今回アップロードしたカテゴリ](https://commons.wikimedia.org/wiki/Category:Images_from_NDL_digital_collection)
- [NDLデジコレ](https://dl.ndl.go.jp/)

## 関連記事
- [コモンズのカテゴリを整理してアクセス統計を取るまで](https://qiita.com/higa4/items/b6fe06414a664a949118) - コモンズ利用のヒント2
- [コモンズのテンプレートでウィキデータ連携](https://qiita.com/higa4/items/1a4fd4d5d1b2aebfd6d3) - コモンズ利用のヒント3
- [コモンズとウィキデータで浮世絵を整理する](https://qiita.com/higa4/private/4578a8666cb8a22c29ec) - コモンズ利用のヒント4
- [コモンズ構造化データの整備と活用](https://qiita.com/higa4/private/8efe30c493d5e20dd2a6)- コモンズ利用のヒント5