【要約】Claude Codeの5時間レート制限、見えないと不安になったのでメニューバーに表示するツールを作った [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Claude Codeのデスクトップ版を利用する開発者が、使用量が見えないためにレート制限への不安を感じる問題。開発者は、いつ制限に達するか予測できない状態で作業を継続せざるを得ない。具体的には以下の課題がある。
- ・デスクトップ版には使用量を可視化する標準機能が存在しない。
- ・アプリ内部へのUI拡張が不可能であり、無理な実装は動作の不安定化を招く。
- ・CLI版の可視化ツールはあるが、デスクトップ版への対応が欠落している。
// Approach
OSレベルのメニューバーを活用し、ShellとPythonの役割を分担するハイブリッド構成を採用した。それぞれの得意分野を活かし、リソース消費を抑えつつ安定性を確保している。
- ・Shell:
rate_limit_poller.shが15分ごとに起動し、キャッシュファイルを監視する。この際、CLIのフリーズを防ぐため端末のふりをして応答する処理を実装。 - ・Python:
rumpsを用い、30秒ごとにキャッシュを読み込みメニューバーを更新する。 - ・プロセス管理:
signal.alarmによる実行時間制限と、プロセスグループ単位の終了処理により、ゾンビプロセスの発生を防止する。
// Result
Claude Codeの使用状況を、macOSのメニューバーから常時確認可能とした。これにより、開発者は制限を意識せずに作業に集中できる環境を得た。
- ・データの鮮度(正確・古い・未取得)を3段階で表示し、情報の信頼性を可視化した。
- ・プロセス管理の徹底により、バックグラウンドでの安定稼働を実現した。
- ・メニューバーの限られたスペースに対し、視認性と情報量のバランスを最適化した。
Senior Engineer Insight
> 役割に応じた言語選定が極めて合理的である。ShellでOSに近い監視を行い、PythonでUIを担う構成は、依存関係を最小化しつつ開発効率を高めている。特に、CLIのフリーズを防ぐために「端末になりすます」という低レイヤーの挙動を考慮している点は、実戦的な洞察を感じさせる。プロセス管理におけるゾンビプロセス対策も、常駐ツールとしての基本を抑えている。ただし、15分間隔のポーリングは、即時性が求められる監視としては不十分である。あくまで個人の生産性を補助するローカルツールとしての設計である。