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つの保護機能

  1. タイムマシン:過去のコードにいつでも戻れる
  2. 実験の自由:ブランチで安全に新機能を試せる
  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:定期的にリモートへプッシュ

# 1時間に1回、または重要な変更後にプッシュ
git push origin feature/authentication

# PCが壊れても、GitHubにコードが残る

4.5 ステップ5:機能完成後にマージ

# mainブランチに戻る
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を作成します。

# Python .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 再発防止策

二度と失わないための習慣

  1. 30分ルール:30分ごとにコミット
  2. 作業終了時:必ずコミット&プッシュ
  3. 実験前:必ずブランチ作成
  4. 削除前:git statusで確認

7. まとめ:Git管理は保険ではなく必須

3日分のコードを失った経験から、Git管理の重要性を痛感しました。特にAI開発では、変更が頻繁で予測不可能なため、Git管理はさらに重要です。

5つの鉄則

  1. プロジェクト開始時に必ずgit init
  2. 30分〜1時間ごとにコミット
  3. 1日1回以上はリモートへプッシュ
  4. 新機能は必ずブランチで開発
  5. チャット画面移行前は必ずコミット

Gitは「後で設定すればいい」ものではありません。プロジェクト開始の瞬間から、Git管理を習慣化することが、AI開発における最も重要な自己防衛策です。

関連記事

参考リンク