DBのマイグレーションを書くたびに「これ合ってるかな…」と不安になったり、複雑なSQLを書くのに時間を取られすぎて本来の実装が進まない、そんな経験はありませんか?私自身、DB周りの作業は地味に時間を食うし、ミスったときのリカバリーが大変で、正直苦手意識がありました。
この記事では、Claude Codeを使ってDB周りの開発を効率化する具体的な方法をまとめています。マイグレーション、クエリ最適化、スキーマ設計、テストデータ生成まで、実際に使えるアプローチを紹介します。読み終わる頃には「DBの作業、これで全然楽になるじゃん」と感じてもらえるはずです。
結論:Claude Codeを使えば、DB開発の"面倒くさい"が大幅に減る
DBの開発で悩んでいませんか?
- マイグレーションファイルを書くたびに構文を調べている
- 複雑なJOINやサブクエリを書くのに時間がかかる
- テストデータを手で作るのが地味につらい
- スキーマ設計のレビューをしてくれる人がいない
こうした悩みは、Claude Codeを活用することで解消できます。結論を先に言うと、Claude Codeは「考えるパートナー」として使うのが最も効果的です。
単に「SQLを書いて」と丸投げするだけでなく、「こういう設計で考えているんだけど、問題点はある?」「このクエリ、N+1になってないか確認して」といった形で使うと、コードレビューをしてもらっている感覚で開発が進みます。
| 従来の開発 | Claude Code活用後 |
|---|---|
| ドキュメントを都度検索 | 自然言語で即確認 |
| 自分でSQL全部書く | 骨格を生成して調整 |
| レビュー待ち | その場でフィードバック |
| テストデータを手作業で準備 | 自動生成 |
エンジニアなら読むべき本を30冊以上紹介しています。
正直、私の仕事のやり方をガラッと変えた神本やSQLのチューニングに悩んだ時にめちゃくちゃ役に立ったもあります👇
→記事を読む
Claude Codeとの向き合い方:「全部任せる」より「壁打ち相手」として使う
Claude Codeを使い始めたとき、最初は「コードを生成してもらうツール」だと思っていました。でも使い込んでいくうちに、設計の壁打ち相手として使うほうが何倍も価値があると感じるようになりました。
たとえばスキーマ設計を考えているとき、「usersテーブルとprofilesテーブルを分けるべきか」という悩みをそのまま投げると、メリット・デメリットを整理した上で「このシステムの規模なら分けたほうがいい理由」まで説明してくれます。
経験の浅いエンジニアにとっては「先輩エンジニアに気軽に質問できる感覚」、経験豊富なエンジニアにとっては「思考を整理してくれるゴムアヒル(ラバーダック)」として機能するのが、Claude Codeの本質だと思います。
Claude CodeでDB開発を効率化する具体的な方法
◎ マイグレーションファイルの作成を効率化する
マイグレーションは「ファイルを作る」「内容を書く」「rollbackも書く」と意外と工数がかかります。Claude Codeを使えば、要件を伝えるだけでドラフトを出してくれます。
✅ 良い使い方:要件+コンテキストを渡す
既存のusersテーブルにlast_login_atカラム(datetime, nullable)を追加するマイグレーションをActiveRecordで書いて。
rollbackも含めて。
❌ 避けたい使い方:丸投げ
マイグレーション書いて
コンテキストなしだと汎用的な例しか出てきません。「どのORM?」「どんなカラム?」「制約は?」を最初から伝えましょう。
| 伝える情報 | 出力の質 |
|---|---|
| テーブル名・カラム名のみ | △ 汎用的な例 |
| ORM・制約・nullable | ◎ そのまま使えるレベル |
| 既存スキーマも添付 | ◎ 整合性まで確認してくれる |
◎ 複雑なSQLクエリの生成と最適化
私が一番「これは便利だ」と感じたのが、SQLの最適化フィードバックです。
「このSQLをEXPLAINすると遅い。どこを改善できる?」と聞くと、インデックスの追加提案からサブクエリをJOINに書き換える案まで出してくれます。
✅ 実際に使えるプロンプト例
以下のSQLがスロークエリになっています。
テーブル定義とEXPLAIN結果も添付します。
改善案を3つ挙げてください。
[SQL文]
[テーブル定義]
[EXPLAIN結果]
| シーン | Claude Codeの貢献 |
|---|---|
| 複数テーブルのJOIN | 結合順序・インデックス利用の最適化提案 |
| N+1問題の検出 | コードを見てN+1になっている箇所を指摘 |
| 集計クエリの改善 | GROUP BYやWINDOW関数の使い方を提示 |
| インデックス設計 | カーディナリティを考慮した提案 |
◎ スキーマ設計のレビューと改善提案
「このER図、問題ないかな」という場面でClaude Codeは特に力を発揮します。テーブル定義を貼り付けるだけで、正規化の観点や外部キー設計の問題点を教えてくれます。
✅ 使い方のコツ:目的も一緒に伝える
ECサイトの注文管理システムを設計しています。
以下のスキーマを見て、パフォーマンスや拡張性の観点で問題点があれば指摘してください。
[CREATE文]
「拡張性」「パフォーマンス」「正規化」など、何を重視して評価してほしいかを明示すると、的外れなフィードバックが減ります。
◎ テストデータの自動生成
「テスト用のダミーデータを100件作るのがめんどくさい」という悩みも解消できます。
✅ 実例
以下のusersテーブルに対して、
Fakerライブラリを使ったシードデータ生成スクリプトを書いて。
日本語の名前・住所を含む100件分。
テーブル定義を渡せば、型や制約に合ったデータを自動で考えてくれます。私はこれで「テスト環境のデータ準備」にかかる時間が半分以下になったと感じています。
Claude CodeのDB開発活用:よくある失敗パターンと対策
✅ うまく使えている人と ❌ うまく使えていない人の違いは、コンテキストの渡し方にあります。
| パターン | 結果 | 改善策 |
|---|---|---|
| ❌ 「SQLを最適化して」だけ送る | 汎用的な答えしか返ってこない | テーブル定義・実行計画・件数などを添付する |
| ❌ 出力をそのままコピペする | バグやDB依存の差異が混入 | 必ず自分でレビューしてから使う |
| ❌ 間違いを指摘しない | 同じ方向の提案が続く | 「ここが違う」と明示して修正を依頼する |
| ✅ 目的・制約・環境を最初に伝える | 精度の高い出力が返ってくる | プロンプトにコンテキストを盛り込む習慣をつける |
Claude Codeはあくまでもアシスタントです。出力を過信せず、最終判断は自分でするという意識が大切です。
まとめ
- Claude Codeは「壁打ち相手」として使うと効果が高い
- マイグレーション・クエリ最適化・スキーマ設計・テストデータ生成すべてで活用できる
- コンテキストを渡せば渡すほど、出力の質が上がる
- 出力はそのまま使わず、必ず自分でレビューする
DB開発の「地味につらい」作業が、Claude Codeで少しでも楽になれば嬉しいです。
エンジニアなら読むべき本を30冊以上紹介しています。
正直、私の仕事のやり方をガラッと変えた神本やSQLのチューニングに悩んだ時にめちゃくちゃ役に立ったもあります👇
→記事を読む