FRL 自由研究ラボ

自作アプリ紹介 — APP 04

タスクキュー

— AI に頼む作業を貯めて、枠の空いたときに1件ずつ任せる —

思いついた作業をその場で AI に頼むと、使える枠をすぐに使い切ってしまいます。そこで、作業をいったん貯めておき、枠に余裕があるときに1件ずつ任せる、自分専用のタスクキューを作りました。 この記事は、その開発の記録です。AI が途中で人に聞けない問題、「できました」を信じない仕組み、定期巡回、そして任せきりにしないための工夫を、順に紹介します。

この記事を読むとできること

  • 5時間の枠と1週間の枠を、バランスよく使うために、作業を貯めて1件ずつ任せる考え方が分かります
  • ターミナルを開かずに、ブラウザから Claude Code を動かす作りが分かります
  • AI の「できました」を信じずに、機械に合否を決めさせる作り方が分かります
  • AI を自動で回し続けるときに、人が決める場面を残す理由が分かります

想定している使い方

家の Mac の中でタスクキューを動かしておき、ブラウザ(Safari や Brave など、Web ページを見るためのアプリ)で開いて、作業を登録したり、進み具合を見たりします。 この記事は開発の記録でもあります。どこで困り、どう直したかを順に書きました。説明は Mac を前提にしていて、コードは載せていません。

  1. なぜ作ったのか ―― 2つのねらい
  2. 1件ずつ、枠の範囲で消化する
  3. 壁① AI が途中で、人に聞けない
  4. 壁② 「できました」は本当か
  5. 定期巡回という「特別枠」
  6. 壁③ 頼んでいない変更が増える
  7. 画面の熟成
  8. 任せきりにしないための工夫
  9. 使ってみて変わったこと
  10. 関連する項目

読む目安:約14分 ・ 自作アプリ紹介 APP 04 ・ 図3枚 ・ 実際の画面5枚

なぜ作ったのか ―― 2つのねらい

タスクキューは、Claude Code(Mac で動く AI エージェント)にやらせたい作業をいったん貯めておき、使える枠に余裕があるときに、1件ずつ自動で実行するための、自分専用の管理画面です。作った理由は、2つあります。

ねらい① 5時間の枠と1週間の枠を、バランスよく使い切る

Claude Code には、使える量の枠が2つあります。5時間ごとに回復する枠と、1週間ごとに回復する枠です。量は、トークン(AI が読み書きする文字の量の単位)で数えます。 枠は、使わないまま回復の時刻が来ると消えます。かといって、思いついた作業をその場で頼み続けると、5時間の枠を使い切って手が止まったり、週の途中で1週間の枠が尽きたりします。

そこで、やりたい作業をまず待機列(順番を待つ列)に登録しておき、2つの枠それぞれに自動で実行してよい上限を決めました(初期値は、5時間の枠が50%、1週間の枠が80%)。 上限の手前まで、余っている分を1件ずつ消化させます。手で頼む分の余裕を残しながら、消えてしまう枠をなるべく残さない使い方です。

✕ 思いつくたびに、その場で実行すると やりたい作業 次々に出てくる その場でまとめて実行 使う量が一気に増える 5時間の枠も 1週間の枠も、 すぐ使い切る ○ いったん貯めて、1件ずつ任せると やりたい作業 次々に出てくる 待機列に貯める 枠に余裕があるとき、1件ずつ 枠の範囲で、 安心して消化できる 作業を思いつく速さと、使える量の増える速さは違う。その差を、待機列で受け止めます。

図の見方:上の段は、思いついた作業をその場で次々に実行するやり方です。使う量が一気に増えて、枠をすぐに使い切ります。 下の段は、作業をいったん待機列に貯めて、枠に余裕があるときに1件ずつ任せるやり方です。使える量の範囲で、落ち着いて消化できます。

タスクキューの画面。5時間と1週間の使用率のバーに、自動実行の上限の目盛りがあり、その下に上限や時間帯を決める欄がある
実際の画面(サンプルの作業を入れて撮ったものです。スマホでは横にスクロールできます):2本のバーが2つの枠の使用率で、縦の目盛りが自動実行の上限です。下の欄で上限を変えられます。

ねらい② ターミナルを開かずに、Claude Code を動かす

Claude Code は、ふつうターミナル(文字で命令を打ち込むためのアプリ)を開いて、命令を打って動かします。作業のたびにターミナルを開いて打つのは手間ですし、枠が空く夜中や外出中には、手を出せません。

タスクキューでは、ブラウザの画面で作業を登録するだけです。裏側で、Claude Code を画面なしで指示だけを実行する形で起動して、頼みごとを渡します。 ブラウザから進み具合を見て、「今すぐ実行」で手動でも動かせるので、ターミナルを開く場面がなくなります。

使い続けるうちに、貯めて消化するだけでなく、AI に任せたあとを、どう確かめ、どう人が関わるかのほうが大きな課題だと分かってきました。この記事の後半は、その試行錯誤の記録です。

1件ずつ、枠の範囲で消化する

作りは小さく始めました。Python(プログラミング言語)で書いた1つのプログラムが、画面と、作業の待機列と、完了した記録を受け持ちます。 実際の作業は、別のプロセス(独立して動くもう1つのプログラム)として、Claude Code を、画面なしで指示だけを実行する形で起動し、頼みごとを渡して任せます。

決めたのは、同時には1件しか動かさないことです。複数が一度に動くと、使う量が急に増えますし、同じファイルを互いに壊し合うおそれがあります。

自動で実行するのは、自分で決めた上限より、使用率が低いときだけです。5時間の枠と、1週間の枠に、それぞれ上限を決められます。初期値は、5時間の枠が50%、1週間の枠が80%です。 「実行してよい時間帯」も決められ、終日にもできます。使用量を調べる部分は、仮想サーバーパネル(別の記事で紹介)と同じ共通の部品を使っています。

時間制限は、あえて付けていません。以前は作業ごとに制限時間を決めていましたが、長引く作業が途中で止められ、やり直しでかえって量を使っていたので、やめました。固まったときは、画面の「中止する」で止めます。

タスクキューの「これからやる」の一覧。作業ごとに、優先度・フォルダ・完了条件の有無が出ており、次に自動で実行される作業に印が付いている
実際の画面:待機列の一覧です。次に自動で実行される作業には印が付き、完了条件(あとで説明します)を持つ作業にはその印が出ます。

壁① AI が途中で、人に聞けない

人に質問しない動かし方では、AI が途中で迷っても、こちらに聞けません。すると、AI が適当に決めて進めるか、迷ったまま失敗していました。

そこで、AI が人に確認したいときの合図を決めました。AI が返事の最初に、決まった合図の文字列と質問を書いたら、その作業は「中断(確認待ち)」の状態で止まります。 画面に質問が出るので、ブラウザで答えを入力すると、止まった所の会話の続きから再開します。

この仕組みで、「判断に迷ったら止まって聞く」という動きを、無人の実行にも持ち込めました。止まっている件があるときは、ブラウザのタブの題名にも件数を出して、気づけるようにしています。

タスクキューの「中断」タブ。AI からの質問と、答えを書く欄、「回答して再開」のボタンがある
実際の画面:「中断」タブです。AI の質問が出ていて、答えを書いて「回答して再開」を押すと、止まった所の続きから作業が再開します。

壁② 「できました」は本当か ―― 合否を機械に決めさせる

AI が「直しました」と報告しても、実際には動かなかったり、テストが落ちていたりすることがありました。AI の自己申告は、そのまま信じられません。

そこで、作業ごとに完了条件(確かめるための命令の文)を持てるようにしました。AI の作業が終わると、そのコマンドを自動で実行します。 自動テスト(動作を機械に確かめさせるプログラム)の終了コード(実行が成功したかを数字で返す値。0 が成功)が 0 のときだけ完了とみなし、0 以外のときは、出てきたエラーの内容を AI に渡して、もう一度直させます。やり直しは最大3回で、それでも通らなければ、人に見てもらいます。

完了条件は、手で書くと、中身と関係のない理由で必ず落ちることがありました。フォルダ名の書き換え忘れや、パスの書き方の違いです。そのため、よく使う形は選ぶだけで入るようにしました。

① AI が作業をして、「できました」と報告する ② 完了条件のコマンドを、自動で実行する AI の報告ではなく、機械が合否を決める ③ 終了コードが 0 なら、完了 0 以外なら、エラーの内容を AI に渡して直させる ②へ戻る(最大3回) ④ 3回で通らなければ、人に見てもらう 「できました」を信じず、終了コードを完了の条件にする

図の見方:上から順に、AI の作業 → 完了条件の自動実行 → 合否の判定、の流れです。落ちたら、エラーを渡して②へ戻ります。 最大3回やり直しても通らなければ、そこで止まって、人に見てもらいます。

タスクキューの「完了した履歴」。作業ごとに、完了・失敗の印と、完了条件を確認できたか、満たさなかったかの印が付いている
実際の画面:「完了した履歴」です。「完了条件を確認」の印は機械が確かめて通ったもの、「完了条件を満たさず」の印は、やり直しても通らずに止まったものです。

定期巡回という「特別枠」

ふつうの作業とは別に、ずっと回り続ける3つの巡回を、一覧とは別の「特別枠」として置きました。回数や、前回どこまで見たかを、画面に残すためです。

まわし方は1日1回、5時間の枠の使用率が 0% のときです。今日ぶんが済んだ巡回は、その日はもう選びません。 ふつうの作業を先に片づけて、空いた所で巡回を進めます。まわすペースは、枠ごとに選べます。

コードを直す2つの巡回(バグと使い勝手)は、始める前に土台が壊れていないかも確かめます。全体の自動テストを1回走らせて、対象以外のアプリに失敗があれば、手を付けずに止めて、原因のアプリ名を報告します。 土台に失敗があるまま作業を重ねると、あとの巡回が、すべて完了条件で止まってしまうからです。実際に、あるアプリの未確認のテストが原因で、続く巡回が2日続けて止まったことがありました。

公開サイトの記事の巡回は、記事を直しても、公開まではさせません。サイトへ送るのは、必ず人が、画面のボタンを押して行います。 また、書き手の体験や主張は、AI の推測で足したり変えたりしないよう決めてあります。補うのは説明だけです。

壁③ 頼んでいない変更が増える ―― 「調べる → 選ぶ → 直す」

使い勝手の巡回は、はじめは、見つけた所をその場で最大5か所まで直す形でした。ところが、自動で改善させていると、頼んでいない設定項目や画面の部品が増えて、かえって使いにくくなることがありました。 何を直すのかを、本人が見る機会がないまま、コードが変わっていたからです。

そこで、1周を2回に分けました。1回目は、改善の候補を挙げるだけで、コードには一切触りません。 候補は画面に並ぶので、人がチェックボックス(四角にチェックを付ける欄)で直す項目を選びます。2回目は、選ばれた項目だけを直します。

見に行くアプリも、人が選びます。AI に選ばせると、同じアプリに偏ったからです。「よく使う・ふつう・たまに」の3段階を手で付けると、まわってくる回数が、長い目で 3 対 2 対 1 の割合になります。 選ぶまで、次の巡回は走らせません。走らせると、候補が上書きされて、選ぶ機会ごと消えてしまうからです。実際に、手動で巡回を押して、候補が選ばれないまま消えてしまったことが何度かありました。

この2段階の形は、のちに公開サイトの記事の巡回(指摘の項目と、自分の指示を選べる)にも広げました。バグの巡回には、見に行くアプリを選ぶ機能を足しました。

① 調べる回 改善の候補を挙げるだけ。コードには一切触らない ② 人が選ぶ 画面のチェックボックスで、直す項目だけを選ぶ ③ 直す回 選ばれた項目だけを直す 選ぶまで、次の巡回は走らない。頼んでいない変更を、入れない

図の見方:上から順に、調べる → 人が選ぶ → 直す、の3段です。真ん中の「人が選ぶ」を挟むことで、頼んでいない変更が入らないようにしています。

タスクキューの「定期レビュー(使い勝手)」。調べる回で挙がった3件の候補にチェックボックスがあり、「選んだ3件を直す」のボタンがある
実際の画面:「調べる回」が挙げた候補が並び、直したいものだけにチェックを付けて、「選んだ3件を直す」を押します。選ぶまで、この巡回は先へ進みません。下に、見に行くアプリの選び方が出ています。

画面の熟成 ―― 「気づけない・戻せない・止められない」をなくす

使い続けて直した所は、どれも気づけない・戻せない・止められないの解消でした。

自動で更新する画面は、入力の途中でも、容赦なく作り直されます。何かを選ぶ、書く、読む、といった最中の状態は、更新に壊されない作りにする必要がありました。

任せきりにしないための工夫

人が見ていない時間に AI がコードを直す仕組みなので、確かめる仕組みと、人の判断を組み合わせることを大事にしました。

作る役と、検査する役を分ける

直した本人が自分のコードを採点すると、「実装が通る条件でテストを書く」「落ちたらテストのほうを緩める」ことが、仕組みの上で起きてしまいます。 そこで、コードを直したあとに、直す役とは別の「検査役」(別の AI の担当)に、変更の中身だけを渡して見てもらいます。「なぜそう直したか」は渡しません。検査役は直せないので、指摘するだけです。 重大な指摘が残る間は完了にせず、直してやり直します。2回やり直しても残るときは、人が見る1件として積みます。

人が決める場面を、わざと残す

任せる範囲を広げるほど、人が決める場面を、わざと残しました。直す項目を選ぶこと、公開のボタンを押すこと、検査役の指摘が残ったときに見ることです。 自動で回すことと、人の判断を捨てることは、別のことです。

使ってみて変わったこと

思いついた作業を、その場で実行せずに、登録して手放せるようになりました。枠を使い切る心配が減って、AI に頼むことへの心理的な負担が軽くなりました。 定期巡回のおかげで、自分では見に行かない古いアプリの不具合や、記事の分かりにくさも、少しずつ直っていきます。

得られた知見は、ほぼ2つに集まります。1つ目は、AI の「直しました」を信じず、自動テストの終了コード 0 を完了の条件にすること。 2つ目は、人が介入しなくても動かすには、機械で確かめる・別の AI に検査させる・人が選ぶという、確かめる仕組みと人の判断の組み合わせが要ったことです。

これからの課題は、止まった理由が画面から見えることを、さらに増やしていくことです。AI を自動で回すほど、止まっていることに気づけない状態が、いちばん怖いからです。 まねをするときは、いきなり自動で直させず、まず完了条件を付けた1件を、手動で回して、結果を自分の目で1回確かめてから、任せる範囲を広げてください。