VScode + Git-bash + python + R でAnova環境構築

# Introdaction
**目的：VScode + Git-bash + python + R (with anova君)の連携で分散分析を行う**

### [背景]
- MATLABでデータ処理・統計解析をおこなっている
　- バージョン管理環境：git + git hub + Git-bash + VScode[^matlabGit]
　- ある程度の統計解析はMATLAB上で十分可能
- ANOVAに関しては，matlab関数の使い勝手が良くない
　- 完全無作為化要因計画や分割プロット法は出来そう
　- 乱塊要因計画のやり方がよく分からない
　- referenceページを見ても煩雑で分かりにくい

### [他にANOVAが可能な環境]
1.　R + anova君[[ref. 1](#references)][^anovakun]
2.　SPSS
3.　Python

### [各アプリケーションの長所/短所]
- RとSPSSは鉄板だが別途立ち上げが面倒。pythonならVScodeで使える
- SPSSのGUIは個人的に使いづらい（乱塊要因計画のリファレンスある？）
- Rは解析用に開発されたのでsmoothに解析可能だが，pythonの場合はちょっとだけ面倒な処理が必要

### [解決方法]
- ANOVAをおこなうことを考えると，個人的にRとANOVA君が理想的のようだ
- じゃあVScode＋Git-bashの環境で，pythonとRを連携させて使えれば幸せになれる

※ 本記事は個人的覚書としての色が強く，あくまでもリファレンスや，自分の環境でつまづいた点についてをまとめている形式である

※　使ってみたら図の調整や出力の観点で微妙に思い通りに行かないことがあって快適な環境とは言い難く，もっといい方法があるのかもしれない

# 環境
もともとの環境
・Host OS: windows server 2019 (Active directory参加）
・VScode：ver. 1.49.2
・Git: ver. 2.28.0.windows.1

追加内容
・cond 4.8.5
・python 3.8.5
・R ver. 4.0.2

# Rのinstall
R の公式Webサイト [The R Project for Statistical Computing](https://www.r-project.org/)からインストーラ落とせばよい
特にこれといって特筆すべきことはなく，普通にインスコすればよい

Rに関しては[ref. 2](#references)の記事が良くまとまっているかと思うので，必要に応じて参照されたし

# pythonのinstall
anaconda使う。開発環境を作りたいわけでなく，あくまで解析なのでバージョンとか諸々ややこいことは考えず，最新版を全部入れ。windows版anacondaは[python japanのページ](https://www.python.jp/install/anaconda/windows/install.html)から拾ってこれる

インストールに関しては，[[ref. 3-4](#references)]の記事に従えば問題なく進む。今回は，「Add Anaconda3 to my PATH environment variable」はオフでインスコ。あとで自分でいじっていくことになる


# VScodeとGit-bashの連携
既に構築済みの環境だったけれど，覚書として記述しておく
`ctl`+`shift`+`P`でコマンドパレットを開き，`Terminal: Select Default Shell`と打ち込むとデフォルトを選べる。なお，シェルをスイッチしたい場合は拡張機能のshell launcherをインストールし，VScodeのsettings.jsonに

```vscode:settings.json
{
    "python.pythonPath": "C:\\Users\\hoge\\Anaconda3\\envs\\py38s\\python.exe"
    "shellLauncher.shells.windows": [
        {
            "shell": "C:\\Windows\\System32\\cmd.exe",
            "label": "cmd"
        },
        {
            "shell": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
            "label": "PowerShell"
        },
        {
            "shell": "C:\\Users\\hoge\\AppData\\Local\\Programs\\Git\\bin\\bash.exe",
            "label": "Git bash"
        }
      ]
}
```

と記入しておく
`python.pythonPath`はVScodeにpythonのパスを通すための記述
`ctl`+`shift`+`P`でコマンドパレットを開き，`>Shell Launcher: Launch`と打つと上で記述しておいたターミナルの候補が出てくるため，その中から使いたいものを選ぶことでスイッチができる。exeファイルの場所は各自，自分の環境に直すこと

# Git-bashとpythonの連携
この記事[[ref. 5](#references)]に従うだけ。

ホームディレクトリにprofileファイル（.bashrc）を置いてGit Bashを起動する。ホームディレクトリは，``echo $HOME``で確認できる。

```vim:~/.bashrc
. /c/Users/hoge/Anaconda3/etc/profile.d/conda.sh
alias python='winpty python.exe'
```
activate.batへのパスが通っていないために自分でactivateする必要がある。ただ，ここで``conda activate``と追記しておけば，Git-bash起動時にbaseをactivateしてくれる。何か特定の仮想環境を起動時にactivateしたければ，ここで仮想環境を指定しても良いかもしれない。

# 仮想環境の作成
ここで，仮想環境を作成しておく。

```bash:Git-bash
$ conda create -n 環境名 base
または
$ conda create -n 環境名 python=バージョン
```
でbaseをコピーするか，特定のバージョンで仮想環境を作れる。今回も適当な環境を作成してacrivateし，そこにパッケージを入れていく。



# pythonとRの連携
基本的にはこの記事[[ref. 6](#references)]に従えばok
``pyper``というパッケージを入れる。condaでは入れられないようなので，``pip install pyper``でインスコする。

インストールがうまくいっていれば，記事内のサンプルが回るはず（Rの方で日本語設定していないと図が吐き出されないことに注意。Rスクリプト内での軸などの文字を英語に変更しても良い）。ただ，このままだと独自で入れたパッケージがどこにあるのか，pathが通っていないために``ModuleNotFoundError``が出てしまう。



パスに関してはこのあたり[[ref. 7-9](#references)]を参照して解決できる。
要は環境変数にpathを通せばいいだけ。win serverで管理者権限を持たないユーザの場合は，``コンパネ > ユーザアカウント > 環境変数の変更``でユーザ環境変数をいじれる。ここで，``PYTHONPATH``を作成し，パッケージをインストールしたpython仮想環境のpathを設定しておけば良い。


# Anova君を使う
ANOVA君をインストールしておけばもうそれでok。インストールや使い方は，ここ[[ref. 11-12](#references)]を参照すればできるはず。


# まとめ
結局は全てパス環境整えてあげれば上手くいく
ただし使い勝手の点ではまだ改善の余地があるかも
（上記のセットアップでは，Rstudioを使った方が結局はストレスが少ないかも）



# References
1. ANOVA君 - 井関龍太のページ < http://riseki.php.xdomain.jp/index.php?ANOVA%E5%90%9B >
2. R言語インストール(2020年 Windows) -Qiita < https://qiita.com/FukuharaYohei/items/8e0ddd0af11132031355 >
3. Anaconda で Python 環境をインストールする -Qiita < https://qiita.com/t2y/items/2a3eb58103e85d8064b6 >
4. AnacondaをWindowsにインストールする -Qiita < https://qiita.com/j_konosuke/items/80e5b583c51b745c3e7f >
5. Git BashでAnaconda, Pythonインタプリタを使う -Qiita　< https://qiita.com/kimisyo/items/04ed3a564001b00eb141 >
6. Python と R で連携する -Qiita < https://qiita.com/ynakayama/items/f84dc659f1337d71dd9e >
7. pythonでImportError: No module named ・・・が出たときの確認方法と対処 < https://web.plus-idea.net/2017/05/python-import-error-no-module-name/ >
8. python初心者がimportエラー(ModuleNotFoundError)で詰みかけた話 -Qiita < https://qiita.com/kakari8888/items/86d9c255204b063c87ee >
9. Pythonでimportの対象ディレクトリのパスを確認・追加（sys.pathなど）
< https://note.nkmk.me/python-import-module-search-path/ >
10. VS Code で Anaconda の Python デバッグ 環境構築（Visual Studio Code） < https://blog.beachside.dev/entry/2017/12/25/000000 >
11. PythonからANOVA君を使う -Qiita < https://qiita.com/issakuss/items/c0afacafbff304f5fd7a >
12. ANOVA君/ANOVA君の使い方 < http://riseki.php.xdomain.jp/index.php?ANOVA君%2FANOVA君の使い方 >


[^anovakun]: anova君なら実験計画に合わせて柔軟に解析ができる。Rは可視化に優れているほか，そもそも解析用に最適化されているのでpythonよりセットアップも楽。
[^matlabGit]: matlabでgitコマンド使えるけど，matlabだとコミット時のコメントを複数行いずらいし，VScodeなら拡張機能のGitGraphがきれいでわかりやすい。