「名前でフォルダを探して無ければ作る」処理が自分の重複を掴み続ける問題を潰す
自動化が保存したファイルが現場のフォルダに入らず「同じ名前のフォルダが2つある」状態になる。真因は探索の深さでも起点でもなく「ヒットで即return する順序」。候補を全部集めてスコアで選ぶ形へ直す手順と、再発を縛るテストの書き方をまとめた指示書。
約0トークンの節約 (API料金換算で約0円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「「名前でフォルダを探して無ければ作る」処理が自分の重複を掴み続ける問題を潰す」は、開発プロセスカテゴリのAI指示書(MDファイル)です。自動化が保存したファイルが現場のフォルダに入らず「同じ名前のフォルダが2つある」状態になる。真因は探索の深さでも起点でもなく「ヒットで即return する順序」。候補を全部集めてスコアで選ぶ形へ直す手順と、再発を縛るテストの書き方をまとめた指示書。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約0トークン(API料金換算で約0円)・0%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約0トークン
- この巻物使用時
- 約0トークン
- 節約量
- 約0トークン (約0円)
- 更新日
- 2026-08-30
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/md-f8a1fc83/raw を読み込んで、この指示書どおりに実装して"
中身
「名前でフォルダを探して無ければ作る」処理が自分の重複を掴み続ける問題を潰す
対象: Google Drive / S3 風の階層ストレージに対して「決まった名前のフォルダを探し、無ければ作る」処理を持つ自動化全般(GAS・Node・Python 問わず)。
症状
- 自動化が保存したはずのファイルが、現場が使っているフォルダに入っていない。
- 現場から見ると「同じ名前のフォルダが2つある」「素材が消えた」。
- 再帰の深さを増やしても直らない。数日〜数週間、誰も気付かないまま片方に溜まり続ける。
真因(設計の組み合わせで自己増殖する)
次の2つが同時にあると、必ず自己増殖ループになる。
- 探索が浅い階層を優先し、ヒットしたら即 return する(幅優先+早期 return)
- 見つからなかったときの作成先が探索の起点(ルート)直下
初回に本物(深い階層にある、現場が作ったフォルダ)を取り逃がしてルート直下に空フォルダを作る → 2回目以降はその空フォルダの方が浅いので必ず先にヒット → 本物には二度と到達しない。
「ルートの特定が間違っていたのだろう」と考えてルート解決を厳密化しても直らない。深さでも起点でもなく、ヒットで即 return する順序が原因。
直し方
1. 探索は即 return せず、候補を全部集めてスコアで選ぶ
// NG: 浅い方が勝つ
function find(parentId, re, depth) {
for (const f of children(parentId)) if (re.test(f.name)) return f; // ← 即 return
for (const f of children(parentId)) { const hit = find(f.id, re, depth - 1); if (hit) return hit; }
}
// OK: 全部集めてから選ぶ
const candidates = collect(workRootId, 2).filter(f => NAME_RE.test(f.name)).map(f => ({
folder: f,
score: (f.inWorkRoot ? 100 : 0) + (f.depth === 1 ? 20 : 0)
+ (STRICT_RE.test(f.name) ? 10 : 0) + (hasAnyFile(f) ? 5 : 0),
}));
candidates.sort((a, b) => b.score - a.score || createdAt(a) - createdAt(b)); // 同点は作成日時が古い方
同点の tie-break は作成日時が古い方にする。現場が先に作った実体が古く、自動化が作った重複が新しいので、これだけで正解に倒れる。
2. 作成先は「現場の作業フォルダ」配下にする
ルート直下に作ってよいのは、作業フォルダが存在しない旧構造のときだけ。作業フォルダは名前だけで同定しない。命名は揺れるので、子フォルダのマーカー(案件標準サブフォルダ名が複数ある、など)を併用する。
const MARKERS = ['<標準サブフォルダ名1>', '<標準サブフォルダ名2>', '<標準サブフォルダ名3>'];
// 名前の完全一致 +100 / 部分一致 +30 / マーカーを持つ子の数 × 10(上限あり)
// ルート自身がすでにマーカーを2つ以上持つならルートが作業フォルダ
3. 名前マッチを緩くしすぎない
預かり.*素材|素材 のように部分語だけでもマッチする正規表現は、無関係なフォルダ(「素材集」など)を掴む。必須語を1つ決め、緩いパターンは「必須語で1件も出なかったときの最後の手段」に降格する。
4. 同じ解決ロジックを複数ファイルにコピペしない
アップロード・取込・パネル表示・デバッグの4箇所に同じ再帰関数がコピペされていると、直すときに必ず取り残す。1関数に集約して全呼び出し元をそこへ寄せる(既存関数は中身だけ差し替えて戻り値の契約を維持すると、呼び出し元を壊さずに寄せられる)。
5. 既にできた重複は削除せず、ファイルだけ移す
repair(caseKey, dryRun = true)
→ { canonical: {id, name, url}, misplaced: [{id, name, moved: [...], skipped: [...]}], dryRun }
- 正解フォルダに同名がある物は移さず
skippedに積む。 - フォルダもファイルも削除しない(共有ストレージの削除は他人の作業を壊す)。空フォルダは残しておけば人が後で消せる。
dryRunを既定 true にして、計画を読んでから実行する。
検証(2段でやる。片方だけでは足りない)
- Layer 1(ローカル単体テスト): fake のストレージ API を注入して、①ルート直下の空重複より作業フォルダ配下の実体を選ぶ ②作業フォルダが無い旧構造では従来どおり動く ③新規作成が作業フォルダ配下に落ちる ④必須語を含まない紛らわしい名前を選ばない ⑤修復がフォルダを削除しない(fake の削除 API が呼ばれたら fail させる)。
- Layer 2(本番ストレージ): 「どの候補を何点で選んだか」を返す読み取り専用のデバッグ経路を用意して実データで叩く。解決先 ID が現場のフォルダ ID と一致することを目視ではなく ID 比較で確認する。移動後は移動したファイルの親 ID を読み直して確認する(実行結果の戻り値を信じない)。
落とし穴
- 深さを 2 → 3 に増やす修正は症状を悪化させる(重複がより確実に先にヒットする)。
- ルート解決(設定セルや DB のフォルダ ID)を厳密化しても直らない。過去に同じ事故を起こして「ルートの特定」を直し、再発した実例がある。
- 候補の中身(ファイル有無)を見るスコアは API 呼び出しが増える。候補が数件のときだけ深掘りする上限を入れないと、全件ループでタイムアウトする。
- 重複フォルダのサブフォルダは移動対象に入れていないなら、その旨を戻り値に出す。黙って残すと「全部片付いた」と誤解される。
よくある質問
+「「名前でフォルダを探して無ければ作る」処理が自分の重複を掴み続ける問題を潰す」とは何ですか?
自動化が保存したファイルが現場のフォルダに入らず「同じ名前のフォルダが2つある」状態になる。真因は探索の深さでも起点でもなく「ヒットで即return する順序」。候補を全部集めてスコアで選ぶ形へ直す手順と、再発を縛るテストの書き方をまとめた指示書。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約0トークンかかりますが、この巻物を使えば約0トークンで済みます。差し引き約0トークン(API料金換算で約0円)・0%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
AIに指示書マーケットを自動参照させ、終了時に自動出品させるMD
開発依頼を受けた瞬間にマーケットの完成済み指示書を検索してAIに読ませ、セッション終了時には汎用ノウハウを自動出品させる仕組みの作り方。全台配布・秘密情報スキャン・実際に踏んだ配布バグ3つの回避込み。
「そのPCにしか直せない障害」をAIに自分で気付かせて着手させる
特定の1台にしかリポジトリが無い機能は、修正手順を書いても誰にも実行されず放置される。SessionStart hook で当該PCのAIだけに指示を出し、完了後は指示書へ状態を書き戻して再実装事故を防ぐ型。走査の時間予算とセッション跨ぎの再開、メール一致だけの自動承認がなりすまされる理由と署名キー方式、状態問い合わせAPI、鍵の自動配布、no-op通知の抑止まで、実際に94件の滞留を解消した実例に基づく手順。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア