ソフトウェア開発を行う際、バージョン管理ソフトと呼ばれるソフトウェアを使用します。
バージョン管理ソフトには様々な種類がありますが、メディアラボではGitを主に使います。
ここではGitについて説明していきます。
皆さんは昔のファイルを残したいというとき、どのようにしていますか?
日付や「最新」といった名前をファイルにつけて昔のファイルを残したことはありませんか?
内容を追加してみたけれど、やっぱり前の状態に戻して作り直したい…といった経験がある人も多いかと思います。
ソフトウェアを開発していると、昔の状態に戻したいといったことがよくあるのですが、日付などをファイル名につけるといったことは行いません。
どうするのかというと、バージョン管理ソフトと呼ばれるソフトウェアを使用します。
ここで出てきた「バージョン管理」ですが、「ファイルの変更履歴を管理すること」ということを指しています。
先ほどの例にあった「ファイル名に日付をつけて昔のファイルを残す」というのも
バージョン管理を行っていることになります。
しかしこのやり方では次のような問題が出てきます。
このような問題を起こさずにバージョン管理を行うためのソフトが「バージョン管理ソフト」です。
バージョン管理ソフトを使用すると、次のようなメリットがあります。
世の中にはいろいろなバージョン管理ソフトがあるのですが、社内で活用しているものは次のいずれかだと思います。
CVSとSubversionを使っているものについては、今後Gitへと移行することになっています。
そのためGitの使い方を覚えれば大丈夫です。
Gitとは2016年時点で最もメジャーなバージョン管理ソフトです。
プログラムのソースコードや、画像ファイル、ドキュメントといったもののバージョン管理を行うため、
広く使われています。
Gitをそのまま使う場合、たくさんのコマンドを覚えて黒い画面にコマンドを打ち込む必要があり、
操作に慣れてないひとには敷居が高いです。
そのため、Gitをマウス操作で使えるようにしてくれるソフトウェアがたくさん提供されており、
社内では「SourceTree」というソフトウェアを使うことを推奨しています。
もちろん「SourceTree」以外のソフトでGitを活用してもいいですし、Gitをそのまま使っても問題ありません。
前述の通り、Gitを使うとファイルの変更履歴を管理することができます。
ただしGitで何が行われているのかを理解していないと、せっかくの機能を有効に活用できず、
最悪の場合せっかく管理した変更履歴が消えてしまって元に戻せないということになりかねません。
そのため、Gitで何を行っているのか、というところから説明していきます。
Gitを使ってプログラムを作る場合、主に次の流れで行います。
これをGitの用語で説明すると次のようになります。
これらの各手順を説明していきます。
最初の手順は「リモートリポジトリをクローンする」です。
CVS、Subversion、Gitなどのバージョン管理ソフトではファイルの変更履歴などを管理している場所のことを「リポジトリ」と呼びます。
Gitでは用途によってリポジトリをそれぞれ次のように呼び分けます。
CVSやSubversionを使ったことがある人は、「Gitにはリポジトリが2種類ある」ということをしっかり理解してください。
開発を始める際は、まず自分の作業場所にソフトウェアのソースコードを持ってくる必要があります。
最新ソースコードは共通の場所である「リモートリポジトリ」で管理されているため、それを元に自分専用の場所である「ローカルリポジトリ」を作ります。
リモートリポジトリからローカルリポジトリを作る操作をGitでは「クローン」と呼びます。
クローンするのは最初の一回だけであることが多いと思いますが、何をする操作なのかはしっかり覚えましょう。
図1. リモートリポジトリをクローンする
次の手順は「プログラムに変更を加える」です。
リモートリポジトリを作成した場所に、最新のソースコードが配置されているはずです。
これらのファイルに対して変更を加えていきます。
次は「変更内容をローカルリポジトリにコミットする」です。
これはソースコードに加えた変更をローカルリポジトリに登録することを意味しています。
コミットの際はメッセージを残すことができます。
Gitにはコミット毎の変更内容とメッセージを確認する機能があり、メンバーが行った変更内容の確認などで頻繁に活用します。
その際、変更目的や変更の概略がメッセージに書いてあると非常に助かります。
コミットする際は、変更目的や変更の概略をメッセージに記載するようにしましょう。
コミットメッセージ未入力でもコミットできますが後で見返した際にとても困ってしまいますので、くれぐれも未入力でのコミットは行わないようにしましょう。
CVSやSubversionでコミットというと「共有の場所に変更内容を登録する」という意味合いですが、
Gitのコミットでは共通の場所へは変更内容は登録されません。
CVSやSubversionを使ったことがある人は、共通の場所に変更内容を登録したつもりになってしまわないよう、十分注意してください。
図2. 変更内容をローカルリポジトリにコミットする
共通の場所であるリモートリポジトリにはまだ変更内容が登録されていないので、変更内容を登録します。
これを行うためには「プッシュ」という操作を行います。
プッシュを行うと、ローカルリポジトリにコミットされた変更内容がリモートリポジトリへと反映されます。
図3. 変更内容をリモートリポジトリにプッシュする
複数人で開発していると、メンバーが行った変更内容を取り込む必要があります。
メンバーもリモートリポジトリに変更内容をプッシュするため、自分以外の変更内容はリモートリポジトリへと反映されてきます。
Gitの「プル」という操作を行って、リモートリポジトリへの変更内容をローカルリポジトリに取り込みます。
図4. リモートリポジトリからプルする
次の図と用語を頭に思い浮かべて、Gitを使ってみてください。
図5. まとめ