公開日: 更新日: 状態: 公開中 / Snapshot

実行リソースと cleanup 対象の管理

Level 1 では、状態ファイルや台帳は不要なことが多い。 branch / worktree を分け、起動、test、E2E、PR、cleanup を作業ごとに直列で進めるところから始める。

同時起動・同時検証へ進む時の補足

最初の 2 並列では、状態ファイルや lock を先に作らず、terminal、dashboard、作業メモで local の対応関係を追えればよい。

PR 本文には、レビューアに意味のある変更内容と検証結果だけを書く。 local URL、worktree path、cleanup 状態は、レビューに必要な場合を除いて PR 本文に含めない。

最初に記録するもの

Level 2〜3 へ進む時も、最初から global な状態管理を作る必要はない。 まずは、作業ごとに次を確認できればよい。

項目 見る理由
作業名 / branch / worktree どの差分を見ているかを確認する
URL / port 手動確認や E2E の接続先を取り違えない
DB / schema 状態を書き換える検証が他作業へ影響しないか確認する
cache / queue prefix や queue 名が混ざっていないか確認する
artifact どの作業の検証結果かを後から説明できるようにする
cleanup 対象 消してよい process / container / volume を取り違えない

この表は、作業メモ、dashboard、terminal 一覧、ツールの workspace metadata のどれで管理してもよい。 必要になるまで専用の JSON 状態ファイルを作らなくてよい。

完全分離と共有リソース内分離

完全分離できる場合は、worktree ごとに process、Docker Compose project、DB container、cache、queue、artifact 置き場まで分ける。 他の worktree の状態を知る必要が少なく、cleanup の範囲も判断しやすい。

一方で、ローカルでは完全分離が重くなることがある。 並列数が増えるほど、CPU、memory、disk、起動時間、seed 時間、cleanup コストが増えるため、同じ DB server や cache を共有し、その中で database 名、schema 名、cache prefix、queue 名を作業ごとに分けることがある。 これは実用的な妥協だが、完全分離ではない。

方式 長所 注意点
人間が直列に使う 差分作成は並列、起動・検証は作業ごとに直列 最小導入に向く。既存プロジェクトに入れやすい 検証は並列にならない。人間の確認待ちは残る
完全分離 worktree ごとに Compose project、DB container、cache container、artifact dir を分ける 分かりやすい。他の作業を知る必要が少ない。cleanup しやすい 並列数が増えると CPU、memory、disk、起動時間が重い
共有リソース内で名前を分ける 同じ DB server 内で schema を分ける。同じ Redis で prefix を分ける 軽い。起動が速い。ローカル PC への負荷を抑えやすい 完全分離ではない。prefix 漏れや cleanup 誤爆が起きうる。本番や CI と構成がずれる可能性がある

共有リソース内の分離は local 開発のための仕組みとして扱う。 DB server 全体の設定、connection limit、global lock、cache memory、queue worker、共通 cleanup script などは共有される場合がある。 最終的には CI や本番に近い環境で検証する。

古い検証結果を使わない

branch の HEAD、base branch、URL、DB / schema、feature flag、E2E 接続先が変わったら、以前の検証結果をそのまま使わない。 状態ファイルを作るかどうかに関係なく、検証結果がどの branch / URL / DB に対応していたかを説明できる必要がある。

次のいずれかが変わったら、対象作業の検証をやり直す。

  • branch の HEAD が変わった。
  • base branch を取り込んだ。
  • URL、DB、cache、queue、env、feature flag が変わった。
  • E2E の接続先が、確認したい作業の URL と一致しない。

よくある失敗

失敗 原因 止め方
別作業の URL を E2E した 固定 URL を使った terminal、dashboard、作業メモで対象 URL を確認する
古い検証結果を信用した branch、base、URL、DB / schema が変わった どの branch / URL / DB の結果か説明できなければ再実行する
cleanup で他作業を壊した 所有者と実リソースの対応を確認しなかった 削除してよい process / container / volume を作業ごとに確認する
状態メモだけ正しい 実環境が落ちている、または別 URL を見ている メモと実際の process、URL、DB を照合する

関連ページ

このページは発表資料の補足です。