AIの悪癖は機械で封じる — 退役ツールが「開発基地」に生まれ変わるまで

3ヶ月で退役したツール

サラリーマンSE(自称)だった頃、社内のわずかなAIトークンでプロジェクト解析と修正を回すために「SIerAssistant」というツールを作りました。コードを言語別に解析してツリー化し、チャンク分割してAIに送り、返ってきたパッチを組み立てる——当時はこの中間工程が不可欠でした。

2026年3月、退職にあたって若手技術者に引き継ぐとき、私はこう言いました。「使って欲しいけど、多分3ヶ月で不要になると思う」と。感は当たりました。LLMモデルのポン出しコードの品質が上がり、そのまま動くものが返ってくる時代(季節)になりました。解析もチャンク分割も、要らなくなったのです。

ところが、です。独立して9本のアプリをチャットで並行開発する今の生活を見回すと、手作業だらけでした。プロジェクト構成をfindコマンドで出力してAIに貼る。「〇〇.jsのこの機能の関数を貼って」と言われて探して手でコピペ。返ってきたパッチを目視で手動適用。インデント1個ズレてビルドが壊れる。退役したツールが自動化していた「AIとの往復作業」そのものは、形を変えて全部残っていたというか、LLMが人間脳化することで戻ってきたのです。

発想の転換:解析するな、検証しろ

そこで後継ツール「BriefOps」を作ることにしました。コンセプトは正反対です。

旧ツールは「弱いAIのためにコードを解析・分割する」ものでした。新ツールは「賢いAIの、人間的な悪癖を機械で封じる」ものです。APIは一切叩きません。Claude Proのチャット画面に貼るテキストを組み立て、返ってきたパッチを機械検証して、ローカルのファイルに直接書き戻す。ツール自体のトークン消費はゼロです。

パッチ検証の核はシンプルです。AIには「変更前+変更後」のセットでパッチを出させる。ツールは「変更前」がローカルの現物と一字一句一致するかを機械チェックし、🟢一意一致・🟡複数一致・🔴不一致で表示。全部🟢になるまで適用ボタンは押せない仕組みです。さらに適用前後で括弧の釣り合いを比較し、JavaScriptならacornで構文パースまでかけます。

開発秘話:作っている最中に、作っているものに3回捕まった

このツール、開発の相棒はClaude(AI)です。つまり「AIの悪癖を封じるツールを、AIと作る」わけで、開発中に面白いことが起きました。作りかけのツールが、作っている本人(AI)のミスを3回捕まえたのです。

1回目は、AIが古いコードを見て「変更前」を書いてきたとき。🔴不一致で停止。2回目は、私への説明文に使った見出し形式をツールが本物のパッチと誤解したとき。これも🔴。3回目が傑作で、「3ファイル修正したのに2ファイルしか反映されない」怪現象の犯人探し。実はSafariが連続ダウンロードを黙って間引いていたのですが、その状態ズレもツールの不一致検出が炙り出しました。

AIとの開発中、私が「こういう事故が嫌なんです」と言うと、AIは「約束は破られますが、機械チェックは破られません」と返してきました。人間の書いたコードで学習したAIは、良い癖も悪い癖も人間そっくりです。だから「気をつけます」ではなく、仕組みで止める。これがこのツールの背骨になりました。

Safariとの格闘、そしてローカルサーバーへ

もう一つの敵はブラウザでした。Safariはクリップボード書き込みにエラーも出さず失敗することがあり、連続ダウンロードは間引かれる。ダウンロードフォルダからプロジェクトへの手動移動も苦痛です。

最終形は、Python標準ライブラリだけ(依存ゼロ)で書いた小さなローカルサーバーでした。.commandファイルをダブルクリックするとBriefOpsがブラウザで開き、Macネイティブのダイアログでプロジェクトを選ぶ。以降、ファイルの読み込みも書き戻しも同じルートで完結し、ダウンロードは消滅しました。書き込み先はダイアログで選んだフォルダだけ、全書き込みにルート内検証、待受はlocalhost限定——誤爆で他のプロジェクトを壊さないことを設計の芯に据えています。

勢いで、苦手だったGit操作もボタン化しました。workへコミット、mainへff-onlyマージ(少しでも履歴が怪しければ自動停止して巻き戻す安全弁つき)、履歴が分岐したときの解消ボタン。実際、開発2日目に本物の分岐(mainに7コミット先行)をこのボタンで解消しています。仕上げに新規プロジェクトウィザードまで付けて、ブリーフ雛形・.gitignore・git初期化・ブランチ作成が1クリックになりました。

オチ:自分のゴミを自分で見つけた

完成した.gitignore点検機能を、試しにBriefOps自身のリポジトリに向けてみたら——過去のコミットに紛れ込んだ.DS_Storeを検出しました。自分の道具で自分の道具を作り、最後は自分のゴミまで自分で見つけた2日間。

退役したツールの発想は、こうして「プロジェクトの誕生から引き継ぎまでを1画面で回す開発基地」に生まれ変わりました。AI支援開発で同じような手作業ループにいる方の、何かのヒントになれば幸いです。


BITriseOne / 開発環境:Mac mini + Safari + Claude Pro(Sonnet 4.6)。BriefOpsはバニラJS + Vue(CDN)+ Python標準ライブラリ製、外部依存ゼロ。


Comments

コメントを残す

BITriseOneをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む