【ばーじょんかんり】

バージョン管理 とは?

💡 コードの「タイムマシン」と「合流地点」
📌 このページのポイント
main C1 C2 M1 M2 feature-A C3 C4 C5 feature-B C6 C7 C8 マージ マージ 分岐 分岐 mainブランチ featureブランチ マージ
バージョン管理のブランチモデル
ひよこ ひよこ

バージョン管理って「report_最終版_本当の最終版.docx」みたいなのとは違うの?

ペンギン先生 ペンギン先生

まさにその問題を解決するのがバージョン管理だよ!ファイル名を変えて管理する代わりに、ツールが自動で変更履歴を記録してくれるんだ。「いつ・誰が・どこを・なぜ変えたか」が全部残るから、ファイル名で管理する地獄から解放されるよ。

ひよこ ひよこ

Gitってどうやって使うの?

ペンギン先生 ペンギン先生

基本の流れは「変更する→変更を記録(コミット)する→共有する」だよ。コミットするときに「ログイン画面のバグを修正」みたいなメッセージをつけるから、後から履歴を見れば何をしたかすぐわかる。間違えたら過去のコミットに戻せるのがタイムマシンたるゆえんだよ。

ひよこ ひよこ

おもしろい!ブランチって何?

ペンギン先生 ペンギン先生

開発の本流(メインブランチ)から枝分かれして作業できる機能だよ。新機能をブランチで開発すれば、本番のコードに影響を与えずに試行錯誤できる。完成したらメインに合流(マージ)させるんだ。ただし同じ箇所を別々のブランチで変更すると「コンフリクト」が起きて手動で解決が必要になるのが初心者の壁だね。

ひよこ ひよこ

Git以外のバージョン管理ツールってあるの?

ペンギン先生 ペンギン先生

SVN(Subversion)は中央集権型で、Gitが登場する前は主流だったよ。Mercurialも分散型でGitに近いけど、GitHubの圧倒的な普及でGitが事実上の標準になった。ゲーム業界ではPerforceが大きなバイナリファイルの管理に強くてよく使われている。

ひよこ ひよこ

バージョン管理ってコード以外にも使えるの?

ペンギン先生 ペンギン先生

インフラの設定ファイル(TerraformAnsible)もGitで管理する「GitOps」という手法が主流になっているよ。デザインファイルのバージョン管理にはFigmaブランチ機能を提供しているし、データベーススキーマ変更もマイグレーションファイルとしてGit管理する。「変更履歴を残して元に戻せる」というバージョン管理の価値は、コードに限らずあらゆる成果物に当てはまるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「バージョン管理」って出てきたら「ファイルの変更履歴を記録して、戻したり統合したりできる仕組みだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「version control」 = 版の管理
💬 versionは「版」、controlは「管理」。本の初版・改訂版のようにソフトウェアの変更を版として管理するんだよ
← 用語集にもどる