Evernoteエクスポートファイルの日本語検索プログラム試作中

先日、EvernoteWebクライアントの日本語検索がかなり使えるようになっていることがわかりましたので、日本語検索への要求度はやや下がりましたが、やはりローカルでも検索したい。

ということで、エクスポートファイルのXMLを読み込んで、そこから日本語検索するプログラムを作ることを目論んでいます(API使用は敷居が高そうなので、とりあえずパス)。

最初はRubyの勉強も兼ねてやろうかと思ったのですが、RubyXMLパーサーの情報があまりありません。また、ネット上にあったサンプルプログラムで試すと、大きなXMLファイルではかなり遅そうだったのと、GUIを作るのが面倒そうだったので断念。

次に、最近興味があったジャストシステムXML処理プラットフォームxfyの使用を試して見ました。

xfyXMLデータを加工してさまざまな形式で表示したり編集したりするプログラムを実現するためのプラットホーム、といったところでしょうか。いまのところ、ローカルで動くxfy Basic Editionは無償で使えるようです。

プログラミングは、XMLを変換するための言語であるXSLTを拡張した、XVCDというXML形式で記述するスクリプト言語で行います。XSLTベースなので、手続き型のプログラムではなく、XMLを変換するテンプレートを定義するというプログラミングスタイルが主体になります。そのギャップにかなり苦しみましたが、なんとか慣れてきました。

そして、今できているプログラムがこんな感じです。

メニューとかツールバーの部分はxfyのPersonalクライアントのもので、下の白いクライアント領域の部分が作成したプログラムです。WebブラウザとWebアプリケーションの関係に似ています。

とりあえず、文字列を入力して、それを本文に含むノートを絞り込んで列挙する、というところまでは動きました。タグの入力フィールドや検索以外のボタンはまだダミーです。

全エクスポートファイルを読み込んで、XPathの検索機能で絞り込むという力技のプログラムですが、ノート数が500程度であれば、そこそこのレスポンスで動いています。

ここまでで作成したXVCDスクリプトの長さは、コメント・空白行を含めてもわずか300行程度。xfyXMLプラットフォームを謳っているだけあって、XML処理に関してはかなりのポテンシャルと秘めているようです。

引き続き、色々機能追加・改良していきたいと思います。