インスタントコモンズ


インスタントコモンズは、世界中にあるどの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;
従来のインスタントコモンズはサムネール画像をローカルにキャッシュ
既定のインスタントコモンズを $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時間、ただしローカルでサムネールのキャッシュ処理には必須
];
インスタントコモンズを経由したファイルの利用

インスタントコモンズが有効になっていれば、ウィキメディアコモンズから任意の画像を選び(例えばこの画像)、ウィキのアイコン
の隣りにある「このファイルを利用」ボタンをクリックしてマークアップコードを表示させ、ウィキにコピーペーストすると画像が利用できます。
この例の場合、以下のようなコードを貼り付け
[[File:Wikipedia-Marker-commons.svg|thumb|このウィキに埋め込まれたウィキメディアコモンズの写真]]
これでサムネイル画像が表示できます(このページの右側にあるように表示されます)。
なお、この方法でファイルを使用する場合、ファイル利用に関するライセンスその他の法的要件を遵守しなければなりません。Commons:ウィキメディア外部におけるコンテンツ利用も参照してください。
トラブルシューティング
Set custom user agent
Since 2025, Wikimedia Commons may categorize your wiki as an unidentified origin and throttle or block its requests. This is due to enforcement of the Wikimedia Foundation User-Agent Policy, to mitigate the increase of automated scraping.
Unfortunately, the User-Agent used by InstantCommons did not set any origin. This will be fixed in MediaWiki 1.45 (including MediaWiki 1.39.14+, 1.43.4+, and 1.44.1+). If you encounter a throttling or block message when using InstantCommons, please add the below code snippet to the end of your LocalSettings.php file. This snippet is compatible with MediaWiki 1.34 and later:
$wgUseInstantCommons = false;
$wgForeignFileRepos[] = [
'class' => ForeignAPIRepoWithFixedUA::class,
'name' => 'wikimediacommons',
'apibase' => 'https://commons.wikimedia.org/w/api.php',
'url' => 'https://upload.wikimedia.org/wikipedia/commons',
'thumbUrl' => 'https://upload.wikimedia.org/wikipedia/commons/thumb',
'directory' => $wgUploadDirectory,
'hashLevels' => 2,
'transformVia404' => true,
'fetchDescription' => true,
'descriptionCacheExpiry' => 43200,
'apiThumbCacheExpiry' => 0,
];
class ForeignAPIRepoWithFixedUA extends \ForeignAPIRepo {
public static function getUserAgent() {
global $wgCanonicalServer;
$mediaWikiVersion = 'MediaWiki/' . MW_VERSION;
return "$mediaWikiVersion ($wgCanonicalServer) ForeignAPIRepo/T400881";
}
}
HTTPS
2015年6月より、ウィキメディアコモンズはHTTPS経由でしかアクセスできなくなりました。インストール環境によってはルート証明書が欠損しているために、ウィキメディアコモンズにHTTPSを通じてアクセスできない場合があります。インスタントコモンズが停止する場合、以下をお試しください。
- php curl拡張機能をインストールしてください(一般的に信頼性が高く、適切な証明書がすでにインストールされている可能性が高いため)。DebianやUbuntuの場合:
sudo apt-get install php-curl - 最新の証明書が格納されていることを確認します。もしphp curl拡張機能をインストールしている場合はwebawareのページかTalk:InstantCommons#Stop_working(#正常に作動しない)を参照してください。
- ウェブ サーバーで PHP 関数
curl_exec()が無効化されていないことを確認してください。
SElinux
サーバーOSがSElinuxを実装している場合は、SELinux設定ページの専用セクションを見て、 HTTPDスクリプトとモジュールがネットワークに正常にアクセスできることを確認してください。 SElinux が原因で HTTPD スクリプトとモデルがウィキメディアコモンズのリポジトリに接続できない場合、インスタントコモンズは単に機能しないだけです。
ファイアウォールの内側
ウィキが稼働しているサーバーがファイアウォールの背後にある場合、インスタント コモンズを利用するには、ウィキ サーバーから commons.wikimedia.org および upload.wikimedia.org への http/https リクエスト送信を許可する必要があります。IP アドレスの範囲は wikitech:IP addresses に記載されています。
ファイアウォールの背後からインターネットにアクセスするためにプロキシを使用する必要がある場合は、$wgHTTPProxy を参照してください。
関連項目
- Manual:$wgForeignFileRepos – インスタントコモンズと同等の機能で、他のウィキの使用例
- PhotoCommons – 同じ機能を提供するWordpressプラグイン
- インスタントコモンズを使用中のサイト例
- Extension:QuickInstantCommons