Object Design
Home > Index > '持ち運べるウィキペディア'をつくる(Javaを使用)

'持ち運べるウィキペディア'をつくる(Javaを使用)

※このエントリーは書きかけです。

Introduction

そこで、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を使ってデータベースに格納します。

必要なもの

処理方法

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 タイトル検索できるようにインデックスを作成する

今度は、検索用インデックスを作成します。

必要なもの

処理方法

先ほど 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までで準備は完了です。 後は、検索と記事の表示機能を持った'持ち運べるウィキペディアブラウザ'を起動して、 ウィキペディアを楽しみましょう。

用意するもの

起動方法

ステップ1,2と同じディレクトリで以下のコマンドを実行します。

$ java -jar wpui.jar 

wpui.jar, ./index ディレクトリ , ./db ディレクトリ の3つが必要なデータです。 これらをUSBメモリにコピーしておけば、 Wikipediaをいろいろなマシンで閲覧することができます。
※もちろん、マシンにJavaランタイム環境が必要です。 Javaランタイム環境もUSBにコピーして、Launch4jなどと組み合わせれば、完璧です。

使い方

このブラウザの機能は二つだけです。

キーワードで検索

画面右上のテキストボックス(ここでは'モンティパイソン'と記入されている)に 検索キーワードを入力し、エンターキーで検索開始です。

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

関連キーワード