情報系の手考ノート

数学とか情報系の技術とか調べたり勉強したりしてメモしていきます.

研究でも Git は使える

git というソフトウェアがあります. 昨今のソフトウェア開発で多用されるヤツです. branch をわけて,commit して push だ merge だとかいろいろやって使うというアレです. そんな git ですが研究でも十分使えます. 実際私は修論や,論文読解やゼミ用のノート,実験用のプログラム等は git で管理していました. ということで研究で git はどう使えばいいの?ということに関して,書いていきたいと思います.

何を管理するの?

研究をしているといろんなファイル等を管理することになります. 私は以下のファイル群を git で管理していました.

  • 読んだ論文をまとめたノート
  • 学習内容や提案手法をまとめたノート
  • 実験用のプログラムとスクリプト
  • 修論(卒論も)

これらは適宜加筆修正が発生するため git でバージョン管理をしておくと安心できました. 特に実験用のプログラムとスクリプトは実験ごとにバージョンを付けておけるため,再現性の確保にも繋ります.

どうやって管理した?

ソフトウェア開発で git を使おうとすると,branch をどうわけるだのといろいろな情報が出てきます. 私はソフトウェア開発なんて手を出したことが無く,git の良い使い方なんて知らないですが,それでも十分便利だったと感じています.

管理の方法としてはただ適当なタイミングで commit するというだけの非常にシンプルなものです. commit メッセージはどんな修正をしたかというだけのものです. また適宜 gitlab のプライベートリポジトリにプッシュしていました. 恐らく git の使い方としては最低限のものでしょう.

特にプログラムに関しては実験ごとに commit メッセージに実験をしたという内容を書くようにしていました. これによって好きなタイミングの実験を確実に再現できるようになります.

また頻繁に push しておけば常にリモートリポジトリにバックアップがある状態で研究が進むので,最悪環境がおじゃんになっても復旧が容易であるというメリットがあります. まぁこれはかなりわかりやすいものではありますが.

このメリットとは別のメリットとして,commit の履歴を見ることでいつ何をしていたかがわかるというものがあります. つまり研究日誌として git のリポジトリが利用可能になるということです. 実験等をしたら当然考察を行わなければなりません. 他にもプログラムの動作が想定外なら,原因を考え解消する必要があります. つまり,いろいろ考えて,それに応じて行動するということを繰り返すことになります. この考えた内容はどこかに保存していないと,当時何を考えていたか忘れてしまいます. 数週間前ならまだ思いだせるかもしれませんが,数ヶ月前ならほぼ不可能でしょう. そんな時,実験用のプログラムを修正した commit メッセージになんでそうしたかが書いてあれば,どういう考えでその修正を行ったのかがわかるわけです. まぁ普通に日誌をつけてもいいんですが,git をつかえばバックアップをとりながら日誌も書けるという点で効率が良いです.

それに commit には日時の情報もあるので,いつどれだけの時間研究していたかもわかります. これは自分が研究をちゃんとやっているという保証にも繋がるので,教員に救ってもらえる可能性が高まります.

まとめ

git を使ってソフトウェアを開発したりするわけですが,そんな開発にはいろいろとマナーみたいなものがあります. そんなもん気にしなくても git は使えるので軽率に使ってください. というか使って始めてわかることとかもあるので,最初からちゃんとやろうとしなくていいです. 研究でなら尚更です. バックアップをとりながら,各バージョンにメモを残しておける程度で使っても十分役に立つので,気軽に使いましょう. それが結果的に git の学習にもつながります.