DokuWiki

DokuWikiは、MediaWikiとはを単純にし、管理機能やアクセス制限機能を使いやすくした感じの簡易Wikiです。

日本では徐々に知名度が上がってきている段階だけど欧米では非常に人気があり、「気軽にwikiをやってみたい」となったらまずこのDokuWikiになります。

開発者のAndreas Gohrがドイツ人という事もあり、特にドイツ、イギリス、スイス、フランスあたりでは人気。

思えば、英語のつづりだと「DocuWiki」になるはずですが、ドイツ語つづりの「DokuWiki」ですね。

コンテンツ

DokuWikiの特徴

特に便利なのが、

  • 強力かつ使いやすいユーザー管理機能・アクセス制限機能。
  • ページ名の変更・移動機能

「特定のページ(サイト全体)を、自分だけが編集出来るようにしたい」といった事が簡単に出来る。

また、ページ名変更・移動はサイト内の全リンクを書き替えてくれるので、リンク切れが起こりにくい。

さらに、

  • 名前空間をサポート。
  • Wiki文法は分かりやすく、他のWikiとの共通点が多め。入力補助機能つき。
  • MediaWikiとは風の、セクション編集機能・見出し自動生成機能を標準装備。
  • 多言語対応にかなり積極的。アラビア語のような、右から左に書く言語にも正式対応。
  • データベース不要。

といった特徴があります。

短所も目立つ

操作が簡単な分、「え? それが出来ないの?」というものが結構ある。

標準では、文字サイズを変えたり文字色を変えたり出来ない。typographyプラグインfontsizeプラグインcolorプラグインなどのプラグインを使うとか、HTML表示を有効にするなどの工夫が必要。

定義リストタイトル1
     定義リスト本文1

定義リストタイトル2
     定義リスト本文2

といった、定義リストも(標準では)用意されておらず、definitionlistなどのプラグインが必要。

ただ、簡単さは開発者もユーザーも理解しているようで、「もっと高機能なサイトを作りたくなったら、他のCMSにのりかえ」という事になるっぽい。

大量のページがあるサイトには不向き

DokuWikiは、小規模なまとめサイトが多いです。これは、大量ページを処理する仕組みが弱いのが一因です。

  • ブログやCMSだと当たり前に出来るページ分割(Pagination)が、DokuWiki本体でもプラグインでも出来ない。よって、Dirプラグインなどを使って大量のリストを取得した場合でも、1ページ以内に表示するしかない。
  • ブログやCMSだと当たり前に出来る名前空間(カテゴリ)の変更は、DokuWiki本体でもプラグインでも出来ない。よって、
    1. 名前空間を変更する場合は、「新しい名前をつけた名前空間を作成→古い名前空間から新名前空間にPagemoveプラグインでページ移動」という作業が必要になる。
    2. 変更したい名前空間が上位にあればあるほど移動させるべきページが増え、莫大な手間がかかる。

特に、名前空間の変更の手間は問題です。理屈上、「名前空間を不用意に変更すべきじゃない」というのはわかるけど、 名前空間を変更しづらいのは、単純に使いにくい

日本語環境特有の問題

日本語環境だと、さらに以下のような問題が。

  • 日本語のような2バイト文字への対応は不完全。日本語でサイト作りをすると、さまざまな不具合が起こる。
    • URLエンコードされたリンクとされていないリンクが混在。その結果、「ページは存在するのにリンクが切れている」という事が起こる。 →2009年時点では、本体と主だったプラグインの多くで解消
    • 単語の切り出しを半角スペースでやっているため、アジア系言語のように「単語を連続して書く」場合、まともに検索出来ない。 →アジア系言語では1文字単位で切り出すようになり、検索は一応使えるようになった。
    • 日本語(というか、2バイト文字)で正常に動作しない・使う意味がないプラグインが結構ある。1)
  • PHPセーフモードがOnになっている場合は、たぶんまともに動作しない。 →safemodehackでほぼ回避可能
  • 日本語の参考資料は少ない。資料のほとんどが英語・ドイツ語・フランス語。
  • 「解説はフランス語のみ」「ドイツ語で一番まともに動く」といったプラグイン・テンプレートもある。

と、日本語で使うには微妙に問題があるけど、数あるWikiの中でももっとも使いやすい一つなのは確か。

検索の不具合・一部のプラグインの不具合は結構根が深い

DokuWikiで日本語を検索するとまともにヒットしなかったりハイライトがおかしくなったりする。また、一部のプラグインが全く動作しなかったりする。

これらは、結構根の深い問題。

DokuWikiの単語切り出し方法

DokuWikiは基本的に、転置インデックス2)の検索システム。

  1. 文章を半角スペースで区切り、単語を切り出す
  2. 切り出した単語を、インデックスファイルに登録
  3. 検索や一部のプラグインが、そのインデックスファイルを参照

という風に動き、検索の高速化などを図っている。
英語やドイツ語など、欧米系の言語ではこれでさほど問題はない。3)

しかし、日本語、中国語、韓国語、タイ語など、「文章は、文字を連続して書く。スペースで単語と単語の間を分けたりはしない」という言語では、かつては重大な問題が生じていた。

  1. 単語と単語の間に半角スペースがないため、単語を切り出せない
  2. その結果、段落全体が「単語」として登録されてしまう事があった
  3. そのため、検索してもほとんどヒットしない

この問題が指摘され、暫定的に「アジア系文字が現れたら文章を1文字ごとに切り、1文字=1単語としてインデックスファイルに登録する」という風に改良された。これにより、一応日本語でも検索が使えるようになった。

でも、たとえば「ブログ」で検索をかけると、「ブ」「ロ」「グ」の3文字で検索をかけたのと似たような4)結果に。

日本語での根本的解決

この問題を解決する方法はいくつかあるけど、よく知られていてかつDokuWikiの基本動作を大きく変えずに対応するには、

  • 形態素解析器を使う……あらかじめ作成しておいた辞書を元に、日本語を分かち書きする
  • N-gram……文章を一定の文字数で切り、単語として登録していく

のどちらか(あるいはその複合)。5)

完璧な辞書を整えれば形態素解析の方が正確に判定出来る可能性が高いけど、未知の言語、口語が多用される領域(携帯サイトなど)ではN-gramの方が有用。

でも、

  • 「全世界でよく使われ、簡単に導入出来るN-gram方式がなさそう」との事だった
  • 形態素解析器は、各言語にどういうものがあるのかよくわからず、標準機能として組み込むのは現実的ではない

といった事で、「アジア系文字は1文字を1単語」状態はいまだに改善されていない。

現在、形態素解析器のMeCabを使って分かち書きしインデックスファイルに登録する方法が紹介されている。

http://www.higuchi.com/dokuwiki/dokuwiki:localize

これにより、検索や一部プラグイン(autolink、cloud他)での不具合をある程度回避出来るようになる。

MeCabの導入は、

  • 環境によっては結構手間
  • DokuWiki本体の検索結果表示はいろいろ変だけど、アジア系言語は自動的にフレーズ検索する仕様なので、以前と違っておおむね目的のページがヒットする
  • インデックスを簡単に再構築出来るSearchIndexプラグインは、動作が微妙におかしい

などあるため、必須というわけではない。

/inc/fulltext.phpを少し修正すると、検索結果のハイライトは正しい表示になります。→ 日本語検索の修正

日本での普及は?

2006年春頃は、実験的に導入している人はそこそこいたけど、本格運用しているっぽいサイトはPukiWikiはもちろんMediaWikiとはに比べてもはるかに少なかった。

2009年頃には日本語でもかなりサイトが増えてきて、PukiWikiからの移籍も見られるようになっている。

リンク

公式サイト http://www.dokuwiki.org/
バイオ関連の用語や情報のまとめ http://wiki.symplus.co.jp/

1) だんだんましになっているが、2009年時点でもそれなりにある
2) 本にたとえれば、索引みたいなもの
3) 格変化、合字(リガチャ)、縮約といったあたりで不正確になるけど、致命的じゃない
4) 完全に同じではない
5) DokuWikiの「アジア系言語は1文字を1単語とみなす」改良は、ごく単純なN-gram方式とも言える
 
wiki/dokuwiki.txt · 最終更新: 2009/05/03 18:27 by admin
 
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki