clclcl Clojure製クリップボード履歴ツールをSWT対応しました

clclclという以前Clojureの勉強のために作ったクリップボード履歴ツールがあります。 今回、GUI実装をswingからSWTに変更しました。結果、動作も快適になったし、見た目も OSに馴染んだし、満足してます。課題としては、キーバインドの実装。具体的には メニューの項目をjkhlで移動したい。グローバルホットキーを有効にしたい。というものです。 簡単に調べたところ素直な方法では、できないようだったので、今後の課題です。

いろいろ実験してるのでアーキテクチャは、初期からかなり変わってます。

アーキテクチャの遷移

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を使いたくなる又は使わなければいけない状況って、あるんだろうか?もしかして無い?

まとめ

遅いライブラリを使うと、それに連られて、そのソフトウェア自体の価値も、台無しになってしまうので、 速いライブラリを使うことが重要だと痛感した。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください