Yukis Army knife の工夫・仕様の備忘録(タスクトレイ常駐機能編)

Posted on 2024年03月02日 (土) in 自作ツール

アイキャッチ

目次

はじめに

Yukis Army knife は多くの便利ツールを使用できる万能?ソフトです。

Yukis Army knife は当初自分用の文字数カウントソフトとして作り始めましたが、徐々にほしいと思う機能を増設した結果今のようなソフトの形になりました。

しかしアプデの際、機能を増設するだけでなく全体の使いやすさも考えて、試行錯誤しながら様々な試みを試していました。

今回はそのような試みの中で生まれた仕様の一つである、「タスクトレイ常駐」について備忘録も兼ねて書こうと思います。

タスクトレイ起動を実装した理由

Yukis Army knife は exe ファイルを実行してもすぐにウィンドウが表示されず、タスクトレイにアイコンが表示され、アイコンをクリックすることでウィンドウが表示されます(今はショートカットでも起動できます)。

またウィンドウを消してもタスクトレイに常駐し、完全に停止しません。

こんな仕様を始めた理由は、起動速度の遅さをごまかすためです。

当初は起動後すぐにウィンドウが表示・閉じるとソフトを停止するようになっていましたが、機能が増えるにつれ起動が明らかに遅くなり、使い勝手が非常に悪くなっていました。

このソフトは必要な時だけ起動しそれ以外の時は閉じる場面が多いため、この起動速度の遅さは深刻な問題です。

これを解決するするために、

  • ソフトを最適化

  • ビルドツールの変更(Pyinstaller から Nuitka などへ)

という解決策を慣れないなりに考えました。

しかし「ソフト最適化」は仕様的にどう考えても難しく、「ビルドツール変更」は Nuitka のビルド速度が遅すぎて試行錯誤が困難だったため諦めました。

また今後もどんどん機能を増やす予定だったため、これらの対策は上手く行っても一時しのぎにしかならないことは分かっていました。

「タスクトレイ常駐」はこれらの対策を諦めた頃に、ちょうど Pystray というタスクトレイにアイコンを置けるライブラリを見つけたことで思いついた案です。

裏で常時起動しておけば起動の遅さは最初だけで済み、必要なとき即座にウィンドウを表示することができます。

この対策は結果的に成功し、軽快にウィンドウ表示ができるようになりました。

苦労した点

常時起動の実装自体は思ったより簡単にできたですが、「アイコンを左クリックした際の処理」が Pystray の公式ドキュメントに書いてなかったため、ここの実装に苦慮しました。

「アイコンを右クリックした後に、メニューのウィンドウ表示をクリック」という二段階だとパッと開くイメージに沿わず、どうしても拘りたかったため自分で実装し直すことにしましたが、修正ができないバグがあまりに多すぎて頓挫しました。

ここで一回常時起動の夢は諦めかけたのですが、StackOverflow で調べていた時たまたまアイコン左クリック時の動作に関するページを見つけたおかげで、なんとか実装がすることができました。

そのページ

常時起動したことによる恩恵

元々ウィンドウ表示の高速化のために常時起動にしたのですが、この仕様に変更した恩恵は他にもたくさんありました。

  • アイコン右クリック時のメニューに、お気に入りの機能を登録できる機能を実装できた

  • ショートカット起動の実装が可能に

  • 別ウィンドウ表示系の機能の使い勝手向上

特に最初の「アイコン右クリックメニューにお気に入り登録」が可能になったことは、このソフトの別の欠点である「機能が多すぎて使いたい機能を選択するのが困難」問題への一つの答えとなりました。

終わりに

タスクトレイに常駐する仕様になったのはこのような経緯がありました。

ただこのような動作は比較的珍しい(気がする)ため、パソコンに慣れていない人は初見で理解が難しく、解説を読まずに導入した友人から「起動に失敗する」と言われてしまいました。

世の中にはドキュメントを見る前に弄るタイプの人間が多い(自分もそう)ため、ソフト起動時に分かりやすく知らせる機能も必要なのかなと反省し、改善を考えています。

今回の記事は割と独り言でしたが、ここまで読んでいただきありがとうございます。