🤖

Claude Code実行予約ツール「Claude Code Runner」でストレスフリーな開発を

に公開

はじめに

こんにちは!今回は、Claude Codeを使った開発で誰もが一度は経験する悩みを解決するために私が作ったツールを紹介します。

「うわっ・・・Rate limitの解除時間遅すぎ・・・?」

深夜3時とかに解除となってもその時間に起きてコマンド実行するのも嫌ですよね。そんなときにこのツールで実行予約をすると、指定した時間にClaude Codeを実行してくれるようになります。

この記事では、macOS向けに開発したデスクトップアプリケーション「Claude Code Runner」について、その機能や使い方を詳しく解説します。

対象読者

  • Claude Codeを日常的に使用している開発者
  • Claude CodeのRate Limitに悩まされている方
  • 効率的な開発環境を構築したい方

Claude Code Runnerとは

Claude Code Runnerは、macOS上でiTermを通じて指定した時刻にClaude Codeコマンドを実行するTauri 2.0製のデスクトップアプリケーションです。

https://github.com/owayo/tauri-claude-code-runner

主な特徴

  • 🕐 スケジュール実行: 指定した時刻にClaudeコマンドを自動実行
  • 🔄 Rate Limit自動リトライ: Rate Limitを検出したら自動的に再実行
  • 📊 リアルタイム監視: 実行状況とターミナル出力をリアルタイムで追跡
  • 💾 設定の永続化: 設定を保存して次回起動時も利用可能
  • 🖥️ iTerm統合: macOSの人気ターミナルアプリiTermとシームレスに統合
  • 🎯 柔軟なウィンドウ管理: iTermの新規ウィンドウまたは既存セッションでの実行を選択可能

必要な環境

このツールを使用するには、以下の環境が必要です:

  • macOS(iTerm統合のため必須)
  • iTermがインストールされていること
  • Claude Codeがインストール・設定済みであること

インストール方法

GitHubからビルド済みのバイナリを取得

以下から環境に合わせたファイルを取得してインストールしてください

https://github.com/owayo/tauri-claude-code-runner/releases

ソースからビルド

GitHubにソースを公開しているのでソースからビルドもできます

# リポジトリをクローン
git clone https://github.com/owayo/tauri-claude-code-runner.git
cd tauri-claude-code-runner

# 依存関係をインストール
pnpm install

# アプリケーションをビルド
pnpm run tauri:build

ビルドが完了すると、src-tauri/target/release/bundle/ 内にアプリケーションが生成されます。

アクセシビリティ権限の設定

初回起動時に、macOSのアクセシビリティ権限を付与する必要があります。

  1. システム設定 > プライバシーとセキュリティ > アクセシビリティ を開く
  2. Claude Code Runner をリストに追加
  3. アプリの横にあるスイッチを有効にする

この権限がないと、アプリはiTermを制御できません。

基本的な使い方

1. 通常の使用フロー

アプリケーションを起動したら、以下の手順で設定を行います:

  1. 実行時刻を設定
    Claudeコマンドを実行したい時刻を選択します。Rate Limitの解除時刻に合わせて設定すると便利です。

  2. 作業ディレクトリを選択
    「ディレクトリを選択」ボタンをクリックして、コマンドを実行する作業ディレクトリを指定します。

  3. Claudeオプションを設定
    デフォルトでは --model opus が設定されています。必要に応じて変更してください。

  4. 実行したいコマンドを入力
    Claudeに実行させたいコマンドやプロンプトを入力します。

  5. 「開始」をクリック
    アプリは指定時刻まで待機し、時刻になると自動的にコマンドを実行します。

2. 実行モードの選択

新規ウィンドウモード(デフォルト)

  • 新しいiTermウィンドウを作成
  • 指定されたディレクトリに自動で移動
  • 完全なClaudeコマンドを実行
  • 独立した環境で実行したい場合に最適

既存ウィンドウモード

  • 現在のiTermセッションにコマンドのみを送信
  • セッションでClaude Codeが既に実行されている必要があります
  • 会話を継続する場合に便利
  • コンテキストを保持したまま追加の指示を送りたい場合に使用

3. Rate Limit処理

アプリは2つのRate Limit処理モードを提供しています:

自動リトライモード

  • Rate Limitメッセージを自動的に監視
  • 制限がリセットされるまで待機
  • リセット時刻になったら自動的に実行を継続
  • 深夜の実行でも安心して任せられます

終了モード

  • Rate Limitが検出されたら実行を停止
  • 検出を通知して終了
  • 手動で再実行したい場合に使用

実際の使用例

ケース1: 深夜のRate Limit解除を待つ

  1. 午後11時にRate Limitに達してしまった
  2. 解除時刻が午前3時と表示された
  3. Claude Code Runnerで実行時刻を3:01に設定
  4. コマンドを入力して「開始」をクリック
  5. 寝る
  6. 翌朝、実行結果を確認

ケース2: 長時間のコード生成タスク

大規模なコード生成タスクでRate Limitに達しやすい場合:

  1. 自動リトライモードを有効化
  2. コマンドを入力して「開始」をクリック
  3. Rate Limitに達しても自動的に待機・再開
  4. 完了まで放置

技術的な詳細

Rate Limit検出の仕組み

アプリは以下のロジックでRate Limitを検出します:

  1. 60秒ごとにターミナル出力を監視
  2. 「esc to interrupt」の存在を確認(Claude Codeが実行中を示す)
  3. 「reset at」メッセージを検出(3回連続で出現した場合)
  4. リセット時刻を解析して待機時間を計算

iTerm統合の実装

AppleScriptを使用してiTermを制御しています:

-- 新規ウィンドウの作成例
tell application "iTerm"
    create window with default profile
    tell current session of current window
        write text "cd " & directory
        write text "claude " & options & " \"" & command & "\""
    end tell
end tell

トラブルシューティング

iTermが検出されない場合

  1. iTermが正しくインストールされているか確認
  2. アプリケーション名が「iTerm2」であることを確認
  3. 更新ボタンをクリックしてステータスを再チェック

コマンドが実行されない場合

  1. アクセシビリティ権限を確認
  2. Claude Codeが正しくインストールされているか確認
  3. ターミナルで手動でコマンドが実行できるか確認

Rate Limitが正しく検出されない場合

  1. システム時刻が正しいか確認
  2. Claude Codeの出力形式が変更されていないか確認
  3. ターミナル出力のログを確認

まとめ

Claude Code Runnerは、Claude Codeユーザーの「Rate Limitの解除時間が深夜すぎる問題」を解決するシンプルながら実用的なツールです。実際に私自身もこの問題に悩まされていたため、解決策として開発しました。Tauri 2.0で開発されており、軽量で高速に動作します。

このツールを使えば、Rate Limitに悩まされることなく、効率的にClaude Codeを活用できるようになります。深夜3時の解除時間でも、安心して寝ることができますね!

ソースコードはGitHubで公開しているので要望やバグ報告いただけると嬉しいです。

Discussion