
GitHubが正だと思ってたら、普通に壊れた話
最近ちょっと痛い学びがあったので、メモがてら残しておきます。
アプリ開発してると、バージョン管理って「ちゃんとやってるつもり」になりがちなんですよね。自分も完全にそうでした。
ちなみに非エンジニアですが、JavaScriptの基礎はudemyで学びました。
で、今回なにが起きたかというと、
「正はGitHubにある」と思い込んでたのが、そもそものズレでした。
気づいたら、
・GitHubのコード
・Firebaseに上がってるもの
・TWAでビルドしたもの
・Playストアに出てるもの
これが全部、微妙に違う状態。
しかも自分の中では「GitHubが正」っていう前提で動いてるから、
GitHubを見て「これが正しいはず」→でも実際の挙動は違う → さらに混乱、みたいな流れに。
冷静に見れば当たり前なんですが、
運用がズレた瞬間に、“正”もズレるんですよね。
最初は「一部直せば戻るでしょ」と思ってました。
でも実際は、触れば触るほどズレが広がる。
ある設定は新しいのに、別は古いまま、みたいな。
で、途中でこう思いました。
「じゃあ4日前に戻せばいいんじゃない?」
いわゆる切り戻しっぽいやつです。
実際、4日前の状態はちゃんと動いてたので、
そこを基準に復元しようとしたんですが…
これが逆に、さらにカオスになりました。
理由はシンプルで、
「4日前に正しかった“環境一式”」ではなくて、
“GitHubのコードだけ”を戻そうとしたから。
他の環境(Firebaseやビルド済みのもの)は今のままなので、
結果として「過去と現在のミックス状態」になってしまった。
これ、かなり危ないやつでした。
で、どうしたかというと。
一回あきらめて、GPTに相談しました。
そこで出てきたのが、
「中途半端に戻すより、基準決めて再構築した方が早い」
という方向。
正直「また作り直しか…」って思ったんですが、
やってみたらこっちの方が圧倒的に早かったです。
むしろ、あのまま切り戻しにこだわってたら、
たぶんもっと時間溶けてました。
今回の反省ポイントをまとめるとこんな感じです。
まず一つ目。
「正」がどこかを“思い込み”で決めていたこと。
GitHub=正、にしてたけど、実態はそうじゃなかった。
本当は「運用としてどこを正にするか」を決めないと意味がない。
二つ目。
切り戻しは“環境ごと”戻さないと意味がないこと。
コードだけ戻してもダメで、
ビルド・デプロイ・設定含めて揃ってないと、むしろ壊れる。
三つ目。
ビルド成果物をちゃんと追えてなかったこと。
TWAでビルドしたものを「完成品」として扱ってたけど、
その元がどの状態かをちゃんと紐づけてなかった。
だから、差分が追えない。
四つ目。
違和感を放置したこと。
「あれ?なんか変だな」はだいたい正しい。
今回も、その時点で止まっていればここまで崩れなかった。
再構築後は、かなりシンプルにしました。
・どこを正とするかを明確にする
・そこからしかデプロイしない
・ビルド元を必ず記録する
この3つだけでも、かなり安定します。
あと、「戻せる状態」をちゃんと残すようにしました。
これ、精神的にもめちゃくちゃ大事。
今回の一番の学びはこれです。
「GitHubにある=正」ではない。
「運用として正にしている場所」が正。
そしてもう一つ。
「中途半端な切り戻しは、だいたい悪化する」
当たり前なんだけど、実際に崩れるとよく分かるやつ。
個人開発してると、このへん曖昧になりがちなので、
・正をどこに置くか決める
・そのルールを守る
・切り戻すなら“全部”戻す
・迷ったら再構築も選択肢に入れる
ここ、大事です。
自分は今回でだいぶ懲りました。
でもまあ、その分ちょっと強くなった気もします。