MediaWikiを組織に導入しよう

あなたの所属組織の主要人物に、簡単に更新可能なオンライン知識ベースを作らせたらどんなに役に立つだろうか。それこそまさにwikiの目指すところである。wikiとはユーザがすべての内容を簡単かつ迅速に追加、削除、編集できるWebアプリケーションであり、最も有名なwikiである「Wikipedia」は、冒頭で述べたような知識ベースを実現している。このwikiの利点をあなたの組織にも取り入れてみたらどうだろうか。

このアイデアに賛同するならば、まずどのwikiソフトウェアを使用するかを選ぶ必要がある。どんなwikiソフトウェアがあるかを知りたい場合は、Wikipediaの「wiki software」のページから探していくとよいだろう。「Wikipediaが使っているものを使いたい」というのであれば、MediaWikiを使うことになる。

MediaWikiのインストールは簡単だ。MediaWikiのサイトに書いてある手順に従うか、「The open source wiki behind Wikipedia」を読めばよい。あなたの組織の誰もが見られるサーバ上にMediaWikiをインストールしておくと、Webブラウザにhttp://servername/wikiなどのURLを指定することでMediaWikiにアクセスできるようになる。

インストールしたばかりのwikiには、セキュリティ機能や管理機能はいっさい設定されていない。wikiのWebページにアクセスできる人なら誰でも、ページ、コメント、ディスカッションを追加できる。しかしそれでは困るので、制限を設けることにする。まず、新しいユーザアカウントを追加する(匿名アクセスを禁止する場合は、ログオンが必要になる)。次に、wikiディレクトリ内のLocalSettings.phpファイルを探し、次の行を追加する。

$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgShowIPinHeader = false;

こうすると、ネットワーク上のユーザは誰でもwikiを閲覧できるが、ページの作成または編集は、アカウントを持っているユーザのみ可能になる。

wikiページを拡張するためにPHPの機能を追加したい場合もあるだろう。そのためには、includes/Setup.phpファイルに次のような関数を追加する。

function ParsePHPTag($Content)
{
 global $wgOut;
 $wgOut->enableClientCache(false);
 ob_start();
 eval($Content);
 $Result = ob_get_contents();
 ob_end_clean();
  return($Result);
}
$wgParser->setHook('php','ParsePHPTag');

この場合、wikiページ内でPHPを使用するときには、通常の<?PHP … ?>タグではなく<PHP> … </PHP>を使用する。

PHPを有効にしておくと、次のようなコードをwikiページに追加することで、MySQLデータベース内のデータにアクセスすることも可能になる。

<PHP>

$db = mysql_connect("localhost", "userid", "userpassword");
mysql_select_db("cstellar",$db);

$result = mysql_query("SELECT COUNT(*) stars FROM chyg85",$db);

printf("Records: %s\n", mysql_result($result,0,"stars"));
</PHP>

この例では、データベースに接続し、テーブル内のレコードの数を数えているだけである。当然ながら、データベース情報とユーザ情報については、実際の環境に応じた情報を使用する必要がある。

MediaWikiはPHPをベースにしているので、ページ内で各種のPHP機能を利用することができ、独自の拡張機能を作成してMediaWikiに追加することも可能である。この方法に興味がある人は、MediaWikiのドキュメントの「Extending wiki markup」を参照されたい。

パラメータの設定方法を確認するために、ここでphp.iniファイルを見てみよう。php.iniでは、次のようなsession.gc_maxlifetimeという行で、PHPセッションの最長存続期間を秒単位で設定している。

session.gc_maxlifetime = 1440

これは、wikiページを編集しているときに、少なくとも24分に一度は[Save page]ボタンをクリックしなければ作業内容が消えてしまうということを意味している。この期間を、適切と思われる長さ(たとえば1時間なら3600秒)に増やすことができる。

ここまで読んできて、「なんだ、こんなことなら、テキストエディタと通常のWebサーバとWebファイルへのグループアクセスを使って全部実現できるじゃないか」と思った人もいるかもしれない。確かにそのとおりなので、ここでwikiの素晴らしいところをお見せしようと思う。メインページを編集し、変更を保存した後で、[History]タブをクリックしてほしい。MediaWikiでは、誰がいつ変更を加えたのかがすべて履歴として残されている。バージョン間での差分比較も可能である。つまり、ドキュメント管理システムと社内知識ベースの枠組みを一度に実現できるわけだ。

「なるほどね。でもブラウザ上で動作するんだから、スペルチェックやワードカウントはできないだろう? 書式はどうなんだい?」という声が聞こえてきそうだが、ブラウザとしてFirefoxを使用している場合は、これらの機能を実現するFirefox拡張機能を追加することができる。Firefox 1.5.xを使用しているならば、Spellbound devをインストールして、Firefoxを再起動してみよう。その後、wikiページを編集してみると、スペルミスの部分に赤い下線が引かれることがわかるだろう。編集エリア(たとえばテキストボックス)のどこかを右クリックすると、スペルチェック用のフロントエンドが表示される。このフロントエンドから、他のアプリケーションと比べてもほとんど遜色のないスペルチェックを実行することができる。

ワードカウントも、roachfiend.comのWord Countを使用して簡単に実現できる(この場合も、拡張機能をインストールしたらFirefoxを再起動することをお忘れなく)。ただし、このワードカウント機能はテキスト編集エリア内では使用できない。この問題を回避するには、MediaWikiの[Show Preview]ボタンをクリックして、編集内容を通常のWebページとして表示すればよい。そこでテキストの任意の領域を選択し、選択領域を右クリックすると、ワードカウントのメニュー項目が表示される。そのメニュー項目をクリックすると、選択した部分のワード数がメッセージボックスに表示される。

さらに、Xinha Here!というWYSYWIG HTMLエディタをインストールすることができる。前述のスペルチェックおよびワードカウントの拡張機能は、Xinhaのウィンドウ内でも問題なく動作する。

MediaWikiをセットアップすれば、知識ベースを作成するための準備は完了だ。ここから先はあなたの仕事で、うまくいくかどうかはあなた次第である。MediaWikiとFirefox拡張機能は私の日々の作業を効率化してくれた便利なツール群であり、おそらくあなたの組織でも、情報フローや知識フローの大幅な改善が期待できるだろう。

原文