MATLAB上でGithubを使う!
MATLABの公式ドキュメントではソースコード管理としてSubversionとGitを使用した例が紹介されています。今回は一般的に広く使われているGithubをつかったソースコード管理の方法について手順を説明していきます。
ソースコード管理の事前準備
MATLABで作成したソースコードをGithubで管理するために事前にいくつかの設定が必要です。
-
Githubアカウントを登録し、任意の新規リポジトリを作成します。
-
ソースコードを管理するためのルートディレクトリを新規に作成します。
>> mkdir <ディレクトリ名>
-
現在のフォルダー ブラウザーの空白領域 (任意の空白領域) で右クリックし、[ソース管理] 、 [ファイルの管理] を選択します。
-
[ソース管理を使用したファイルの管理] ダイアログ ボックスで、[ソース管理統合] リストから [Git] を選択します。
- [変更] をクリックして手順1で作成したリポジトリURL( *注意 HTTPSのURLを使うこと )をコピし、検証をクリックします。
- [ソース管理を使用したファイルの管理] ダイアログ ボックスで取得したファイルを配置するサンドボックス フォルダーを選択したら [取得] をクリックします。
- ( Windowsの方のみ ) Gitのコマンドラインツールのインストール
こちらの公式ドキュメントのコマンド ライン Git クライアントのインストールを参考にインストールしてください。下記のコマンドでバージョンが表示されればOKです。
>> !git --version
MATLABコマンドラインでの入力を想定しているため始めに
!
をつけています。
- バイナリファイルのGitへの登録をします。こちらの公式ドキュメントのバイナリファイルのGitへの登録を参考に登録を行ってください。
以上でMATLAB上でGithubを使ったソースコード管理を行うための下準備が整いました。
Githubを活用したソースコード管理
ここからはGithubをあまり使ったことがない初心者向けに簡単なソースコード管理の方法を説明します。既にGithubを使ったことがある方はどうぞ自由にMATLAB & Github生活をお楽しみください。
Githubの使い方
簡単に言えば、Githubでソースコード管理をする際にやることは以下の4つをひたすら繰り返すことです。
- コーディングする
- 変更をgitに追加(add)する
- 追加した変更に対してコミット(commit)する/コメントをつける
- ローカルリポジトリの内容をGithubのリモートリポジトリに反映(push)する
1つ目はいいですね。まず好きにコーディングします。2つ目に出来たファイルをgitに追加します。これはリモートリポジトリに反映するために一時的にインデックスと呼ばれる場所に保存します。
>> !git add <作成したファイル名> or *(変更の全指定)
このとき*を指定すれば変更分がすべて追加されます。そして3つ目にcommitです。commitではその変更がどのような変更だったのか(バグの修正、新機能の追加など)を記録するために行います。
>> !git commit -m 'コメント'
最後に変更をGithubのリモートリポジトリに反映させるためにpushします。
>> !git push origin master
ここでoriginやmasterといった見慣れない単語が出てきましたので、それぞれについて解説します。
まずoriginですが、これはリモートリポジトリを指しています。今回は自身が作成したGithubのリポジトリです。つまりここに自分が作ったコードをpushすることでローカルの内容をGithub上に保存しておくことが出来る訳です。
そして、masterこれはbranchとよばれるバージョンを指しています。後述しますが、コーディングを進めていく際に新機能を追加していく場合があると思います。そんなときに昔のバージョンを取っておくことで、新機能の開発などで不具合が生じたときにすぐ元に戻すことが出来ます。つまりmasterとは大元のバージョンのことです。
branchを活用したバージョン管理
コーディングを進めていくと、今の正常に動作するコードは残したまま、新機能を試しに追加して動作するか検証したいという状況が出てくると思います。そんなときに便利なのがbranchです。その名の通り、現状のコピーの枝分かれを作って、元の状態は残したままコピー先を編集して動作確認などをすることが出来ます。
branchの作成
まず、新規branchを作成します。
>> !git branch <新規branch名> (ex. topic-branch)
次に、作成したbranch(topic-branch)に移動します。
>> !git checkout topic-branch
branchの確認をします。
>> !git branch -a
master
*topic-branch
現在のbranchが米印で示されています。そして、このbranchでコーディングを進めます。
先ほどと同様に変更をadd, commitします。
>> !git add *
>> !git commit -m 'Add new functions'
これでローカルに変更が記録されたのでリモートにpushします。この際に現在のbranchを指定することで、masterを保持したままリモートにソースコードを保存しておくことが出来ます。
>> !git push origin topic-branch
このようにして複数のバージョンをbranchを作ることで保持しておくことが出来ます。
branchのマージ
開発が進んでいくと、masterに別のbranchで開発した新機能を追加して統合したいという状況も出てきます。そこで、行うのがmergeです。具体的には以下のようにします。
まず、masterにbranchを切り替えます。その後新機能を開発したtopic-branchとmergeします。
>> !git checkout master
>> !git merge --no-ff topic-branch
このときoptionで--no-ff
を使っていますが、とりあえずおまじないみたいなものとしてつけておいてください。詳細は割愛しますが、簡単に言えばtopic-branchでの開発履歴を残しておくためにoptionをつけています。
そしてGithubにpushします。
>> !git push origin master
最後に不要になったbranchを削除します。
git branch -d topic-branch
おわりに
本記事ではMATLAB上でGithubを使ったソースコード管理の方法について解説しました。MATLABでは今回コマンドで行った操作をUIでも出来るようになっていますが、個人的にはわかりにくいのと、これまでgithubを使ってきた方やこれからgithubを使っていく方、いずれにおいてもコマンドラインから操作できた方がいいであろうと思い、このようにいたしました。UIではbranchの変遷がグラフになっていたりと視覚的にわかりやすい部分もあるので適宜参照するようにするのが賢い使い方かなと思います。