インスタントコモンズ
インスタントコモンズは、世界中にあるどのMediaWikiからでもウィキメディアコモンズにアップロードされたメディアファイルを利用できるようにするMediaWikiの機能の一つです。
原理
2023年11月現在、ウィキメディア財団が主催するメディアの中心的リポジトリウィキメディアコモンズには1000万個以上のファイルがあります。 いずれのファイルも無料のライセンスまたはパプリックドメインの元で利用できます。公式の記章や商標の利用に関するものを除き、この他に利用上の制限はありません。 Licenses which limit commercial use are considered non-free.
コモンズが知られるようになるにつれ、そこにあるコンテンツを利用し、新しい資料を提供したいという外部からの要請も高まります。 現在技術的にはウィキメディアサーバのあらゆるWebページにある画像を直接読み込むことができます。そのようなホットリンク(画像への直接リンク)は可能ですが、いくつかの理由で問題があります。
- それは画像のライセンス条項を尊重していませんし、その他のメタデータを確実に転送することもできません。
- メディアファイル作者の正しい著作権表示が失われるだけではなく、ウィキメディアの信頼を損ねます。
- すべてのページビューでウィキメディアの帯域幅を消費します(画像がクライアント側またはプロキシ経由でキャッシュされている場合を除きます。この機能は現在、デフォルトで無効になっています)
- サムネイルや注釈の生成のような役に立つ画像操作が楽にならず、特に標準レイアウト操作でウィキが利用しにくくなります。
- URLは識別子と結びついているため、ミラーリングが複雑になります。
- 追跡不能な外部利用ページが作られてしまい、ウィキメディア側ので必要な変更が反映されなくなります。
- 特に断続的にしかインターネットにアクセスできないような国において、オフラインで閲覧ができないことが問題になります。
インスタントコモンズは、画像とメタデータをウィキメディアのサーバから簡単にキャッシュする方法を提供することで、これらの問題を解決しようとしています。 キャッシュ機能は目的の一部ですが、MediaWiki 1.27.2 / 1.28.1以降、無効になっています。 インスタントコモンズは最初にMediaWiki内で実装され、MediaWikiのすべての画像操作(サムネイル生成、キャプション付け、ギャラリー表示など)が透過的に実行できるようになりました。 しかし他のWikiエンジンでも、以下に説明するAPIを使用して、インスタントコモンズのような機能を実装することが可能です。
基本機能
インストール時にインスタントコモンズを有効にするかどうか選択できます。できるだけ多くの利用者がウィキメディアコモンズのコンテンツを利用できるように、(アップロード可能なディレクトリが指定されているならば)既定で有効化されているのが理想的です。
もしこの機能が有効化されるとwikiはウィキメディアプロジェクトのように振る舞います。すなわちウィキメディアコモンズ上にある画像などのメディアファイルを参照した際に、ファイル名を指定することでローカルwikiにアップロードされたファイルのように掲載することができます。ローカルのファイル名はウィキメディアコモンズのファイル名に優先されて使用されます。
設定
既定の方法:$wgUseInstantCommons
MediaWikiのバージョン1.16以降では、LocalSettings.php
に以下の1行を追加するだけでインスタントコモンズを使うことができます(詳細は $wgUseInstantCommons を参照してください):
$wgUseInstantCommons = true;
MediaWikiのバージョン1.13から1.15で有効化するには、Manual:$wgForeignFileRepos#ウィキメディア・コモンズにあるファイルの使用 : ForeignAPIRepo を参照してください。
この設定は即座に反映されます。そうならない場合、ウェブサーバで curl_exec()
のPHP関数が無効化されていないか確認してください。
A HTTP Proxy is configured for cURL with $wgHTTPProxy .
従来のインスタントコモンズはサムネール画像をローカルにキャッシュ
既定のインスタントコモンズを $wgUseInstantCommons 経由で有効にすると、サムネール画像はウィキメディアとホットリンクしています。[1]
これは作業が遅くファイルのキャッシュ作業に干渉する可能性があります(リンク切れの発生。)
ローカルのサーバにサムネールを作成し利用する場合は、$wgUseInstantCommons
は使わないでください。
さもなければ以下のコードを上記の手順で LocalSettings.php に書き込みます。 Manual:$wgForeignFileRepos#Usage。
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepo::class,
'name' => 'commonswiki', // 固有の名称に限定
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'hashLevels' => 2,
'fetchDescription' => true, // 省略可能
'descriptionCacheExpiry' => 43200, // 選択性、12時間(設定の単位は秒)
'apiThumbCacheExpiry' => 86400, // 選択性、24時間、ただしローカルでサムネールのキャッシュ処理には必須
];
HTTPS
2015年6月より、ウィキメディアコモンズはHTTPS経由でしかアクセスできなくなりました。インストール環境によってはルート証明書が欠損しているために、ウィキメディアコモンズにHTTPSを通じてアクセスできない場合があります。インスタントコモンズが停止する場合、以下をお試しください。
- php curl拡張機能をインストールしてください(一般的に信頼性が高く、適切な証明書がすでにインストールされている可能性が高いため)。DebianやUbuntuの場合:
sudo apt-get install php-curl
- 最新の証明書が格納されていることを確認します。もしphp curl拡張機能をインストールしている場合はwebawareのページかTalk:InstantCommons#Stop_working(#正常に作動しない)を参照してください。
SElinux
サーバーOSがSElinuxを実装している場合は、SELinux 設定ページの専用セクションを見て、 HTTPDスクリプトとモジュールがネットワークに正常にアクセスできることを確認してください。 SElinux が原因で HTTPD スクリプトとモデルがウィキメディアコモンズのリポジトリに接続できない場合、インスタントコモンズは単に機能しないだけです。
ファイアウォールの内側
ウィキを実行中のサーバーがファイアウォールの背後にある場合、 インスタントコモンズを機能させるには、 ウィキサーバーにcommons.wikimedia.orgおよびupload.wikimedia.org宛にhttp / httpsリクエスト送出を許可しておく必要があります。IPアドレスの範囲はwikitech:IP addressesにあります。
インスタントコモンズを経由したファイルの利用
インスタントコモンズが有効になっていれば、ウィキメディアコモンズから任意の画像を選び(例えばこの画像)、ウィキのアイコン の隣りにある「このファイルを利用」ボタンをクリックしてマークアップコードを表示させ、ウィキにコピーペーストすると画像が利用できます。 この例の場合、以下のようなコードを貼り付け
[[File:Wikipedia-Marker-commons.svg|thumb|このウィキに埋め込まれたウィキメディアコモンズの写真]]
これでサムネイル画像が表示できます(このページの右側にあるように表示されます)。
なお、この方法でファイルを使用する場合、ファイル利用に関するライセンスその他の法的要件を遵守しなければなりません。Commons:ウィキメディア外部におけるコンテンツ利用も参照してください。
スケーラビリティに関する考慮事項
この機能ではウィキの利用者ごとにウィキメディアのサーバ類からリソースのダウンロードを許可しており、誰かがサービス拒否攻撃を仕掛ける可能性は、利用者側のウィキでもウィキメディアコモンズでもゼロにすることが欠かせませんし、たとえばウィキメディアコモンズの最大のファイルに外部ウィキへの30K のリンクを貼り「プレビューボタン」を押す行為などがこれに当たります。 上記によりインスタントコモンズへの要求を通すには、必ずこれを有効にしたウィキで毎回アクセスログをつけ、要求者の利用者またはIPアドレスと要求時間を記録します。帯域幅上限はたっぷりとってあり、もし特定の利用者がこれを超過した場合は、それから24時間を時限としてファイルのダウンロードができません(既定値は最大で1 GB だが利用者側でも設定可能にする)。 この制限はウィキ管理者を除外します(ウィキ管理者が自分のウィキに対してサービス拒否攻撃をしかけたい場合、やめさせる必要はありません。ウィキメディアを攻撃したい場合は、ウィキメディア側からの対処を除き、やめさせることはできません。) 利用者ごとの帯域幅制限に加え、ファイルのダウンロードを公然にするなら、サイズを制限する場合があります。 この主な根拠はファイルが特定のサイズを超えるとページビューを大幅に遅延させ、ページ要求がタイムアウトする可能性すらあるためです。これらのファイルをダウンロードするなら、場合によっては外部アプリケーションを使ったほうがよく、それによりページ要求を続けなくてもバックグラウンドで作業を実行できます。 そしてインスタントコモンズにはキャッシュに上限値を設定します。この値を超過すると、それ以上はファイルのダウンロードができなくなります。
個別のウィキでインスタントコモンズの機能を 使ったからといって、ウィキメディア財団の負担が顕著に増えるとは考えにくいのです(単一のファイルはダウンロードが1回のみ必要、利用者単位の帯域制限をかけてあるため。)それでもなお公正さと合理性を重んじるなら、この機能を利用するどのプロジェクトでも下記の説明の加筆を、インスタントコモンズの説明ページにするように お願いしています。 「このファイルは、ウィキメディア財団がホストするメディアアーカイブであるウィキメディアコモンズにあるものです。ウィキメディア財団のご支援を検討いただける場合は、ご寄付の受付はこちら……」
将来の可能性
将来的にはウィキ相互の資格認証とウィキの購読に使用する画像のデータベース導入を条件として、発行者/購読モデル経由の変更通知が望まれるかもしれません。これはウィキ間の破壊行為の脅威も開くため、変更が有効になるまで遅延期間 を24時間超にすると対処できます。 もう一つの道は双方向機能、つまり任意のウィキのインストール先から無料のメディアを、コモンズに直接アップロード可能にすることです。ただし、これには少なくとも連携資格認証が必要です(FIM)。 また他のウィキ、LiquidThreads のような大規模プロジェクトの配下かもしれない場合など、その所属の利用者にコモンズの方針を伝えるには、ウィキ間の通信機能を有効にする必要があります。
関連項目
- Manual:$wgForeignFileRepos - インスタントコモンズと同等の機能で、他のウィキの使用例
- PhotoCommons — 同じ機能を提供するWordpressプラグイン
- インスタントコモンズを使用中のサイト例
- Extension:QuickInstantCommons