MediaWikiは、Wikipedia.comなどのサイトで使われているオープンソース・ソフトウェアだ。単にwikiというだけでなく、Webサイトとイントラネットのための完備したコンテンツ管理システムでもある。しかし、MediaWikiをインストールしたあと、データをインポートするのに苦労した経験を持つ人は多いだろう。そんなときに大いに役立つのがGPLライセンスで提供されているPerlスクリプトcsv2wikiだ。これを利用すると、wikiに大量のコンテンツをインポートすることができる。利用するには、当然、Perlがインストールされていなければならない(Windowsの場合はActive Perl)。csv2wikiはwiki.plというPerlスクリプトを呼び出し、これがwikiにログインし記事を編集する。
コンテンツをインポートする際は、まずコンテンツをスプレッドシート形式で用意する。各列には適切なヘッダーを付けておくこと。次に、テンプレートを用意する。wikiは、このテンプレートに従ってコンテンツをレイアウトしフォーマットする。スプレッドシートの列ヘッダーとwikiテンプレート上の指定は1対1に対応する。
たとえば、画像付きの辞書をインポートする場合、次のようなスプレッドシート(tasty.csvとする)を用意する。
| Term |
Definition |
Image |
Tag |
| Apple |
A delicious fruit. |
apple.png |
Fruit |
| Walnut |
A tasty nut. |
walnut.jpg |
Nut |
| Asparagus |
A tasty vegetable. |
asparagus.gif |
Vegetable |
そして、次のようなwikiテンプレート(Template:Tastyとする)を用意する。
==Term==
{{{Term}}}
===Definition and Picture===
{{{Definition}}}
http://example.com/{{{Image}}}
[[Category:{{{Tag}}}]]
最後にジョブ・ファイルを用意する。CSVファイルのコンテンツをwikiにインポートする際に必要な情報をすべて含むファイルだ。ソース・ファイル、wikiのURL、ユーザー名とパスワード、分離符(デフォルトはコンマだが、タブや任意の正規表現を用いることもできる)、記事のタイトル、テンプレート名の各フィールドから成る。上のCSVファイルをインポートする場合、ジョブ・ファイル(tasty.txtとする)は次のようになる。ここで、記事のタイトルはスプレッドシートの第1列にあるが、ジョブ・ファイルでは「1」ではなく「0」と指定する点に注意。
csv: tasty.csv wiki: http://example.com/wiki/index.php user: username pass: password title: 0 template: Tasty
以上の3ファイルが用意できたら、「perl csv2wiki.pl tasty.txt」というコマンドを実行する。これで、データがインポートされる。
あらかじめCSVファイルに変換する必要はあるが、このツールでさまざまな情報源のコンテンツを高速にインポートすることができる。試用では、20を超える列を含むスプレッドシートの4,000以上の記事を1時間程度でインポートすることができた。
csv2wikiは作者のサイトOrganicdesign.co.nzとWikiExpert.comにしかなく、ダウンロードするにはユーザーIDが必要だ。しかし、それだけの価値はあり、その後の制限はない。また、対価を支払えば、詳細な説明書とサポートを受けることができる。
