'持ち運べるウィキペディア'をつくる(Javaを使用)
![]()
※このエントリーは書きかけです。
Introduction
- Wikipediaを外出時の空き時間(電車の中など)で読みたい。
- 英語版Wikipediaを使えば、英語の勉強にもなりそう。
そこで、Wikimediaのサイト から入手できるXMLデータを変換して、 外出時のオフライン環境でもWikipediaを閲覧できるようにします。 今回はWindows+Java環境で、 記事のタイトルを検索しながら閲覧できる状態まで持っていきます。
想定環境としては、 ネットブックのような軽量Windowsマシンで手軽にネット環境がないところでも Wikipediaを閲覧できる、というイメージでしょうか。
よいデバイスはないか?
最終的には、iPhoneのようなもっと小さいデバイスで これを実現したいのですが、検索機能まで含めようとすると、 なかなか適当なデバイスがありません。
PSPで閲覧
PHP関係のオライリー本にPSPでWikipediaを閲覧できるようにする ハックがのっていた記憶があります。 しかし、これはアルファベット順に記事を閲覧できるだけなので、 それでは不十分。
iPodTouch , SL-Zaurus
いままでの調査では、持ち運べるウィキペディアを構築できそうな デバイスは、iPodTouch(+JailBreak),SL-Zaurusくらいでしょうか。
iPodTouch+JailBreakは、いろいろな面で優れているのですが、 JailBreakして使っている人が少ないうえに、その中にWikipediaを 必要としている人が少なさそうなのでパス。
ザウルスは、新製品がずっと出ていないので、この先々将来性が あるのかわからないので、パス。
ステップ1 ウィキペディアXMLデータをH2 Databaseに変換
取り扱いを簡単にするために、 ウィキペディアデータの入ったXMLを H2 Databaseを使ってデータベースに格納します。
必要なもの
- LinuxまたはCygwinのターミナル + Javaランタイム環境 6 以上
- jawiki-20081127-pages-articles.xml.bz2 ...http://download.wikimedia.org/から入手
- wpdb.jar ...wikipedia-wpdb.html から入手
処理方法
wpdb.jarにWikipediaのXMLデータを標準入力します。
$ bzcat jawiki-20081127-pages-articles.xml.bz2 | java -jar wpdb.jar
それなりに時間がかかります。(マシンの性能にもよりますが、私の場合2時間程度かかりました。)
結果は、 1) ./db/ 以下にH2 Databaseが、
2) ./log.txt にデータベースに登録した記事のidとタイトルがCSV形式で、出力されます。
うまく処理できたかを確認
wpdb.jarには、wp.db.GetTextというテスト用のプログラムがあり、 これは、idを指定すると該当する記事の内容をコンソールに出力します。
$ java -cp wpdb.jar wp.db.GetText 1279
今回のデータでは、1279のidを持つ記事は、「プログラミング言語」でした。
どのidが存在しているかは、log.txt ファイルで確認します。
ステップ2 タイトル検索できるようにインデックスを作成する
今度は、検索用インデックスを作成します。
必要なもの
- wpindex.jar ...wikipedia-wpindex.html から入手
処理方法
先ほど wpdb.jar を実行したのと同じディレクトリで以下のコマンドを実行します。
$ java -jar wpindex.jar log.txt
※log.txt は先ほど wpdb.jar が生成したファイルです。
これも2時間程度は時間がかかります。(かかる時間はマシンの性能に依存)
結果は、./index/ に生成されます。
うまく処理できたかを確認
java -cp wpindex.jar wp.index.Test Python
'Python'のかわりに別の検索したいタイトル名を指定しても構いません。 うまくインデックスが作成できていれば、結果として該当記事の id番号が標準出力されます。
ステップ3 '持ち運べるウィキペディアブラウザ'を起動
ステップ2までで準備は完了です。 後は、検索と記事の表示機能を持った'持ち運べるウィキペディアブラウザ'を起動して、 ウィキペディアを楽しみましょう。
用意するもの
- wpui.jar ...wikipedia-wpui.htmlから入手
起動方法
ステップ1,2と同じディレクトリで以下のコマンドを実行します。
$ java -jar wpui.jar
wpui.jar, ./index ディレクトリ , ./db ディレクトリ の3つが必要なデータです。
これらをUSBメモリにコピーしておけば、
Wikipediaをいろいろなマシンで閲覧することができます。
※もちろん、マシンにJavaランタイム環境が必要です。
Javaランタイム環境もUSBにコピーして、Launch4jなどと組み合わせれば、完璧です。
使い方
このブラウザの機能は二つだけです。
- タイトルを対象にキーワード検索する
- 検索結果の一覧から該当記事をクリックして閲覧
キーワードで検索
画面右上のテキストボックス(ここでは'モンティパイソン'と記入されている)に 検索キーワードを入力し、エンターキーで検索開始です。

検索結果の一覧から記事を選択して内容を閲覧
