MediaWiki Languages Statistics Scripts

このスクリプト一式は、ウィキペディアにおける http://ja.wikipedia.org/wiki/Wikipedia:全言語版の統計 のページの更新を支援します。

このスクリプト一式についての、バグ報告、改良要望、感想などがありましたら、開発者までお知らせください。 このスクリプト一式は、GNU 一般公衆利用許諾契約書 (GNU General Public License, GPL) により 許諾されるフリーソフトウェアです。 ですので改良を望む方は、自分でGPLにしたがってこのスクリプト一式を自由に改良することもできます。

次の4つのスクリプトを、Rubyインタプリタで実行することができます。

次の2つは、上記のスクリプトから使われるライブラリです。

目次

使い方

スケジューラにより定められた日時に正確にスクリプトを実行したい場合、統計情報を取得した正確な日時を 得たい場合は、あらかじめ、スクリプトを実行するコンピュータの時計を Network Time Protocol (NTP) により NTPサーバと同期させておくなどの対応が必要です。

Ruby 1.8.x 、1.9.1 および JRuby 1.3.1 、1.4.0 の環境で動作することが確認されています。

Rubyスクリプトの一般的な起動方法は、次のようになります。

このスクリプト一式の運用方法の例を記します。 なお、ウィキペディアの各言語版のサイトから統計情報を取得して更新用ウィキテキストを作成するのに 要する時間は、1分前後です。

初めてスクリプトを実行する場合は、設定ファイル config.xml をテキストエディタで開いて、 ウィキペディアの利用者名やパスワードなどを適切に設定してください。 リソースファイル resource.xml をテキストエディタで開いて、内容を確認してください。

更新用ウィキテキストを作成し、自分の目で内容を確認した後に、Wikipedia:全言語版の統計 を 更新する場合の運用例を次に記します。

  1. languages-statistics-taker.rb を (ruby -w languages-statistics-taker.rb などとコマンド入力して) 実行して更新用ウィキテキストを作成します。
  2. コンソールもしくはログ (log.txt) を見て、languages-statistics-taker.rb が正常に終了したかどうかを 確認します。
  3. 正常に終了しなかった場合は、もし必要があればリソースファイル resource.xml を編集して、 再度 languages-statistics-taker.rb を実行します。
  4. 作成された更新用ウィキテキスト (作業ディレクトリのnew-page.txt) をテキストエディタなどで開いて、内容を確認します。
  5. 更新用ウィキテキストの内容に編集を要するところがあれば、編集して保存します。
  6. languages-statistics-updater.rb を実行して、Wikipedia:全言語版の統計 の更新を行います。

更新用ウィキテキストの作成と Wikipedia:全言語版の統計 の更新を一括して行う場合の運用例を次に記します。

  1. languages-statistics-driver.rb を (ruby -w languages-statistics-driver.rb などとコマンド入力して) 実行します。
  2. コンソールもしくはログ (log.txt) を見て、languages-statistics-driver.rb が正常に終了したかどうかを 確認します。
  3. languages-statistics-driver.rb が正常に終了していたならば、Wikipedia:全言語版の統計 が更新されています。
  4. 正常に終了しなかった場合は、コンソールもしくはログを見て、更新用ウィキテキスト (作業ディレクトリのnew-page.txt) が 正常に作成されたかどうかを調べます。
  5. 更新用ウィキテキストが正常に作成される前にエラーが発生した場合は、もし必要があればリソースファイル resource.xml を編集して、再度 languages-statistics-driver.rb を実行します。
  6. 更新用ウィキテキストが正常に作成された後の、Wikipedia:全言語版の統計 の更新の際にエラーが発生した場合は、 必要と思われれば時間をおいて、languages-statistics-updater.rb を実行します。

現在の統計ページをもとにしてリソースファイル resource.xml のlanguage要素をファイルに出力する場合の 運用例を次に記します。

  1. languages-resource-printer.rb を (ruby -w languages-resource-printer.rb などとコマンド入力して) 実行します。
  2. 出力ファイルの名前は、resource-languages.xml です。
  3. resource-languages.xml の内容を確認して、問題がなければ、その内容をコピーして resource.xml の languages要素の子要素群としてペーストします。

定めた日時に自動的にスクリプトを動かしたい場合は、スケジューラを使う方法があります。 例えば、Unix系システムではcron、Windowsではタスクスケジューラを、使うことができます。 また、Unix系システムとWindowsではそれぞれ、atという名前のコマンドがあり、使うことができます。 各スクリプトは、終了ステータスとして、正常に実行終了したときには 0 を、 正常に実行できなかった場合は 0 以外を、返します。

languages-statistics-updater.rb あるいは languages-statistics-driver.rb を実行してページの更新を行う場合、 既定の動作では、スクリプト運用者に、(要約欄の内容などを表示した上で) 実際に更新を行うかどうかの問い合わせ (プロンプト) を、表示します。 スケジューラを使って languages-statistics-updater.rb あるいは languages-statistics-driver.rb を自動実行する 運用をする場合は、スクリプト起動の引数に -f あるいは --force を指定することで、この問い合わせを省略し、 問い合わせを経ずにそのまま実更新を行うことができます ( -f あるいは --force を指定せずにスケジューラで 運用すると、動作が途中で停止します) 。 -f あるいは --force を指定する場合の起動方法の例を、次に示します。

動作環境と注意事項

Ruby 1.8.x 、1.9.1 および JRuby 1.3.1 、1.4.0 の環境で動作することが確認されています。 この他、Rubyの実装としては、.NET Framework で動作するIronRubyが存在しますが、 IronRubyにおける動作については、未検証です (動作する可能性はありますが、 動作確認を行っていないため、動作するかどうかはわかりません) 。

Rubyは、クロスプラットフォームのオブジェクト指向スクリプト言語です。 システムのデフォルトの環境で導入されていない場合は、システムの種類によっては (Debian GNU/Linux など) オプショナルパッケージとして導入できる場合があります。 Rubyの実行環境は、Rubyコミュニティのサイト ( http://www.ruby-lang.org/ ) から ダウンロードすることができます。 JRubyの実行環境は、JRubyのサイト ( http://jruby.codehaus.org/ ) から ダウンロードすることができます。 JRuby を使う場合は、Javaの実行環境が必要です。 JRuby 1.1 以降を使う場合は、Java実行環境 (Java SE JRE) のバージョンは 5.0 以降である必要があります。

Rubyの実行環境ごとの動作確認状況を以下に記述します。 なお、languages-statistics-taker.rb あるいは languages-statistics-driver.rb を実行すると、 オプショナルの機能として、更新用ウィキテキストをテキストエディタなどを自動起動して表示することが できます (この機能は、必要がなければ設定ファイルにより無効にすることができます) 。 環境によっては、テキストエディタなどの自動起動を行うことは、できません。

Ruby 1.8.7/Linux
安定して動作します。 テキストエディタなどを自動起動できます。 (検証環境: Linux)
JRuby 1.3.1
安定して動作します。 テキストエディタなどの自動起動はできません。 (検証環境: Linux 、Windows 2000 SP4)
JRuby 1.4.0
動作します。 テキストエディタなどの自動起動はできません。 (検証環境: Linux)
Ruby 1.9.1
動作します。 (検証環境: Linux)
Ruby 1.8.4/mingw32
動作しますが、ときどき実行途中に動作が停止します。 テキストエディタなどの自動起動はでができるかどうかは、未検証です。 (検証環境: Windows 2000 SP4)
Ruby 1.8.5/mswin32
動作します。ただしまれに、実行途中に異常終了しました。 テキストエディタなどの自動起動はでができるかどうかは、未検証です。 (検証環境: Windows 2000 SP4)
Ruby 1.8.4/cygwin
動作します。ただしたまに、実行途中に異常終了しました。 テキストエディタなどを自動起動できます。 (検証環境: Windows 2000 SP4)
ActiveScriptRuby 1.8.7(p249) with-winsock2
動作します。 テキストエディタなどを自動起動できます。 (検証環境: Windows XP SP3)
IronRuby/.NET Framework
既に述べましたとおり、IronRubyでの動作については、未検証です。

このスクリプト一式の開発者が動作確認を行った限りでは、安定して動作するのは、Ruby 1.8.7/Linux と JRuby 1.3.1 でした。 おおむね動作すると言えそうなものは、Ruby 1.8.5/mswin32 と Ruby 1.8.4/cygwin ですが、 ときに異常終了することがありました。 JRuby の最新バージョン 1.4.0 で動作することが確認されています。 また、このバージョン (0.8.4) より、Ruby 1.9.1 での動作が可能となり、また ActiveScriptRuby 1.8.7 でも 動作することが確認されています。

Ruby 1.8.5/mswin32 を使う場合は、このRuby実行環境の他に、スクリプト一式を動作させるためには、 zlib.dllとiconv.dllを別途に入手して導入する必要があります。 Ruby 1.8.4/cygwin を使う場合は、このRuby実行環境の他に、cygwin1.dll 別途に入手して 導入する必要があります。 cygwin1.dllは、Cygwin が導入されているのであれば、すでに導入されています。 Cygwinを導入しない場合は、Cygwinのセットアッププログラムでコンポーネントのダウンロードだけして、 ダウンロードされたファイル群からcygwin1.dllだけをとりだす方法があります。

各スクリプトについて

languages-statistics-taker.rb
ウィキペディアの各言語版のサイトから統計情報を取得して更新用ウィキテキストを作成し出力します。 更新用ウィキテキスト ウィキテキストの作成と出力が正常に行われた場合、終了ステータス 0 を返します。 なんらかの原因で正常に行われなかった場合、終了ステータスとして 0 以外を返します。
languages-statistics-updater.rb
languages-statistics-taker.rb が作成し出力した更新用ウィキテキストで、 全言語版の統計ページを更新します。
languages-statistics-driver.rb
ウィキペディアの各言語版のサイトから統計情報を取得して更新用ウィキテキストを作成し出力します。 更新用ウィキテキストが正常に作成され出力された場合、そのウィキテキストで全言語版の統計ページを更新します。 統計ページを更新が正常に行われた場合、終了ステータス 0 を返します。 なんらかの原因で処理が中断した場合、終了ステータスとして 0 以外を返します。
languages-resource-printer.rb
現在の統計ページをもとにしてリソースファイル resource.xml のlanguage要素をファイルに出力します。 出力ファイルの名前は、resource-languages.xml です。
languages-statistics.rb
全言語版の統計のページの更新を支援するライブラリです。
wikibot.rb
ボットのライブラリです。

参考までに、このスクリプト一式のRDocドキュメントを提供しています。

動作確認 (テスト) の方法

このスクリプト一式のテストを行う場合は、実際のウィキペディアプロジェクトのウィキペディアサイトを 利用して行うことになるでしょう。 別の方法として、自分のパーソナルコンピュータにローカルで複数言語のMediaWikiウィキを構築して テストすることについては、難しいと思われます。 理由は、このスクリプト一式が、特別:Sitematrixの機能を必要としており、かつ特別:Sitematrixは MediaWikiに標準で含まれる機能ではなく拡張機能であり、またウィキメディア財団が運営するウィキでなければ、 特別:Sitematrix拡張機能はおそらく正しく動かないからです。 http://www.mediawiki.org/wiki/Extension:SiteMatrixのページの冒頭に、 "Note: This extension is made for Wikimedia wikis, and will probably not work on any other wiki." と述べられています。

いずれの方法のテストを行うにしても、設定ファイル config.xmlを、 あらかじめ編集し適切に設定しておくことが必要となります。 すくなくとも、利用者名とパスワードは、ご自身のアカウントに応じて編集しておく必要があります。

実際のウィキペディアプロジェクトのウィキペディアサイトを利用して行うテストについて、 languages-statistics-taker.rb および languages-resource-printer.rb のテストについては、 ウィキペディアサイトを参照するのみであり、更新は行わないため、 あまり神経を使うようなことはないでしょう。 languages-statistics-updater.rb と languages-statistics-driver.rb のテストについては、 ウィキペディアサイトの更新を行います。 このスクリプト一式が目的とする「Wikipedia:全言語版の統計」の更新を行うのですが、 その代わりに、設定ファイルを編集することにより、更新対象ページを、サンドボックスページなど ほかのページとすることも可能です。

テストのためにサンドボックスページを更新対象とする場合は、config.xmlに次の記述を追加する 必要があります。

<editTargetPage>&sandbox-header;</editTargetPage>

上記の記述が省略された場合は、スクリプトは「Wikipedia:全言語版の統計」ページの更新を行います。

検討事項

このスクリプト一式のライセンス

Copyright (c) 2009 AutumnSnow ( http://ja.wikipedia.org/wiki/利用者:秋雪 )

このスクリプト一式は、フリーソフトウェアです。 このスクリプト一式の利用者は、GNU 一般公衆利用許諾契約書 (GNU General Public License) の下で、 このスクリプト一式を、頒布および/あるいは改変することができます。 この利用許諾契約書の複製物は、COPYING.txt の名前のファイルで提供されています。 このスクリプト一式の最新版は、 http://wikimedia-tools.sourceforge.jp で提供されています。

この文書のライセンス

Copyright (c) 2009 AutumnSnow ( http://ja.wikipedia.org/wiki/利用者:秋雪 )

この文書を、フリーソフトウェア財団 (The Free Software Foundation) が発行した GNU フリー文書利用許諾契約書バージョン 1.2 (GNU Free Documentation License, Version 1.2; GFDL 1.2) もしくはそれ以降のバージョン、 あるいは クリエイティブ・コモンズ 表示-継承 3.0 非移植 (Creative Commons Attribution-ShareAlike 3.0 Unported; CC-BY-SA 3.0) の下で、 複製、頒布および/あるいは改変することを、許可します。 変更不可部分は指定しません。表カバーテキストは指定しません。裏カバーテキストは指定しません。 GNU フリー文書利用許諾契約書バージョン 1.2 の複製物は、``GNU Free Documentation License'' ( http://www.gnu.org/licenses/old-licenses/fdl-1.2.html ) という章に 含まれています。 クリエイティブ・コモンズ 表示-継承 3.0 非移植 の詳細は、http://creativecommons.org/licenses/by-sa/3.0/deed.ja および http://creativecommons.org/licenses/by-sa/3.0/legalcode を参照してください。