論文を書く時のあるある

論文、特に共著論文を書いているとき、よく次のような問題が起こることがあります。

これらの問題を人間の頭で管理しようとすると、とてもめんどくさいです。そんなときに役立つのが、バージョン管理ツールです。今のところ主に使っているのはプログラマーの人たちですが、きっとそのうち、研究者も当たり前のように使うようになると思います。

バージョン管理ツールについて

代表的なバージョン管理ツールにGitMercurialがあります。それぞれ一長一短あります。 詳しくは、Mercurial 対 Git:なぜ Mercurial を選ぶのか? Git 対 Mercurial:なぜ Git を選ぶのか? を参照してみてください。 ~~私は今のところ両方使ってます~~ 私は今はgitを使っています。

どちらを使うにしても、バージョン管理ツールを使うと次のようなことができます。

使ってみる

これらのバージョン管理ソフトは個人で使っても有用です。ぜひ、使ってみてください。

インストール

GUI

たぶん多くの方にとって、GUI版の方が使いやすいと思います。 SourceTreeが評判がよいようです。WindowsもMacもあります。GitもMercurialも使えます。ある程度長く使うには、登録が必要なようです。

コマンドライン

GUI版は慣れれば使いやすいのですが、CUIの方が取っ付き易いという方も多いと思います。そんな方にはCUI版があります。 Macなら、homebrew を使ってインストールするのが良いと思います。 Windows の場合は、GitMercurialに行くとバイナリーがおいてあります。

チュートリアル

ネットにいろいろありますが例えば、CUIのものですが、git入門 (全22回)ドットインストールは動画で丁寧に解説がされています。動画ではローカル開発環境というのを作ってやっていますが、コマンドラインのgitが動くならそれでOKです。

ほかにも様々なリモートリポジトリのホスティングサービスが説明やチュートリアルを用意しています。

リモートリポジトリ

共同作業をするには、リモートリポジトリを作る必要があります。Dropboxやsshでloginできる普通のサーバーでもできないことはないのですが、専用のサーバーの方が便利です。自分でサーバーを立ててもよいのですが、普通の人にとっては面倒なので、以下の様なホスティングサービスを利用するのが便利です。

Gitなら、もうGitHubの方がいいと思います。Mercurialを使うならBitBucketしかないです。

共同作業

プロジェクトを立ち上げると、どこかにリモートリポジトリを作り、メンバーみんながpushできるようにする。それぞれのメンバーは、まずcloneして自分のマシンにローカルリポジトリを作る。朝来て作業を始めるときにはpullし、他の人にどんな進展があったかをチェック。ローカルリポジトリへのcommitは頻繁にやる。自分の作業がキリの良い所まで来たらpushする。他の人がすでにpushしていて自分がpush出来ない時には、ひとまずpullしてからpush。みたいな感じで進んでいくのだと思います。

そうは言っても

こんな感じで作業をするためには共同研究者全員がツールの使い方にある程度慣れていなければならず、現状はすぐには難しいかもしれません。

ひとまずは、1人の作業で使ってみて、多くの人が慣れてくれば、こういうバージョン管理ツールを使った共同研究も容易になってくると思います。