logを統合する。

jawiki meta historyのダンプは100208まで落としているのだが、 今、表に見えているのは100130のままで、 裏で100208のデータを使ってlogを統合するテスト(デバッグ)をやっている。

ウィキペディア日本語版は編集回数が5000回に達する前に履歴を分離してしまう。 ONE PIECEの登場人物一覧/log、 仮面ライダーディケイド/log20091223、 仮面ライダー電王/log20080331、 銀魂/log20081129、 BLEACH/log20080419、などなど大量生産されている。 編集回数の多い記事はすべてこのように処理されている。 とにかくどんどん増殖している。 編集履歴の統計処理とか推薦システム的にははなはだ都合が悪い。

なので、現行の記事、たとえば「仮面ライダーディケイド」と履歴分離された過去のログ「仮面ライダーディケイド/log20091223」 をくっつけて一つの記事として解析できるように作り替えているというわけ。

思うに、mediawiki は、著作権侵害や個人情報保護のために管理者権限で特定版削除という処理を行うのだが、 この処理がデータベースのクエリ的にかなり時間がかかるらしい。 学科でも mediawiki を運営しているので、調べてみたが、 特定版削除という名の機能は無いようだ。 つまり一旦記事全体(全ての版)を削除し、その後特定版以外の版だけを復帰させることで、 特定版だけを削除しているらしい。 記事の削除には大して時間はかからないが、 特定版以外の復帰には、版が多いほど時間がかかりそうな気配。 うーんと、つまり、一つの記事の版を、一つずつ別の記事にコピーしてるようなものか。 まあそりゃ時間かかるわな。 それで5000回をめどに履歴分離している、というわけか。 履歴分離というのはつまり、本文を白紙化し、「ほげほげ/log20100214」とか言う名前に移動し、 あらたに「ほげほげ」という記事を作り直し元の本文をコピーすると。 あまり美しい方法ではないよなあ。

で、管理者といっても一般ユーザと同じようにこのような一連の操作を「ブラウザ」経由で行っているらしいのだが、 もしクエリに時間がめちゃくちゃかかるようだと、ブラウザがタイムアウトしてしまって、 真っ白な画面が表示されて、 何がなんだかわからない、なにこれこわい、という状態になるようだな。 で、このような特定版削除の技術的問題を回避するために履歴分離が行われているのだが、 そういうことをやっているのは今のところ日本語版だけであり、 英語、ドイツ語、フランス語版などでは、5000件以上編集してる記事がごろごろある。 逆に日本語版には履歴分離した記事がごろごろある。 という状態。

思うに、英語版などでは、MySQL のデータベースを直接いじって特定版削除してるんじゃないのかと。 ブラウザ経由でやるから挙動不審になる。 しかし MySQL に直接クエリするってのは、明らかに、mediawiki の管理者権限ではない。 wikimedia のシステム管理者権限だよな。 日本語版にはそういうたぐいの人がいないってことだろ、たぶん。 英語版などには、管理者の直接の知り合いにシステム管理者(というか mediawiki の開発者)が居て、 頼めばさくっとやってくれてるので、問題が顕在化しないんじゃないの。 ていうか、特定版削除ってそのものずばりの機能を mediawiki に追加するだけで解決するような気もするのだがどうだろう。 この大量の版を指定する操作 など読んでいると、いかにも対処療法的に既存のやり方をパズルのように組み合わせて(ある意味涙ぐましいやり方で)対応しているように見えるよね。 見ててはがゆいよねエンジニア的には。

ページの削除と復活を利用すると、問題のある版だけを削除することができます。まず全ての版を削除して、次に削除したかった範囲外の全てを復帰させるのです。これで、問題のある版を履歴からも隠すことができます。

特定版削除のときは、通常、初版から問題版の直前までを復活させますが、版の多いページの場合は大量のチェックボックスに印をつける必要があります。ひとつずつクリックするのは大変ですしミスの原因にもなります。以下のように操作すれば簡単です。

まず、指定したい範囲の上端(たいてい問題版の直前)のチェックボックスをクリックして印を付けます。次に、キーボードのシフトキーを押さえながら下端(たいてい初版)のチェックボックスをクリックします。これで、上端から下端まで一気に印がつきます。ただし、この方法は JavaScript をオンにしておかないと機能しないため、ブラウザや PC の種類によっては使えないかもしれません。