clclcl Clojure製クリップボード履歴ツールをSWT対応しました
2011/05/29
clclclという以前Clojureの勉強のために作ったクリップボード履歴ツールがあります。 今回、GUI実装をswingからSWTに変更しました。結果、動作も快適になったし、見た目も OSに馴染んだし、満足してます。課題としては、キーバインドの実装。具体的には メニューの項目をjkhlで移動したい。グローバルホットキーを有効にしたい。というものです。 簡単に調べたところ素直な方法では、できないようだったので、今後の課題です。
- ダウンロードは、https://sourceforge.net/projects/clclcl/ からどうぞ
いろいろ実験してるのでアーキテクチャは、初期からかなり変わってます。
アーキテクチャの遷移
1期
- DB: Derby
- GUI: awt
最初データベースにDerby(http://db.apache.org/derby/)を使ってましたが、初期化とかが遅くてびっくりした。
2期
- DB: sqlite3
- GUI: swing
慣れてるsqlite3にしたら、DB関連の処理は、速くなった。 普通のフォントを使えるように、swingを使ったが、swingの処理が遅くて、結局もっさりした動作になってしまっていた。
3期
- DB: sqlite3
- GUI: swt
別プロジェクト(check-git-status)でpygtkに触れてみて、gtkがよかったので、clclclもgtkで描画できるようにSWT経由でGUIを 操作するようにした。
ようやく実用的な速度で動作するようになった
swingから開放されて、ようやく現実的に使えるツールになったと思います。
結局swingって、どうなの?
swingって初期化が遅いので、小さいツールのGUIに使うのは、厳しいと思った。(それを言ったらjavaもか) 今、swingを使いたくなる又は使わなければいけない状況って、あるんだろうか?もしかして無い?
まとめ
遅いライブラリを使うと、それに連られて、そのソフトウェア自体の価値も、台無しになってしまうので、 速いライブラリを使うことが重要だと痛感した。