Gitとは何か、プログラムのセーブデータを管理する仕組み
今回は技術シリーズとして、GitとGitHubを改めて取り上げています。
むなかたさんはまずGitについて、プログラムのバージョン管理システムの一つだと説明します。
もう少しかみ砕くと、何かプログラムを作ったときの「セーブデータ」を保存するための仕組みだと話されています。
元々はプログラム用途ですが、基本的には文章にどんな変更が加わったかを履歴として保存するものです。
そのため、テキストベースで作られているものなら幅広く管理できると話されています。
よく使われるのはプログラムのソースコードですが、ブログの記事データやメルマガの原稿なども管理できます。
何日にどういう変更を加えたかが残るので、非常に便利だと説明されています。
GoogleドライブやOneDriveとの違い
バックアップの方法はGit以外にもいくつかあります。
一番お手軽なものとして、むなかたさんはGoogleドライブを挙げます。
最新情報のバックアップという点では、実際のところGoogleドライブの方が強いという見方も示されています。
Googleドライブのデスクトップアプリを使うと、特定のフォルダに置いたファイルを定期的に自動でバックアップしてくれるからです。
最新の情報をずっとキープするためのバックアップとしては、この連携は非常にいいと話されています。
同様のサービスとしてMicrosoftのOneDriveも挙げられていますが、こちらには懸念も述べられています。
悪名高きOneDrive、勝手に同期された上に何か勝手に情報が流出することがあるというのを僕は聞いたことあるんですけれども。
一方でGitのメリットは、保存の仕方そのものにあります。
Gitは自動保存されるのではなく、自分がこのタイミングで保存したいというときに、名前をつけて現在のセーブデータを保存する仕組みです。
意味のあるタイミングで履歴を残せるGitの強み
この「自分で保存する」という点が、Googleドライブとの大きな違いだと説明されています。
Googleドライブは最新が勝手に保存されるため、あの作業をしていた時点に戻りたいというとき、かなり難しくなります。
スプレッドシートなら過去バージョンをプレビューしながらどうにか戻せることもあります。
しかしプログラムは多くの場所で変更が入り、複数ファイルが同時に変わることもあります。
そのため、バグが出たときに正しく過去の状態へ戻すのは難しいという印象が語られています。
その点、Gitなら「今この機能を追加したのでセーブデータを保存します」「次はここの見た目を変更したので保存します」と、名前をつけて一つずつ履歴を残せます。
この仕組みが非常に強く、エンジニアはほぼ使っていると話されています。
Gitに似た仕組みとしてSubversionなどもありますが、いずれにせよバージョン管理システムを使っているところは多いとのことです。
GitとGitHubは何が違うのか
ここでポイントになるのが、GitとGitHubの違いです。
Gitだけを使っていると、セーブデータはパソコンの中にだけ蓄積されていきます。
そのためパソコンが壊れると一気に使えなくなったり、他のパソコンに移ると何のデータも残っていない状態になります。
そこで基本セットになるのが、オンライン上のセーブデータの保管庫であるGitHubです。
初心者はGitとGitHubを同じものだと思いがちですが、用語としては別物だと強調されています。
Gitを集めたもの、ハブですよね、っていう意味でGitHubになるので、Gitはそういうセーブデータを管理するためのシステム自体がGitですね。
つまりGitはセーブデータを管理するシステムそのものです。
そのシステムで保存したデータを、さらにオンライン上へアップロードするためのサービスがGitHubだと整理されています。
セーブデータを管理するシステムそのもの。変更履歴を名前をつけて保存する仕組み。
保存したセーブデータをオンライン上にアップロードして保管するサービス。
GitHubに上げておくと、パソコンが壊れてもそこからデータを引っ張ってこられます。
もちろん自分でちゃんと保存しておく必要はありますが、最新の状態に戻すことができます。
複数のパソコンで使うためのプッシュとプル
GitHubにあるデータは、クローンというコマンドで別のパソコンに同じコードをすぐ復元できます。
そのためバックアップにも、複数のパソコンでの作業にも使えます。
本来の強みは、前の情報との差分、どの行がどう変わったかという情報を管理する点にあります。
複数人が同時にプログラムを変更したときにも、変更の衝突を矛盾なく合体させられる仕組みになっています。
ただしブランチやプルリクエストといった機能は、むなかたさんによれば余談的な位置づけです。
AIプログラミングでは一人で作ることが多いため、そこはあまり使わなくてよいと話されています。
一人で使う場合の主な用途は、複数の自分のパソコン間でのデータ同期です。
WindowsとMac、家のデスクトップと出先のノートPCといった端末の間でデータをそろえるときに便利だと説明されています。
最低限覚えたい用語、コミット・プッシュ・プル
GitとGitHubには多くの用語がありますが、まず押さえたいものが整理されています。
セーブデータを保存することをコミットと呼びます。「結果にコミットする」のコミットです。
保存したデータをGitHub上にアップロードする作業がプッシュ、つまり「押す」です。
GitHubにプッシュされた情報を自分のパソコンに取り込むことをプルと呼びます。
プルは一台で作業しているときには基本的に発生しません。
複数台で作業していて、他のパソコンが上げた最新情報を自分の端末に同期するときに使う作業です。
他にも枝を意味するブランチや、Gitを管理するためのフォルダであるリポジトリといった用語があります。
リポジトリはプロジェクトやフォルダのようなものだと考えればよいと説明されています。
名前をつけてセーブデータを保存すること
保存したデータをGitHub上にアップロードすること
アップロードされた情報を自分のパソコンに取り込むこと
作業内容に応じて切り分ける枝。一人作業ではあまり使わない
Gitを管理するためのフォルダ、プロジェクトのようなもの
最後に、なぜこれほど重要なのかがゲームのたとえで語られています。
AIを使ってプログラムを作る場合でも、セーブデータを使うか使わないかは天と地ほどの差があると話されています。
この話題はコミュニティでも、複数のパソコン間でGitHubを扱うにはどうするかという形で話題になったそうです。
関連する内容はブレイン教材「AI時代の開発の教科書」でもまとめられていると案内されています。
まとめ
Gitはセーブデータをつくるシステムそのもので、GitHubはそれをオンラインに保管するサービスです。AI開発でも、意味のあるタイミングで履歴を残せるこの仕組みは欠かせません。
- Gitはプログラムのバージョン管理システムで、名前をつけてセーブデータを保存できる
- Googleドライブは自動バックアップに強いが、意味のある時点への復元はGitが得意
- Gitはシステムそのもので、GitHubは保存データをオンラインに置くサービスという違いがある
- 最低限覚えたい用語はコミット・プッシュ・プルの三つ
- AI開発でもセーブデータの有無は大きな差になり、GitとGitHubの理解が役立つ
