研究プロジェクトの管理：フォルダ構成とGitHubのミニマムな利用

みなさん，研究プロジェクトをどう管理していますか？　データ解析のコードをどう管理していますか？

わたしは生物統計家として，さまざまな研究プロジェクトに関わらせていただいてます．
以前はプロジェクトごとに，その場その場でドキュメントやコードを管理していて，分からなくなることもよくありました．このような経験から，少しずつ**プロジェクト管理の標準化**を図ってきました．

最近落ち着いた気もするので，まとめようと思います．（あくまで，医学研究の，かつデータ解析に特化した管理方法です）

# プロジェクトフォルダ構成
研究プロジェクトごとに，フォルダの構成がバラバラだと，後で振り返った時に昔の自分を罵りたくなりますね．そうならないために，今の私のフォルダは次のようになっています．
![スクリーンショット 2020-10-31 14.53.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/44c77a26-1b97-4b1d-e1be-d30993b40f31.png)

## Documentフォルダ
Projectに関連する資料はここに格納します．論文関係ならば「papers」というようなサブフォルダを作っても良いと思います．

## Dataフォルダ
Original_dataというサブフォルダを作るのが最重要です．**入手したオリジナルデータは絶対変更してはいけません．**
データを変更する場合は，コピーした上で，Dataフォルダ直下に格納します．またデータの名前は，解析することも考えて半角英数を推奨します．

## R Project File
この記事では，データ解析を統計解析ソフトRを用いて話を進めます．Rを使って解析するときは，RStudioの機能であるR projectを必ず使いましょう．これにより，RStudio上でも，プロジェクトごとに解析を管理することができます．

### R Projectの導入
R projectは，File→New Project
![スクリーンショット 2020-10-31 15.02.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/1ee62156-fcef-af0c-d342-a2f537ca25a8.png)

Existing Directoryを選択し，先ほど作成したプロジェクトフォルダ直下のパスを指定します．そうすることで，.Rprojファイルがプロジェクトフォルダ直下に作られます．
![スクリーンショット 2020-10-31 15.03.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/4912f8cd-15a8-feca-f3ed-7da987094d87.png)

## Scriptフォルダ
解析用のコードはここに格納します．自作の関数は，Fuctionsというサブフォルダに入れると良いと思います．

Scriptフォルダ内のRプログラムで，Dataフォルダ内にあるデータにアクセスしたいときは，次のコードを書きます．例はcsvファイルの読み込みです．読み込みたいファイルに合わせ，適当に変更してください．

```r:import_data.R
imported_data <- read_csv("Data/xxxx.csv")
```

Rmarkdownファイルで，Dataフォルダ内にあるデータにアクセスする場合は，同じDataフォルダであってもコードが異なります．[^1]

```r:import_data_using_markdown.Rmd
imported_data <- read_csv("../Data/xxxx.csv")
```

## Outputフォルダ
Rで作成した図は，Outputフォルダに出力すると，Scriptフォルダ内が乱雑にならないと思います．

こんな感じで研究プロジェクトを管理していきます．

# コードの管理：GitHubとの連携
ここからRコードを管理する方法を説明します．やっぱりGit使えるとかっこいいですよね．さらにGitHubを使うと草も生えていきますし，それがモチベーションにつながるかもしれません．
（スクショ取ったけれども，ハロウィーン仕様だし，大して草生えてなくて草生えました）
![スクリーンショット 2020-10-31 15.15.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/795ed87b-a615-4975-0492-370867427ec9.png)
GitやGitHubの導入は，他の記事をご参考ください．わかりやすい記事はたくさんあると思います．

RStudioとGitHubとの素晴らしい[連携記事](https://qiita.com/uri/items/6b94609f156173ed43ed)もあります．しかし私は使いこなすことができませんでした．．．

* シンプルなことしかできません．
* たくさん覚えられません．
* コードを共有することはあっても，基本的にコードを書くのは一人です．

こんな私でもできるミニマムな方法は次の通りです．

### 1. Scriptフォルダに，ターミナル等で移動

```terminal
cd /Users/xxx/yyy/Script
```

### 2. GitHubでリポジトリを作成
Repositoris→Newをクリック!
![スクリーンショット 2020-10-31 15.33.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/195d9ba9-7552-b60d-c755-7c1d4bf1c823.png)
適当にRepository nameをつけて，Create repositoryをクリック！　コードのアクセス権をPublicにするかPrivateにするか注意してください．
![スクリーンショット 2020-10-31 15.34.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/8856f506-7202-6f3f-90f3-c3c5304f10e9.png)

### 3. ScriptフォルダとGitHubを連携させる
さきほどのターミナルで

```terminal
git init
```

### 4. アップするコードを選ぶ

```terminal
git add demo.R
```

### 5. 適当にコメントします
後で振り返った時に，何か分かるようにコメントします．

```terminal
git commit -m "適当にコメント"
```

### 6. おまじない
よくわからないけど，おまじないします．[^2]

```terminal
git branch -M main
```

### 7. 一時的な置き場所にコードをプッシュ

```terminal
git remote add origin https://github.com/ID/demo.git
```
これは，2の作業を終えた後に，GitHubで出してくれるページに書いてあります．6番目です．
![スクリーンショット 2020-10-31 15.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/c3c5c1cf-d618-b362-b334-3ce44a4a866b.png)

### 8. 最後にGitHubにプッシュ

```terminal
git push -u origin main
```

## 2回目以降は？
**4から8を繰り返します．**
そう！結局は，7であげたスクショのコードです！正直なところ何をやっているかよく分からないところもありますが，結果的にコードをGitHubで管理できています！！[^2]
![スクリーンショット 2020-10-31 15.47.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667119/4ac3aa4c-4cfd-beee-41fe-081d13be0f4d.png)

# 最後に
私なりのミニマムな研究プロジェクトの管理方法を書いてみました．
特にGitHubの連携なんか何も工夫していません．
でもGitHub使ってコードを管理したいけど，どうしたらいいか分からない人にとっては，こういうことも分からないんです．
この記事がそのような方々の背中を押すことができれば嬉しいです．


[^1]: なぜだかわかりません．誰か教えてください
[^2]: 強い方々，雑だと怒らないでください