送信キューのフォルダ読み込みと送信遅延を
改善した
(ChatSpooler開発記)

関連記事

1. はじめに

前回の記事では、プリンタースプーラーの仕組みを参考にしたAIチャット自動送信ツール「ChatSpooler」の開発について紹介しました。今回は、実際の使用で見つかった課題を解決し、より実用的なツールに改善した内容をお伝えします。

プリンタースプーラーとは、印刷待ちの文書を順番に処理する仕組みです。これと同じように、送信したいテキストをキューに蓄えて順次処理することで、効率的にAIチャットを利用できるツールを作成しています。

現在の機能概要 キュー管理機能 FIFO(先入先出)方式 個別待機時間設定 並び替え・削除 最大100件まで管理 リアルタイム更新 自動送信機能 キュー追加時に自動開始 プリンター感覚で利用 手動送信との併用可能 送信先自動検出 作業効率大幅向上 状態復元機能 送信前状態を自動保存 完了後に元環境復元 クリップボード内容復元 アプリフォーカス復元 透明な送信処理 フォルダ読み込み機能 テキストファイル一括読み込み 前回フォルダパス記憶 自然ソート対応 複数エンコーディング対応 効率的ファイル処理

2. 改善した主な問題点

実際にツールを使用していると、いくつかの課題が明らかになりました。

2.1. フォルダ読み込みの記憶

テキストファイルを一括で読み込む機能はありましたが、毎回フォルダを選択し直す必要がありました。

フォルダ読み込み&送信遅延改善 フォルダ読み込み改善 最後に使用したフォルダ パスを自動記憶 次回は記憶した場所から フォルダ選択開始 送信遅延改善 一回限りの遅延設定 使用後は自動的に0秒 手動リセット不要 次回は即座開始 改善効果 フォルダ操作 ・毎回の階層移動不要 ・完了ダイアログ削除 遅延設定 ・設定値の自動クリア ・操作手順の簡素化

そこで、設定管理クラスにlast_folder_pathを追加し、前回使用したフォルダを記憶する機能を実装しました。

def get_last_folder_path(self) -> str:
    """最後に使用したフォルダパスを取得"""
    return self.get("last_folder_path", "")

def set_last_folder_path(self, folder_path: str):
    """最後に使用したフォルダパスを設定"""
    self.set("last_folder_path", folder_path)
    self.save_settings()
Code language: PHP (php)

フォルダ選択ダイアログでは、記憶されたパスを起点として表示されるため、毎回同じフォルダ階層を辿る必要がなくなりました。

不要な確認ダイアログの削除

また、読み込み完了時に表示されるダイアログが作業の邪魔になることもあったので、読み込み完了時のダイアログを削除し、ログ表示のみにしました。これにより、一括読み込み後すぐに次の作業に移れるようになりました。

2.2. 送信遅延のワンタイム設定

送信開始前の遅延時間を設定できる機能がありましたが、一度設定すると次回も同じ遅延時間が適用されてしまいました。通常は即座に送信を開始したいため、毎回手動で0秒に戻す作業が発生していました。

送信遅延は「一回だけ使う設定」として動作するよう変更しました。送信開始時に設定された遅延時間を使用した後、自動的に0秒にリセットされます。

def _sending_loop(self, method: str, target_app: Optional[str]):
    """送信ループ(送信遅延リセット機能付き)"""
    try:
        current_delay = self.send_delay
        
        # 送信遅延のカウントダウン
        if current_delay > 0:
            # 遅延処理...
            
            # 送信遅延使用後に0秒にリセット
            self.send_delay = 0
            if self.send_delay_reset_callback:
                self.send_delay_reset_callback()
Code language: PHP (php)

この変更により、特別な場合のみ遅延を設定し、通常は即座に送信が開始される使いやすい仕様になりました。

3. 現在の機能概要

改善されたツールの主要機能は以下の通りです。

  • キュー管理機能では、送信したいテキストをFIFO(先入先出)方式で管理し、個別の待機時間設定や並び替えが可能です。
  • 自動送信機能では、キューにアイテムが追加されると自動的に送信を開始し、プリンターのような感覚で利用できます。
  • 状態復元機能では、送信処理中に変更された環境が自動的に元に戻り、作業の中断を最小限に抑えます。
  • フォルダ読み込み機能では、テキストファイルの一括読み込みと前回フォルダの記憶により、効率的なファイル処理が可能です。

4. まとめ

今回の改善により、ChatSpoolerは実用性の高いツールに進化しました。送信処理の高速化、作業状態の復元、利便性の向上により、AIチャットでの作業効率が大幅に向上します。特に、プリンタースプーラーの概念を取り入れた自動処理と、透明な送信処理の実現により、ユーザーは本来の作業に集中できるようになりました。技術的には、並行処理と動的確認システムの導入、適切なアーキテクチャ分離により、保守性と拡張性も確保されています。