◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-05-02上級

Claude Code でゼロダウンタイム DB マイグレーションを設計する本番運用ガイド

Claude Code でゼロダウンタイム DB マイグレーションを設計する本番運用ガイド。Expand-Contract、NOT NULL 追加、カラムリネーム、バックフィル、サブエージェントレビューまで、本番で詰まらない手順をお伝えします。

claude-code132databasemigration7production87postgresqladvanced9

✦ プレミアム記事

DB マイグレーションは、平常時は地味な作業ですが、本番で失敗すると一瞬でサービス全停止に直結します。私自身、深夜のデプロイで ALTER TABLE ... ADD COLUMN ... NOT NULL を流して、PostgreSQL のテーブルロックで API がタイムアウトを連発したことがあります。アプリ側のリトライがロック待ちを増幅させて、復旧まで30分。あの夜の冷や汗は今でも忘れられません。

問題は、マイグレーションの危険性が「コードを読んでも見えにくい」ことです。1行の SQL が裏で全行スキャンを走らせるか、即時で済むかは、データベースの実装に深く依存します。Claude Code は、こうした「見えない地雷」をマイグレーションファイルから検出し、安全な手順に書き換える作業との相性が抜群です。本記事は、ゼロダウンタイムでスキーマを進化させるための設計パターンを、Claude Code の使い方とセットで体系化したものです。

なぜマイグレーションでサービスが落ちるのか

サービスが落ちるマイグレーション失敗は、私の観測範囲では3つのパターンに分類できます。第一に、長時間の排他ロックを取る DDL を本番に流すパターン。ALTER TABLE ... ADD COLUMN ... NOT NULL DEFAULT 'foo' のような操作は、PostgreSQL 11 以降では即時化されますが、それ以前のバージョンや一部のクラウドサービスでは全行書き換えが走り、テーブルが分単位でロックされます。

第二に、アプリケーションコードと DB スキーマのデプロイ順序を間違えるパターン。古いアプリがまだ動いている状態で新しいスキーマに切り替えると、古いコードが「存在しないカラム」を参照しようとして 500 エラーが出続けます。逆もまた然りで、新しいコードが古いスキーマで動こうとして失敗します。

第三に、ロールバックを設計しないままマイグレーションを進めるパターン。DROP COLUMN を流した直後に問題が発覚しても、データは戻りません。バックアップから復元するしかなく、その間の更新分は消えます。

これら3つを根本から解決するのが、Expand-Contract(拡張-縮約)パターンです。

ゼロダウンタイムを支える3つの原則

Expand-Contract パターンは、次の3つの原則を守ることでゼロダウンタイムを実現します。

第一の原則は「常に古いコードと新しいコードの両方が動く状態を経由する」ことです。新旧スキーマの両方をアプリケーションが扱える期間を作り、その間にデプロイを段階的に進めます。

第二の原則は「DDL は短時間で終わるものだけを直接適用する」ことです。長時間ロックする操作は、pg_repack や gh-ost のようなオンライン変更ツールを使うか、複数の小さな DDL に分解します。

第三の原則は「すべてのマイグレーションが前進方向と後進方向の両方を持つ」ことです。up だけでなく down を必ず書き、しかも down で実データが失われない設計にします。

これらの原則を Claude Code に伝える CLAUDE.md のテンプレートが次のものです。プロジェクトのルートに置いておくと、マイグレーション関連の指示で自動的に守ってくれます。

# DB マイグレーション運用ルール
 
## 絶対遵守
- 本番で実行する DDL は、ロック時間が 1 秒未満で終わるもののみ
- カラム追加は NULL 許容で追加し、後続のマイグレーションで NOT NULL 化
- カラム削除は「コード参照を全て除去 → デプロイ → DROP COLUMN」の3段階
- リネームは新カラム追加 → 二重書き → 切り替え → 旧カラム削除の4段階
- すべてのマイグレーションに down (ロールバック) を実装
 
## レビュー必須項目
- 影響行数の見積もり(EXPLAIN または COUNT で確認)
- ロック時間の予測(テストDBで実測)
- アプリケーションコードとの互換性(古いコードが動き続けるか)
✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦本番でマイグレーション中にサービスが止まって冷や汗をかいた経験のある人が、Expand-Contract パターンで止めずに済む手順を今日から実装できるようになります
✦NOT NULL 追加・カラムリネーム・型変更といった「危険な変更」を、5段階デプロイに分解して安全に流す具体的なコードと SQL を手に入れられます
✦Claude Code のサブエージェントにレビュアー役を任せて、マイグレーションの落とし穴を投入前に検出する自動化パターンを習得できます
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Claude Code2026-04-30
Claude Code Skills を組み合わせる設計術 — 単一スキルでは届かない自動化を作る
Claude Code の Skills を1つずつ作るところから一歩進み、複数スキルを連携させて自動化を組む設計手法をお伝えします。Pipeline・条件分岐・メタスキルの3パターンとよくある落とし穴を実装例付きで詳述します。
⟐ Claude Code2026-04-29
Claude Code の実行を OpenTelemetry で観測する — エージェント処理を本番品質で可視化する設計ガイド
Claude Code のエージェント処理を OpenTelemetry でトレースする本番設計ガイド。フック連携・ツール呼び出し計測・MCP 通信・コスト属性・サンプリングまで、実運用で詰まらないパターンをお伝えします。
⟐ Claude Code2026-04-24
Claude Code Hooks の本番デバッグ術 — ログが足りない時、どこから切り分けるか
ローカルでは動くのに本番で沈黙するClaude Code Hooksの切り分け方を体系化しました。まず疑うべきは出力先という視点、ログ不足を補う3層の可観測性、最小再現環境を60秒で作るテクニック、JSON入出力とexit codeのプロトコル把握、マルチユーザー環境の権限診断まで扱います。