Gitコミットの頻度はどれくらい?AIに任せる場合はどうするべきか
こんにちは、とまだです。
Claude CodeやCodexを使ってAI駆動開発を始めてみたものの、「Git コミットのタイミングがわからない」と感じていませんか?
AIが数十行、ときには数百行のコードを一気に生成してくれるのは便利です。
ですが、通常の開発とは違い、いつコミットすればいいのか迷いますよね。
AIが作業するたびにコミットすべきか、それとも機能が完成してから?と悩むポイントです。
この記事では、AI駆動開発におけるGitコミットの基本的な考え方から、実践的なタイミング、agents.mdへの記述例まで、初心者にもわかりやすく解説します。
ちなみに私は本業ではフリーランスエンジニア、ならびにAI駆動開発の導入支援を行っており、Udemy で AI 駆動開発講座を複数開講しており、いくつかベストセラーもいただいています。
その経験を活かして、初心者の方でもわかりやすいよう、丁寧に解説しています!
(追記:解説動画も出しました)
忙しい人のために要約
- Gitのコミットは「記録を残したい状態」を保存しておくための機能
- AI駆動開発では、最初はAIが作業するたびにコミットする方法から始めるのがおすすめ
- 慣れてきたら、動作確認が取れた時点でコミットする方式に移行する
- CLAUDE.md (AGENTS.md) には「コミットメッセージを提案してもらう」指示を書くと便利
- 新機能を追加するときはブランチを切ることを推奨
そもそもGitのコミットとは?
セーブポイントのようなもの
Gitのコミットは、プログラミングにおける「セーブポイント」のようなものです。
ゲームで例えるなら、ボス戦の前にセーブしておくことで、負けても直前から再開できますよね。
コミットも同じで、あとで「この状態に戻りたい」と思ったときに、その時点のコードに戻れる仕組みです。
コミットの基本的な役割
コミットには主に2つの役割があります。
1つ目は、開発の履歴を記録することです。
「いつ」「誰が」「何を」「なぜ」変更したかを記録しておくことで、あとから振り返ったときに変更の意図が理解できます。
2つ目は、問題が起きたときに過去の状態に戻れることです。
新しい機能を追加したらバグが発生した場合、直前のコミットに戻ることで、動いていた状態に復帰できます。
通常の開発でのコミットタイミング
通常の開発では「バグ修正が完了したとき」「新機能の実装が終わったとき」など、意味のある変更が完了したタイミングでコミットします。
自分で1行ずつコードを書いているので、どこで区切るべきかが直感的にわかります。
ですが、AI駆動開発では事情が少し変わってきます。
AI駆動開発でコミットが難しい理由
AIが大量のコードを一気に生成する
AI駆動開発では、AIが大量のコードを短時間で生成します。
Claude CodeやCodexに指示を出すと、わずか数秒で数十行、場合によっては数百行のコードが書き上がります。
これは開発効率を大幅に向上させる一方で、「どこまでが正しい変更か」が見えにくくなるという問題もあります。
自分が書いたわけではない
通常の開発なら、自分で書いたコードなので、どこで区切るべきかが直感的にわかります。
しかし、AIが生成したコードの場合、自分が書いたわけではないため、どのタイミングでコミットすべきかの判断が難しくなります。
AIが生成したコードの意図を理解するのにも時間がかかることがあります。
変更の単位が大きくなりがち
AIは指示を受けると、関連する複数のファイルを一度に変更することがあります。
たとえば、「ユーザー登録機能を作って」と指示すると、コントローラー、モデル、ビュー、ルーティングなど、複数のファイルが一気に変更されます。
この大きな変更の塊を、どう分割してコミットすればいいのかが悩ましいポイントです。
初心者向け:AIが作業するたびにコミット
まずは細かくコミットする
AI駆動開発を始めたばかりの方には、まず「AIが何か作業をするたびにコミットする」という方法をおすすめします。
たとえば、Claude Codeに「ユーザー登録機能を作って」と指示して、AIがコードを生成したら、その時点でコミットします。
次に「ログイン機能を追加して」と指示して、またコミットします。
具体的なコミットの流れ
実際の流れを見てみましょう。
# AIに指示を出す
> ユーザー登録フォームを作って
# コードが生成される → 確認してコミット
git add .
git commit -m "feat: ユーザー登録フォームを追加"
# 次の指示を出す
> フォームにバリデーションを追加して
# コードが生成される → 確認してコミット
git add .
git commit -m "feat: フォームバリデーションを追加"
このように、AIの作業ごとに区切ってコミットしていきます。
この方法のメリット
この方法の利点は、何か問題が起きたときに「どの指示が原因だったか」がすぐにわかることです。
AIが生成したコードが期待通りに動かなかったとき、直前のコミットに戻れば、問題のある変更だけを取り消せます。
また、コミット履歴を見れば「どの順番で機能を追加したか」が一目でわかります。
自動コミットは避ける
Claude Codeには自動でコミットまで実行してくれる機能もあります。
ですが、最初のうちはあまり推奨しません。
なぜなら、知らないうちに意図しない変更がコミットされてしまう可能性があるからです。
まずは人間が判断してコミットする習慣をつけましょう。
慣れてきたら:動作確認後にコミット
意味のある変更単位でコミット
AI駆動開発に慣れてきたら、少し方針を変えてみましょう。
具体的には、「意味のある変更が行われ、かつ動作確認が取れたとき」にコミットする方式です。
たとえば、AIにデータ編集機能を作ってもらったとします。
コードが生成された時点ではまだコミットせず、まず実際にブラウザやテストで動作を確認します。
動作確認の具体例
実際の確認の流れは以下の通りです。
# AIに指示を出す
> ユーザー情報の編集機能を作って
# コードが生成される
# (この時点ではまだコミットしない)
# ブラウザで動作確認
# - フォームが表示されるか?
# - データが正しく保存されるか?
# - エラーが出ないか?
# 問題なく動いたらコミット
git add .
git commit -m "feat: ユーザー情報編集機能を追加"
動作確認をしてから初めてコミットするという流れです。
なぜ動作確認が必要か
動作確認が必要な理由は、AIが生成したコードが必ずしも正しく動くとは限らないからです。
文法的に正しいコードでも、実際に実行するとエラーが出ることがあります。
また、期待した動作と違う結果になることもあります。
正しく動くことが確認できたら、その時点でコミットするという流れです。
この方法のメリット
この方法の利点は、コミット履歴が「意味のある変更」だけで構成されることです。
あとで履歴を振り返ったときに、「この変更は何のためだったか」が理解しやすくなります。
また、コミット数が適度に絞られるため、履歴が見やすくなります。
個人開発と現場での使い分け
私の場合、個人開発では比較的細かめにコミットします。
ですが、現場のプロジェクトではテストがパスするか、手動で動作確認が取れた時点でコミットするようにしています。
理由は、あまりコミット単位が細かすぎると、あとで「どの時点に戻ればいいか」がわかりにくくなるためです。
現場では複数人で開発するため、コミット履歴の見やすさがより重要になります。
コミットすべきでないタイミング
変更内容に意味がない状態
逆に、コミットしない方がいいタイミングもあります。
まず、「変更内容に意味がない状態」ではコミットしません。
たとえば、AIが何か試行錯誤している途中で、まだ動作確認もしていない状態です。
# こんな状態ではコミットしない例
# AIが途中まで書いたコード
function calculateTotal() {
// TODO: 実装中
}
# まだ動かないコード
const result = undefined; // あとで実装予定
このような中途半端な状態でコミットしてしまうと、あとで「これは何のコミットだっけ?」と混乱する原因になります。
複数の変更を一度に含む場合
また、複数の変更を一度に行った場合も注意が必要です。
たとえば、「ユーザー登録機能の追加」と「デザインの修正」を同時に行い、まとめて1つのコミットにすると、あとで変更を切り分けるのが難しくなります。
できるだけ1つのコミットには1つの意味を持たせることを意識しましょう。
個人開発では少し緩めでもOK
ただし、これは個人開発の場合は少し緩めでも構いません。
正直なところ、個人開発であればAIが何かするたびにコミットするくらいでも問題ありません。
細かすぎて困ることはあまりないので、「迷ったらコミット」という感覚でいいでしょう。
あとで整理したくなったら、コミットをまとめることもできます。
CLAUDE.md (AGENTS.md) にコミット関連の指示を書く
CLAUDE.md (AGENTS.md) とは
Claude CodeやCodexを使う場合、CLAUDE.md (AGENTS.md) というファイルにAIへの指示を書いておくことができます。
Claude Code では CLAUDE.md、Codex では AGENTS.md というファイルに書くことができます。
このファイルに書いた内容は、AIが常に参照するため、毎回同じ指示を出す手間が省けます。
ここにコミット関連の指示を書いておくと、AIが適切なタイミングでコミットメッセージを提案してくれます。
コミットメッセージを提案してもらう
私は以下のような指示を書いています。
実装が一区切りしたタイミングでコミットメッセージを1行で教えてください。私がコミットします。
この指示により、AIが「ここまでの変更をコミットしてもいいタイミングです」と判断したときに、コミットメッセージの案を提示してくれます。
AIからの提案例
実際には、以下のように提案してくれます。
AI: 実装が完了しました。
以下のコミットメッセージでコミットしてください:
feat: ユーザー登録機能に必要なバリデーションを追加
あとはこのメッセージを使ってコミットするだけです。
人間がコミットすることを明記
ポイントは「私がコミットします」と明記することです。
(もう少し良い言い回しはあるかもしれませんが、とりあえずこれで)
これにより、AIが勝手にコミットを実行してしまうことを防げます。
コミットするかどうかの最終判断は人間が行うことを明記することで、AIが勝手にコミットを実行してしまうことを防げます。
なお、AI にコミットまで任せてしまう方もいるかもしれませんが、それはあまりおすすめしません。
なぜなら、AI が生成したコードが必ずしも正しいとは限らないのと、そもそも「やりたかったこと」がAIに伝わっていない可能性があるからです。
変更内容のコード差分を直接みても最初はわからないかもしれませんが、少なくとも AI からの実装報告は確認し、そこで問題がなければコミットすることを推奨します。
まだ実装途中の場合の指示
また、もう一つ追加しておきたい指示があります。
まだ実装途中であり、コミットする価値がないと判断した場合は、その旨を教えてください。
この指示を書いておくことで、AIが「この時点ではまだコミットしない方がいい」と判断したときに、その旨を伝えてくれます。
AIからの返答例
たとえば、以下のように教えてくれます。
AI: まだテストが通っていないため、この時点でのコミットは推奨しません。
テストを修正してから再度実行してください。
これにより、中途半端な状態でのコミットを避けられます。
CLAUDE.md (AGENTS.md) の全体像
CLAUDE.md (AGENTS.md) には、コミット関連以外にも様々な指示を書けます。
開発のルールやコーディング規約、使用するライブラリなど、プロジェクト全体で共通の指示を書いておくと便利です。
コミット関連の指示も、その一部として位置づけると良いでしょう。
ブランチ運用について
ちょっとした変更はメインブランチでOK
最後に、ブランチ運用についても触れておきます。
ちょっとした変更であれば、メインブランチに直接コミットしても問題ありません。
たとえば、typoの修正や、簡単なデザインの調整などです。
ですが、新しい機能を追加するときには、ブランチを切ることを推奨します。
新機能ではブランチを切る
理由は、Claude CodeやCodexが特定のブランチやプルリクエストに対して個別に対応できるからです。
たとえば、「feature/user-registration」というブランチを作成して、そこで開発を進めます。
# 新しいブランチを作成して移動
git checkout -b feature/user-registration
# このブランチで開発を進める
> ユーザー登録機能を作って
# 完成したらメインブランチにマージ
git checkout main
git merge feature/user-registration
完成したらプルリクエストを作成し、必要であればAIにレビューしてもらうこともできます。
ブランチ運用のメリット
ブランチを切っておくことで、メインブランチを安定した状態に保ちつつ、新機能の開発を並行して進められます。
もし新機能の開発中に問題が起きても、メインブランチに影響を与えることなく対処できます。
また、複数の機能を同時に開発する場合も、ブランチを分けることで作業が整理されます。
AIはブランチを理解できる
これはAI駆動開発のメリットの一つでもあります。
AIは特定のブランチやプルリクエストのコンテキストを理解して作業できるため、ブランチを活用することで開発効率がさらに向上します。
たとえば、「このブランチでは認証機能を実装中」という文脈をAIが理解し、関連するコードのみを変更してくれます。
まとめ
AI駆動開発におけるGitコミットのポイントをまとめると以下の通りです。
- 最初はAIが作業するたびにコミットし、問題が起きたときにすぐ戻れるようにする
- 慣れてきたら動作確認が取れた時点でコミットし、意味のある変更単位で履歴を管理する
- CLAUDE.md (AGENTS.md) に「コミットメッセージを提案してもらう」指示を書いておくと便利
- 新機能を追加するときはブランチを切ることで、安全かつ効率的に開発を進められる
AI駆動開発は通常の開発とは異なる部分もありますが、基本的なGitの考え方は変わりません。
「記録を残したい状態」を適切に保存しながら、安心して開発を進めていきましょう。
この記事がAI駆動開発を始める方の参考になれば幸いです。
AI駆動開発の最新情報をキャッチアップするには?
Youtube でも AI 駆動開発の実践動画を公開しています!
よければチャンネル登録していただき、AI駆動開発の実践的な情報をキャッチアップにお役立ていただければと思います。
また、Discord で AI 駆動開発を学ぶ同士が集まる無料コミュニティもありますので、気軽に参加してみてください。
Discussion