1. はじめに:「コードが全部消えた...」絶望の瞬間
金曜日の夜、ジェンスパークで3日間かけて開発した認証機能を誤って全て削除してしまいました。しかも、Gitコミットを一度もしていなかったのです。
「Ctrl+Z」を連打しましたが、ファイルシステムレベルの削除だったため復元できません。バックアップもありません。3日間×8時間=24時間分の作業が一瞬で消失しました。
この記事で学べること
- Git管理を怠ることの実際の被害
- AI開発におけるバージョン管理の重要性
- ジェンスパーク開発に最適化されたGitワークフロー
- コミットの適切なタイミングと粒度
- コード消失時の緊急復旧方法
2. 事件の経緯:Git管理を怠った3日間
なぜGit管理を怠ってしまったのか、時系列で振り返ります。
2.1 1日目:「後でまとめてコミットすればいい」
月曜日、新しい認証機能の開発を開始しました。ジェンスパーク(Genspark)と対話しながら、小さな変更を何度も繰り返しました。「とりあえず動くまで進めて、後でまとめてコミットしよう」と考えていました。
2.2 2日目:「まだ完成していないから」
火曜日、機能は8割完成しましたが、「完成してからコミットしよう」と考えていました。テストも書いていないし、コードも整理されていない——そんな理由で、コミットを先延ばしにしました。
2.3 3日目:致命的なミス
水曜日の夜、別の機能を実装しようとして、誤って認証機能のディレクトリごと削除してしまいました。
rm -rf auth/ # 認証機能の全ファイルが削除
失われたもの
- コード行数:約1,200行
- 作業時間:24時間
- 機能:ユーザー登録、ログイン、JWT認証、パスワードリセット
- テストコード:30個のユニットテスト
- 設定ファイル:環境変数設定、依存関係リスト
2.4 復旧の試み
あらゆる復旧方法を試しました:
- ゴミ箱確認:rmコマンドは直接削除なので、ゴミ箱にもない
- ファイル復元ソフト:上書きされていて復元不可
- チャット履歴:コードの断片はあるが、全体は復元できない
- AIドライブ:保存していなかった
結局、ゼロから作り直すしかありませんでした。
3. なぜGit管理が重要なのか
特にAI開発において、Git管理は単なる「あると便利」なツールではなく、必須です。
3.1 AI開発の特殊性
ジェンスパーク(Genspark)などのAIツールを使った開発には、従来の開発にはないリスクがあります:
- 試行錯誤の多さ:AIの提案を何度も試すため、変更履歴が複雑
- 予期しない変更:AIが意図しない変更を加えることがある
- チャット履歴の不完全性:全てのコードがチャットに残るわけではない
- コンテキスト喪失:チャット画面移行で情報が失われる
3.2 Gitが提供する安全網
Gitの3つの保護機能
- タイムマシン:過去のコードにいつでも戻れる
- 実験の自由:ブランチで安全に新機能を試せる
- 変更の追跡:何を、いつ、なぜ変更したか記録
4. AI開発でのGitワークフロー5ステップ
ジェンスパーク(Genspark)開発に最適化された実践的なGitワークフローをご紹介します。
4.1 ステップ1:プロジェクト開始時に必ずgit init
mkdir my-project
cd my-project
git init
git add .
git commit -m "Initial commit"
# GitHubリモートリポジトリと連携
git remote add origin https://github.com/username/repo.git
git push -u origin main
4.2 ステップ2:機能単位でブランチ作成
新しい機能を実装する際は、必ずブランチを切ります。
git checkout -b feature/authentication
# ジェンスパークで開発...
# 定期的にコミット(30分〜1時間ごと)
git add .
git commit -m "Add user registration endpoint"
4.3 ステップ3:小さく頻繁にコミット
コミットのタイミング
- 機能の追加後:1つの機能が動作したら即コミット
- バグ修正後:問題が解決したら即コミット
- リファクタリング後:コードを整理したら即コミット
- チャット画面移行前:必ずコミット
- 休憩・終業前:作業を中断する前に必ずコミット
4.4 ステップ4:定期的にリモートへプッシュ
git push origin feature/authentication
# PCが壊れても、GitHubにコードが残る
4.5 ステップ5:機能完成後にマージ
git checkout main
# 機能ブランチをマージ
git merge feature/authentication
# リモートに反映
git push origin main
# 不要になったブランチを削除
git branch -d feature/authentication
5. ジェンスパーク(Genspark)開発でのGitベストプラクティス
AI開発特有のGit運用のコツをまとめました。
5.1 コミットメッセージの書き方
良いコミットメッセージの例
- 具体的:「Add user login with JWT authentication」
- AI生成の明記:「[GenSpark] Fix N+1 query issue in user list」
- 問題の記録:「Fix infinite loop (GenSpark generated code)」
5.2 .gitignoreの設定
プロジェクト開始時に必ず.gitignoreを作成します。
__pycache__/
*.pyc
.env
venv/
.vscode/
.idea/
*.log
db.sqlite3
# 機密情報
config/secrets.json
*.key
*.pem
5.3 AIドライブとの併用
GitとAIドライブを使い分けます:
- Git:コードのバージョン管理
- AIドライブ:設計ドキュメント、メモ、スクリーンショット
5.4 定期的なバックアップ
3-2-1バックアップルール
- 3つのコピー:ローカル、GitHub、AIドライブ
- 2種類のメディア:HDD/SSD、クラウド
- 1つはオフサイト:GitHubやAIドライブ
6. コード消失からの復旧方法
万が一コードを失った場合の復旧手順をご紹介します。
6.1 Gitコミット済みの場合
git checkout -- ファイル名
# コミット前の変更を全て破棄
git reset --hard
# 特定のコミットに戻る
git reset --hard コミットID
# 削除したブランチを復元
git reflog # 履歴確認
git checkout -b ブランチ名 コミットID
6.2 未コミットの場合
残念ながら、完全な復旧は困難ですが、以下の方法を試します:
- チャット履歴:ジェンスパーク(Genspark)の対話からコードを再構築
- AIドライブ:保存していたスニペットを探す
- ファイル復元ソフト:PhotoRec、TestDiskなど
- IDEの履歴:VSCodeのLocal Historyなど
6.3 再発防止策
二度と失わないための習慣
- 30分ルール:30分ごとにコミット
- 作業終了時:必ずコミット&プッシュ
- 実験前:必ずブランチ作成
- 削除前:git statusで確認
7. まとめ:Git管理は保険ではなく必須
3日分のコードを失った経験から、Git管理の重要性を痛感しました。特にAI開発では、変更が頻繁で予測不可能なため、Git管理はさらに重要です。
5つの鉄則
- プロジェクト開始時に必ずgit init
- 30分〜1時間ごとにコミット
- 1日1回以上はリモートへプッシュ
- 新機能は必ずブランチで開発
- チャット画面移行前は必ずコミット
Gitは「後で設定すればいい」ものではありません。プロジェクト開始の瞬間から、Git管理を習慣化することが、AI開発における最も重要な自己防衛策です。