この記事を読まれている皆さんはどのようなツールを用いて日々の研究を進めているでしょうか。様々な意見があると思いますが、本記事では研究において用いる各ツール、そしてそれをGithubを中心としてまとめるシステムの提案をしてみたいと思います。

GitHubとは

まずGitHubについて説明します。GitHubとは、バージョン管理ソフトGitによって管理されるコードをアップするための場所(共有リポジトリ)を提供・そしてそれを基盤として共同開発のために必要な機能を揃えたサービスです。

ソフトウェア開発に用いられることが想定されたものですが、GitHubは研究を進める、という点においても非常に重要な役割を果たすサービスだと思います。本記事ではGitHubを活用し、様々なツールと組み合わせて研究の過程を管理できるシステムの構築を提案してみたいと思います。

GitHubを中心とするシステム

researchgithub1.png

ではまず研究がどのように進むのかについて、本記事では次のような前提で考えてみます。 まず研究室のボスとの議論を通じて研究の大まかなテーマを決定します。次にそのテーマに関する先行研究調査を行い、新規性を得られるように研究方針を確定させます。そして方針に従って、結果を得るために必要な処理についての実装を行い、結果を取得して、得られた結果についての分析を行って、論文執筆に入っていくでしょう。

行きつ戻りつを繰り返しながらも大まかにはこのような流れで進んでいくのではないでしょうか。

この研究の流れに、各フェーズで使うツールを付け加えたのが次の図です。

なお、テーマの決定フェーズではボスとのコミュニケーションが必要で、実装フェーズは分野ごとに用いられるツールや実装するものが異なるので、ツールは記載しておりません。

researchgithub2.png
ここからは各フェーズにおけるツールについての説明を行っていきます。

論文調査と管理

論文調査で用いられることが多いのは次の二つです。

Google Scholarはその名の通りGoogleが提供する論文調査に特化した検索サービスで、無料で利用することが出来ます。ただ基本的に無料のサービスであるため、検索における条件絞込み機能などは最低限しか用意されていませんが、普段のGoogle検索と変わらないフォーマットで殆ど不自由なく利用できるサービスでしょう。

対してWeb of Scienceは基本的には個人で利用するのではなく、法人単位で利用することが想定されている検索サービスです。大学単位で利用できる場合が殆どなので、学生であれば問題なく利用できると思います。Google Scholarよりも検索精度が高く、細かい絞り込みが可能なので、腰を入れて先行研究調査を行う場合にはこちらのほうがよいと思います。

これらの文献検索サービスを利用して得た情報は、後々論文を執筆する際に利用することになるため、それら情報を管理する事が必要になります。

ここではその管理ツールとしてMendeleyを推奨したいと思います。Mendeleyは上に述べた検索サービスから数クリックで文献の書誌情報をデータベース化出来る文献管理サービスです。Evernoteで文献の管理を行う人もいるかもしれませんが、後々引用する際に手間がかかるはずです。一方Mendeleyはこれを数クリックで行うことが出来るため非常に手軽です。

また後述しますが、Gitでバージョン管理できる形式で文献リストを出力できることも推奨する理由です。

データの管理

データが分散しておらず、少ないデータ量で収まるならExcelでも問題ないでしょう。

ただ、1万行規模でいくつものExcelファイルにデータが散らばってしまっているのであれば、データベースを利用したほうが良いと思います。大規模なデータであってもデータベース化されていれば分析を行う際にも必要なデータのみを取り出しやすいからです。

データベースのソフトにはPostgreSQLMysqlSQLiteが選択肢として考えられます。これらはどれもRDBMSと呼ばれるシステムになっており、データを取りだすには問い合わせ言語SQLについて必要最低限のことさえ学べば問題ありません。セットアップに関しては環境ごとによって方法があるため一概に述べることは出来ませんが、手間を最小限にしたいのであればSQLiteを選べば問題なく導入できるはずです。

データ分析

こちらも同様に、小規模且つ単純な集計で済むのであればExcelを使うべきです。ただ、Excelは分析処理を全てマウスクリックで出来てしまう反面、どのような作業をしたのかの手順が可視化できず、再現性を担保することが難しいです。進捗報告の際にどのような手順で分析を行ったのか、その説明に苦労することになるでしょう。

Excelで処理しきれないほどデータが大規模になり、分析手順が複雑になるのであればコードで分析処理を記述する方が良いでしょう。コードであればGitでバージョン管理することができて進捗管理も容易になります。ここではそうした分析ツールとしてRPythonを使うことをお勧めします。

Rは統計分析に特化した言語です。コードを書けばすぐに結果が表示されるこの言語は、最初から統計分析に必要な機能の殆どを揃えている上、パッケージを適宜導入することで機能の拡張も簡単担っています。またRには連携するソフトウェアとしてRstudioがあり、RstudioによってRのコードを書くのは非常に快適になります。是非試してください。

これに対してPythonは、統計分析のみを目的としておらず、より汎用性の高いプログラミング言語です。ただその柔軟性の高さからモジュール開発が盛んで、ソフトウェア開発に用いられているだけでなく、統計分析に特化した使い方も可能となっています。プログラミング言語としては非常に難易度が低く且つ様々なことを実装できる言語なので、統計分析と合わせてプログラミングを学びたいのであればPythonを学んでみてはいかがでしょうか。またRよりもさらに大規模なデータを処理できることも大きな強みです。

どちらもプログラミング言語としてある程度の学習コストは必要になりますが、使えるようになれば非常に有用なツールだと思います。

論文執筆

短い文章を作成したり、その文章に長い期間取り掛かるのでないならば、MicrosoftのWordで十分でしょう。しかし論文のように長い分量で長期間取り組む文章を書くのであれば、Latexを使うべきです。最初はとっつきにくいかもしれませんが、論文を書く上でLatexにはWordにない利点がいくつかあります。

まずWordでは基本的にバージョン管理することが出来ません(履歴を確認できる機能は存在しますが、文量が増えると指数関数的に挙動が重くなります)。そのため、どの部分をどのように変更したのか把握しづらいのではないでしょうか。また論文のように長い文章を扱う際にはソフトの挙動が不安定になりやすいですが、ソフトが落ちた際に自分がどこまで作業を進めていたのか、その履歴を確認できません。Latexであれば、Gitでバージョン管理できるので、進捗の管理を行うことが容易です。

またWordを使っていて、図表の調整中に文章の構造が崩れてしまった経験はないでしょうか?これはWordが文章の中身とその構造を同時に管理する性質を持っているために起こる現象で、文章全体が複雑になればなるほど生じやすくなります。この問題はLatexのように文章の構造と中身を分離して文章を作成すれば解決できます。

全体のインフラを担うGitHub

ここまで、研究の各フェーズで用いるツールを紹介してきましたが、全体に共通して活用できるのがGithubです。

これまで述べてきたように、各フェーズの殆どはGitでバージョン管理出来る形式で出力することが出来ます。

researchgithub3.png
GitHub上では履歴の確認ができるだけでなく、Issueという掲示板のような機能を利用することも出来ます。使い方は様々ですが、研究を進める上で苦労していること、ボスへの質問をまとめたり、進捗報告専用のIssueを立てて、毎回そのスレッドに進捗報告をまとめていくという使い方もできます。

更に、このシステムは一人でも十分に機能しますが、研究室全体で導入することに大きな意味があると思います。Slackに各人が行うGitHubへのコミットが通知されれば、誰がどういった作業をしているかが可視化されるからです。

GitHubという共有リポジトリに全員の研究活動がアップされていれば進捗の管理も容易で、自分自身がどこまで進めたか分かるだけでなく、全員がシステムに乗っていれば余計なコストを生じさせることなく進捗の報告ができます。

またSlackと連携していればコミット履歴が全て全員に見える形で全て残っているので、研究に苦労している人にSOSを出しやすいしどの部分で躓いているのか把握しやくなります。

何よりも重要なのは、次の代の学生が研究内容を引き継ぎやすくなることです。長く残っている学生がいない研究室では、研究内容の詳細を覚えているのがボスだけで、しかもはっきりとした記憶ではない、ということが多々あります。卒業(修士・博士)論文を見ただけでその人がやってきたこと全てを理解するのは難しい場合も多いでしょう。ですが、Githubに記録が残されていれば、過去の研究を把握することも、研究内容アップデートすることも容易になるはずです。

研究室全体でGitHubを使うのであればOrganizationアカウントを用いることで、privateなリポジトリを制限なく作成できるようになります。もしあなたがボスにGitHubの活用を提案する場合には以上の利点に加えて研究の守秘性を保つためにこのことにも言及すべきでしょう。

様々なツールと組み合わせて、研究にGitHubを活用しよう

以上、Github及び周辺ツールを活用するシステムについて提案しました。ソフトウェア開発・情報系の人たちのものと思われがちなGitHubですが、もっと汎用的な価値を持ったツールだと思います。実際に研究室単位でGitHubを導入することによって得られたメリットを述べている記事も散見されます。

もちろん紹介したツール群全てを一気に導入する必要はありません。手を出せるところから徐々に導入して、GitHubとの連携を試していけば、自然とバージョン管理やIssueによる進捗報告・管理をする”Research Driven by Github-System”の有用性に気付くことが出来るはずです。

ぜひ自分の研究を可視化してみてください。

7/26 10:10 誤植を訂正しました。