1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIにPDCAを回させよう 〜ループエンジニアリングの強制〜

1
Posted at

はじめに

AI に「◯◯を作って」と頼むと、たいていはそのまま書き始めます。
小さな規模の作業ならこのようなバイブコーディングで足りますが、作業が大きくなるとどんな作業があって何が終わって何が残っているのかがわからなくなることがあります。
AI に作業を依頼したら PDCA を回して欲しい、そのためには作業の要件チェック、タスク分解、作業計画策定、実作業、検証、修正という一連を通して欲しいという体験から、それらをまとめて管理するスウィートである「Looptrack」を自作しました。
オープンソースで公開したので使い方を実例を交えてご紹介します。

GitHubリポジトリ

最新版のダウンロード

ユーザーガイド

ループエンジニアリングとは

ループエンジニアリングとは Andrew Ng 氏が提唱した AI 駆動開発の手法のことで、 AI に任せた仕事の「作る → 確かめる → 直す」を偶然に任せず設計して回すというやり方のことです。
AI に対して PDCA を回させることを示した言葉と思っておけばいいような気がします。
さらに言えば、AI だけでなく AI に指示を出した人間の作業と、作られたものを使った人の反応を含めた 3 アクターの仕事を PDCA サイクルに落とし込もうという考え方だと思っています。

これは私がバイブコーディングを始めてから徐々に構築していった手法と重なる考え方で、Looptrack はこの AI に任せる「作る」「確かめる」「直す」の 3 つをループとして扱います。

ループ 周期の目安 回す人 1 周の中身
① AI の周 数分 AI 次のイシューに着手 → 作業 → 検証 → Done → 次へ
② 指示者の周 数十分〜数時間 AI に指示を出した人 AI が判断待ちに置いたものを指示者が判断する
③ 利用者の周 数時間〜数週 利用者 利用者の反応をイシューに戻し、次の作業に生かす

この記事では Looptrack を使って ① を回すところを紹介したいと思います。
ちなみに ① のループを PDCA に当てはめると次のようになります。

PDCA AI がやること
Plan 依頼をイシューに分け、受け入れ条件と検証コマンドを書いて登録する
Do イシューを 1 件取って In Progress にし、実装する
Check 検証コマンドを実行し、結果と出力をイシューに記録する
Act 受け入れ条件を満たせば Done にして次のイシューへ進む。問題を見つけたら bug として起票する

つまりバイブコーディングで AI に対して指示を出したら作業結果を人力で確認しながら都度プロンプトで次の指示していたのを、AI が自動で進められるようにするというツールです。
AI は記憶領域が少ないので、AI が自分で作業を回し続けるには計画や進み具合を AI 以外のどこかに外部記憶として記録する必要があります。

Looptrack は

  • 指示された作業内容を分解してイシューとして持ち
  • PDCA を回す仕組みとして Claude Code の hook と rules として配る

という仕組みでループエンジニアリングを実現しています。

では実際に Looptrack を使ってループエンジニアリングがどう実現されるかをご紹介します。

Mac 版を入れて初回設定をする

Looptrack はサーバ版、デスクトップ版の 2 種類があり、OS は macOS 、Windows 、Linux に対応しています。
ここではデスクトップ版を macOS で動作させます。
用意するものは次の 2 つです。

  • macOS 13 以降の Mac(Apple シリコンでも Intel でも同じ dmg で動きます)
  • Claude Code(この記事では 2.1.283 を使いました)

Looptrack のアカウントやクラウドの契約は要りません。デスクトップ版はローカルで単体で動きます。

GitHub の Releases から Looptrack_v1.0.2_macos_universal.dmg をダウンロードします。
大きさは約 31 MB です。同じページの SHA256SUMS も落としておくと、壊れていないかを照合できます。

shasum -a 256 -c SHA256SUMS --ignore-missing
Looptrack_v1.0.2_macos_universal.dmg: OK

dmg を開いたら Looptrack を アプリケーション にドラッグし、ダブルクリックで起動します。
起動しても Dock にアイコンは出ません。メニューバーに輪のアイコンが出ていれば動いています。

初めて起動すると、既定のブラウザで初回設定の画面が自動で開きます。
決めるのは次の 3 つだけです。

項目 設定
最初の管理者 ログイン名・パスワード(12 文字以上)。表示名は空でもかまいません
二段階認証 必須か任意か。1 人で使う間は効きません
最初のプロジェクト slug・イシューの ID の接頭辞・表示名

初回設定の画面。最初の管理者・二段階認証・最初のプロジェクトの 3 つの節が並ぶ

デスクトップ版をスタンドアロンで使う場合はログインを省くので、パスワードを打つのはこの 1 回だけです。
後でチーム開発のサーバ版として利用する際はこれを使うことになります。

今回はサンプルなのでプロジェクトの slug を todo-cli に、ID の接頭辞を TODO にしてイシューの ID が TODO-0001 から振られるようにしました。slug と接頭辞は後から変えられないので、ここだけは少し考えて決めてください。

「設定して始める」を押すと完了の画面に変わり、AI ごとの接続設定が並びます。

初回設定の完了の画面。AI ごとの MCP の接続設定が並ぶ

Claude Code から接続する

完了の画面の「Claude Code ターミナルで実行」の欄の「コピー」を押し、作業したいリポジトリのターミナルに貼って実行します。

claude mcp add --transport http looptrack http://127.0.0.1:18090/looptrack/mcp --header "X-Looptrack-Project: todo-cli"

ポートは既定で 18090 です。
自分で URL を組み立てずに、画面のコピーを使うのが確実です。

Added HTTP MCP server looptrack with URL: http://127.0.0.1:18090/looptrack/mcp to local config
Headers: {
  "X-Looptrack-Project": "todo-cli"
}

スコープを付けずに追加すると、このリポジトリだけに効く local の設定になります。
ほかのリポジトリでも使いたくなったら、そのリポジトリでもう一度同じコマンドを実行します。

追加した後に Claude Code を起動すると、Looptrack に自動で接続します。
状態は Claude Code の中の /mcp か、ターミナルの claude mcp list で確かめられます。

$ claude mcp list
looptrack: http://127.0.0.1:18090/looptrack/mcp (HTTP) - ✔ Connected

認証の手順はありません。Mac 版のサーバはこのパソコンの 127.0.0.1 だけで待ち受けていて、1 人で使う間はトークンも要らないからです。
完了の画面にも「ローカルの 1 人利用ではトークンは要りません」と書いてあります。
ログインが要るのはチームで共有するサーバに向けたときだけです。そのときは /mcp で looptrack を選ぶとブラウザが開くので、ログインして許可します。

ここまでで、ダウンロードから数えて手でやったのは「dmg を開いてドラッグ」「初回設定の入力」「コマンドを 1 行貼る」の 3 つです。

MCP の返答が英語で返ってきたら、アカウント設定画面を開き「表示の言語」を「日本語」にして保存してください。

AI に Looptrack を利用させる

ここからは Claude Code にプロンプトで頼むだけです。サンプルには空の git リポジトリを用意しました。
最初の依頼は 1 行です。

このリポジトリのイシュー管理をセットアップして

すると Looptrack が提供するループエンジニアリングキット一式(hook 20 本・rules 5 本・skill 2 本)を入れるかどうか確認してきます。
入れると、イシューの起票から着手・実装・検証・クローズ・次の課題までを AI が自分で回します。途中で書式が崩れたり、指示者から確認作業だけ依頼されているはずなのに先走って編集作業をしたりすると、hook が差し戻します。

AI が勝手に作業を決めないよう制御されるので、重要な判断は指示者が行うよう矯正されます。

「入れる」と答えると AI が導入を済ませ、Claude Code の再起動を求めてきます。
再起動したら次のように頼みます。

再起動しました。続けて。

AI は Looptrack の導入が済んだことを確かめ、作業を受け付けられる状態になります。

looptrack には CLI があります。 CLI はメニューバーの輪のアイコンから「CLI を使えるようにする」を選ぶと使えるようになります。

AI に作業を依頼しタスク分解させる

では早速 Claude Code のプロンプトから作業を依頼してみます。

ToDo ツールに次の機能を足してください。
- ToDo に期限と優先度(高・中・低)を付けられるようにする
- 一覧で期限切れのものを目立たせ、優先度と期限で並べ替えられるようにする
- タイトルのキーワードで検索できるようにする
- CSV に書き出せるようにする
進め方はお任せします。最後まで回してください。

AI はコードを書く前にこの依頼をタスク分解します。
今回の例では 4 件のイシューに分けて Looptrack に登録されました。

4 件の機能をイシュー TODO-0002〜0005 に起票しました。これから 1 件ずつ実装します。

各イシューの本文には受け入れ条件と検証コマンドが入っています。Looptrack の画面で TODO-0002 を開くと次のように見えます。

TODO-0002 の詳細。内容・受け入れ条件・検証コマンドが並ぶ

順序も付いていました。並べ替えは期限と優先度が無いと作れないので、TODO-0003 は TODO-0002 の完了を待つ(blocked_by)形で登録されています。
これが PDCA の Plan にあたります。

AI は next で TODO-0002 を取って In Progress にし、実装してテストを足しました。
Check の段では looptrack gates lint test でゲートを回し、looptrack issue verify で検証コマンドの結果と出力の全文をイシューに記録しています。
受け入れ条件を 1 つずつ確かめた結果をコメントに書いて Done にし、次の next に進みました。

TODO-0002 を閉じたときのコメントです。検証コマンドの結果と、受け入れ条件ごとに確かめた内容が画面に残ります。

TODO-0002 のコメント。検証コマンドの結果と、クローズのときの確認の内容が並ぶ

途中の TODO-0003 では作業結果の検証で NG が見つかりました。ただし AI は自分で足したテストの側の誤りだと突き止めて直し、そのことをイシューに書いてから先へ進んでいます。
ここまで指示者は AI に対して何も言っていません。

Looptrack のボード。TODO-0003〜0005 には前のイシューを待つ印が付いている

見つけた問題は bug として自動的に起票される

4 件を終えた AI は閉じる前に別のサブエージェントに差分全体を独立に確かめさせました。
そこで不具合が 3 件見つかり、AI はそれぞれを bug として起票してから直しています。

ID 見つかった問題
TODO-0006 export -o にデータファイルを渡すと ToDo がすべて失われる(P1)
TODO-0007 20261010 のような形の期限も通ってしまう
TODO-0008 色を確かめるテストに、色が出る側の確認が欠けていた

TODO-0006 の本文には再現手順・期待・実際が書かれています。

TODO-0006 の詳細。内容に再現・期待・実際が並ぶ

直したときには修正を外すとテストが落ちて戻すと通ることまで確かめていました。
ToDo のデータが消える不具合が利用者の手元に届く前に止まったことになります。これが Act の段です。

人が判断するところだけ人に回ってくる

最後に AI は TODO-0009 を起票し、Done ではなく In Review に置いて止まりました。
CSV で = から始まるタイトルを Excel が式として扱ってしまう問題です。依頼の範囲を超えるので、対処するかどうかを人に決めてほしいという理由でした。

TODO-0009 を In Review にしてあります。CSV で `=` などで始まるタイトルを Excel が式として扱う問題で、依頼の範囲外のため対処するかを決めてください。
- 対処しない
- 常に先頭へ `'` を付ける
- `--excel` のような指定を付けたときだけ `'` を付ける

これがループの ② の指示者の周です。私は「--excel を付けたときだけ先頭に ' を付ける」で進めるよう返しました。

AI は返答を「判断:」で始まるコメントとして TODO-0009 に残しました。判断に合わせた受け入れ条件を書き、実装して Done にするまでにかかったのは 2 分 2 秒です。

TODO-0009 のコメント。「判断してほしい点」「判断:」と、判断を受けた受け入れ条件が並ぶ

このように Looptrack を使うと AI に依頼した作業を AI がどう解釈してどのようにタスク分解したかが可視化され、その後の作業は PDCA サイクルと同様の形で自動的に進めてくれるようになります。

人がやったこと

今回のサンプルの作業依頼が完了するまでに私が打ったプロンプトは 6 回です。

回 プロンプト AI が動いた時間
1 このリポジトリのイシュー管理をセットアップして 17 秒
2 入れる(loop の問いへの答え) 31 秒
3 再起動しました。続けて。 38 秒
4 ToDo 管理ツールを作って 6 分 21 秒
5 4 つの機能を足して 14 分 2 秒
6 TODO-0009 の判断 2 分 2 秒

残ったのは Done のイシュー 9 件と、イシューの ID を付けたコミットです。テストは 40 件まで増えました。
5 回目の 14 分のあいだ、AI は計画・実装・検証・不具合の起票と修正を自分で回しています。私が口を挟んだのは範囲の外の判断を求められた 6 回目だけでした。

まとめ

AI に PDCA を自分で回させるには、計画と進み具合を外部記憶に保存する必要があります。また検証を飛ばさせない仕掛けも要ります。
Looptrack では前者をイシュー管理ツールのイシューとして保存し、後者は受け入れ条件・検証コマンドと hook で実現しています。導入は dmg のドラッグと初回設定と 1 行のコマンドで済み、あとはプロンプトで頼むだけです。

Looptrack の導入により人の仕事は「何を作るか」を頼むことと、AI が判断待ちに置いたものを決めることだけに絞られます。
AI が勝手に作業をして二度手間が発生して困っている方にはぜひ使っていただきたいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?