カテゴリ: Java
EB4J を使って辞書引きアプリ
- 11月
- 23
リンク: http://www.fiveflavors.com/mt/pas_mal/archives/2008/02/post_1.html
昨年より、Nokia E61というSymbian OS 9.1/S60 3rd editionベースのスマートホンを使ってきた。ほとんど、PalmOSから乗り換えられるが、2つだけ今ひとつ乗り換えられないアプリケーションが2つある。
一つは、パスワード管理ソフトウエア。Keyring for palmOSを使ってきていて、その代替となるフリーソフトウエアがほとんどない。おしいのは、safeというアプリケーション。ただし、キーの生成機能がない。
二つ目は、辞書引きソフト。これまで、EIJIROとWDICの組み合わせで、ちょっと引きたいときに使ってきた。Linux distro上では、EBViewというアプリケーションを使っている。この辞書引きについては、EPWING形式を検索できるアプリケーションがS60上には存在していなくて、そんなQ&Aがインターネット検索をするとたくさんでてくる。MobilePocketというのを使うのが、今のところのworkaroundだが、変換が面倒。それは実は仕方なくて、EPWINGという規格がグローバルな標準ではなく、日本ローカルであって、Symbian OSベースのスマートホンを世界でもっとも出荷しているNokiaやモトローラの市場は、日本だけはその範囲外であったということだ。
EPWING形式を引くアプリケーションは作るのが面倒そうだな、と、思っていたのだが、じつはEBViewは、EB libraryを利用して作られている。そして、eb4jというEB libraryのjava実装があって、EPWING形式へのアクセスはライブラリに任せてしまえそう、ということに気がついた。
そして、このeb4jを使って、辞書引きソフトウエアを作った人がいて、LGPLで公開している。
Javaならば、Nokiaのスマートホンは、CLDC/MIDPアプリケーションを構築すれば、動かせるのだし、複雑な部分はライブラリ上にあるわけだから、GUIつまり、検索キーワードを受け取ってライブラリに渡して、結果をリスト表示する。程度のアプリケーションは、さほど難しくならなそうだな、ということで、作ってみたいとおもったのである
リファクタリング
- 4月
- 21
リンク: http://www.da-cha.jp/?q=node/378
SafeというGPLのアプリケーションの改造を行っている。CLDC/MIDP上で動くJ2MEのアプリケーションだ。メインターゲットは、Symbian OSを採用しているNokiaやMotorolaの携帯電話。
このアプリケーションは、パスワード等の情報を暗号化して、携帯デバイス上で管理するソフトウエアである。類似のアプリケーションで、Palm OSでよく利用されるものに、Keyring for PalmOSがある。
Safeは、対称鍵暗号にIDEAを使用し、パスワードハッシュにMD5を利用している。現在アルファ版のKeyring for PalmOS v2.0を参考に、つぎのことをやろうとしている。
- AESを使用
- ハッシュにSHA利用
- AESの利用に当たっては、Initial Vectorをきちんと使用し、データストアにもIVを保存する
- データの構造としてtitle/contentという単純なデータ構造から、title, account, password, note, last modified dateという形にする。
- プログラムの構造を整理する
このうち、AES利用やハッシュ、IVの処理あたりを片付けた。さてと、データ構造の変更をかけようとしたら、データ定義、export, data storeへの書き出しなど、多箇所の変更を余儀なくされる状況になった。
これは、プログラム設計がよくないということ。そこで、リファクタリングである。
暗号化されていないデータ要素(element)、その暗号化された要素、データストアへの書き出し(ファイル、XML、GUI)、データストアからの取り込み(ファイル、XML, GUI)といったものを、DecoratorやAbstractFactoryパターンで表現できそうな気がしてきたところで、就寝時間である。

