Jasperが重くなったときにやったこと


数ヶ月前からGithub issue readerとしてJasperを使い始めました。

Githubの検索クエリが使えるので、自分が進めているプロジェクトのラベルでまとめておいたり、Review Requestedを入れておくことで、レビュー依頼を忘れずになったりしますし、Githubのチームでメンションが飛んできたりするので、その辺をあとで見返しやすくなったりと、大変重宝しているツールです。
縦3カラムのメールクライアントのような感覚なので、メーラーで振り分けをちまちまやってた人には受け入れやすいかと思います。
お陰で、Githubのベルマークでタスク確認をしなくて済むようになり、メールチェックの代わりにJasperでメンションチェックをするようになりました。
値段も$12なので約1400円程度ですし、弊社ではGithub Enterprizeを使っていて、GH:Eに対応したissue readerは殆どないのでほぼ一択に近いです。
cashewはもしかしたらGH:E対応しているかもですが3600円で高い。あとgitscoutというのもあるけど、GH:Eに対応していない。

しかし、そんなJasperでも微妙だなぁと思う所があって、ショートカットキーによるスクロールが使いづらいこと、そしてもう一つは起動時に重くなって、ぐるぐるしてしまうことです。
ショートカットキーによるスクロールが使いづらいのはまぁ致し方無いとして、いつまでたっても読み込み中になってしまうのが結構ストレスでした。

なんとかならないものか調べていたところ、そもそもJasperがSQLiteを使っているということだったので、その視点で調べてみました。
SQLiteもPostgreSQLみたいに最適化が行えることがわかりました。
Jasperのdbファイルはmain.dbというSQLite形式のファイルになっています。
そこにGithubから取得したissueやPRがキャッシュされているようで、auto vacuumは有効になっていませんでした。
そこで、vacuumを試しに実行したところ、体感でわかるくらい軽くなったのでその手順を残しておきます。
※バックアップ必須。

$ cd /Users/ユーザー名/Library/Containers/io.jasperapp/Data/Library/Application Support/jasper/io.jasperapp
$ cp main.db{,.bak}
$ sqlite3 main.db vacuum 
$ du -s ./*
4.0K    ./config.json
5.1M    ./main.db
7.8M    ./main.db.bak

たかだか8MBで重くなるのかは怪しいところですが、vacuumを実行した所、約3MB(約30%)減っているのがわかります。
それからは今のところぐるぐるしてしまうことも無くなったので一つ学びになりました。
ちなみに、SQLiteの場合、一度auto vacuumを無効にしてしまってテーブルを作成すると後から変更できないようなので、もし気になる場合は定期的に手動でやらないといけないようです。

こちらのサイトを見ると、SQLiteのauto vacuumによる影響について言及されているので、同じような理由からauto vacuumにはなっていないのかもしれません。

また、重くなったら実行してみようかなと思いました。


色々書いてますが、Jasperはとても便利なのでぜひ試してみることをオススメします。30日間お試しができます。
Jasperapp.io

カテゴリー: IT