gitの考え方
gitとは?
gitは、ソースコードやテキスト、htmlファイルなど「文字」で記述するファイルの変更履歴を管理するために広く使われている、バージョン管理ツールです。
使い方は非常にシンプルです。任意のフォルダをgitに管理させると、そのフォルダ内の全ファイルの変更を自動的に検出してくれるようになります。ユーザーがやることは、変更内容ごとに簡単なタイトルを付けて記録(commitと呼びます)していくだけです。これだけで、
- 以前記録(commit)した任意のタイミングにフォルダの中身を戻す
- 特定の時期に行った変更のみを取り消す
- 特定のファイルの変更履歴を調べる
といったことができます。
さらに、オンラインサーバーと同期させることで、
- 新しいPCからでも簡単に作業中のフォルダを復元
- 複数人で同時にファイルを編集・同期
などもできるようになります。
gitの機能だけ見ると、GoogleDriveやDropboxのようなオンラインストレージサービスと類似しているように思うかもしれません。しかし、gitには以下の特徴があります。
- 極めて軽量。アプリとして常駐することはなく、ほとんどの機能はオンライン環境も必要としない。
- 「ファイル自体」ではなく「変更履歴」の記録に特化しているため、「特定の期間にどのファイルが変更されたか」「このファイルはいつどこが書き換えられたか」等が簡単にわかる。
- 複数の「作業環境」の管理機能が充実しており、同時並行で複数のバージョンを開発したり、一方のバージョンでの変更を他方へ丸ごと反映したりできる。
- 画像ファイルや音楽ファイルなどの「文字」ではないデータの保存は苦手(不可能ではないが、変更を重ねると動作が重くなる)。
つまり、様々なファイルをバックアップ・同期したいだけならオンラインストレージ、一つのプロジェクトを少しずつ発展・開発していく際のファイル管理をしたいならgit、という使い分けになるかと思います。
何が嬉しい?
gitの活用は、研究のような「試行錯誤を繰り返す」場合に様々な面でメリットがあります。
- 新しいアイデアを試すとき、躊躇なく既存のシミュレーション用のソースコードを上書きできる。もし失敗してもすぐ元通り。
- 「計算させつつ機能も追加したい」時も安心。シミュレーション用と機能追加用、二つの作業環境を作成して切り替えながら進められる。
- 急に動かなくなったとき、計算にバグが見つかったときに、「何を変更したか」「いつからそのバグがあったか」を後で簡単に調べることができる。
- 研究過程、すなわち「いつ何をやったのか」を逐一記録する実験ノート代わりになる。
- 研究論文を公開する際に、計算に用いたプログラムを一般公開できる。
- 複数人での共同研究も簡単。「他の人はどんなふうに書き換えた?」「どのくらい今進んでそう?」といったことが一目でわかる。
使い捨てのコードを除けば、研究で使用するコードは全てgitに管理させるべきだと言えます。
gitの構成
gitを機能させるために必要なものは三つです。
一つ目は、gitを機能させるためのアプリで、これ自体もgitと呼ばれます。詳しいインストール方法は次ページで説明します。ただ、このアプリはCUIと呼ばれる「全てキーボードでコマンドを入力して操作する」タイプのため、慣れないと使いにくいです。
そこで出てくるのが二つ目、gitクライアントと呼ばれるアプリです。これらのアプリは、gitをマウスなどでより直感的に操作するためのものです。いくつか選択肢があります。
- SourceTree:古くからよく使われる無料アプリです。資料も多く見やすいため悪くはないのですが、やや動作が重いです。
- GitHub Desktop:後述するGitHubと呼ばれる大手サーバーが提供するgitクライアントです。
- GitKraken:一部機能が有料ですが非常に使いやすいです。
- Visual Studio Code【本サイトで使用】:優秀な無料コードエディタ。拡張機能の導入で、gitクライアントとしても他のアプリに遜色ない使い勝手となる。
三つ目が、ホスティングサービスと呼ばれる、Git用のオンラインサーバーを提供するサービスです。こちらもいくつかの選択肢があります。いずれも多人数で大規模な開発を行わない限り、無料で利用できます。次ページで説明するように、このサイトではGitHubを例に説明します。サービスによって無料で利用できる範囲に差がありますが、大きく差があるわけではないこと、ホスティングサービスの乗り換えも比較的簡単なことから、ひとまず適当に選び、ある程度gitのことが理解できた時点で改めてメインで使うサービスを比較検討しても良いと思います。