WindowsでPythonの開発環境構築 -AnacondaのインストールからAtomとJupyter Notebookの連携まで-

こんにちは。
Qiita初投稿でビビってます。間違い等があればバンバン指摘してください...！

# この記事について
この記事は以前[noteに投稿した記事](https://note.com/akihanari/n/n25a186e255cb?creator_urlname=akihanari)をまとめたものになります。
環境構築で詰まったところもあるので、備忘録として残しておこうと思います。

# 実現したいこと
Pythonの開発環境を構築する

- Anacondaのインストール
- Atomのインストール
- AtomとGit, GitHub, Jupyter Notebookを連携させる

# Anacondaについて
>Anaconda はデータサイエンス向けのPythonパッケージなどを提供するプラットフォームです。科学技術計算などを中心とした、多くのモジュールやツールのコンパイル済みバイナリファイルを提供しており、簡単にPythonを利用する環境を構築できます。
https://www.python.jp/install/anaconda/index.html

Anacondaをインストールすると、Python本体とは別に色々と便利なライブラリも一緒についてくるらしいです。初心者にはありがたいですね。

# Jupyter Notebookについて
![picture_pc_909390423e1bfe108efd47373863af17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289055/02c225a5-537a-ef9a-fbf5-359e6293a03e.png)
Jupyter Notebookは、プログラムの実行結果をこんな感じに↑記録しながら使えるツールです。セルごとに実行でき、グラフの描画もできるし、マークダウンで説明文を書けたりします。Webブラウザで動作します。

# Atomについて
Atomは、GitHubがオープンソースのテキストエディタです。
WindowsでもMacでも使えます。
![picture_pc_8cc85aaf93bac1e52a55622e54ce253f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289055/0c0bca17-b1ea-b79b-0602-ef059d28daa2.png)
そしてこのAtomに、Hydrogenというパッケージをインストールすると、↑のようにAtom上でJupyter Notebookが動いてくれます！
今回はこの状態を目指します。

# 環境
Windows10

# 手順
1. Python(Anaconda)のインストール
2. 仮想環境の作成
3. Gitのインストール
4. Jupyter Notebookの確認
5. Atomのインストール
6. Atomパッケージのインストール
7. Hydrogenのインストール
8. AtomとGit, GitHubの連携

順に進めていきましょう。

# 1. Python(Anaconda)のインストール
[Anaconda公式サイト](https://www.anaconda.com/distribution/)からAnacondaをインストールします。
バーションは**3系**（記事作成時点では3.7）を選択します。
あとはインストーラーの指示に従いインストール作業を進めていきます。

# 2. 仮想環境の作成
次に、仮想環境を作成します。

>Python を使って開発や実験を行うときは、用途に応じて専用の実行環境を作成し、切り替えて使用するのが一般的です。こういった、一時的に作成する実行環境を、「仮想環境」 と言います。
https://www.python.jp/install/windows/venv.html

今回は参考書とバージョンを合わせるため、バージョン3.6の仮想環境を構築しました。
（スタートメニューあたりにある）**Anaconda Prompt**を立ち上げ、バージョンを確認してみます。

```
>python
```
Python3.7.4でした。
pythonコマンドを打つと、インタラクティブ（対話）モードになるので、下記コマンドでその状態を抜けます。

```
>exit()
```

次のコマンドでバージョン3.6の仮想環境を作成します。

```
conda create -n py36 python=3.6 anaconda
```
こうすると新たに**Anaconda Prompt(py36)**(※以下、Anaconda Prompt(x))が作成されるので（スタートメニューあたりにあると思います）、同じように立ち上げます。
バージョンを確認してみましょう。

```
>python
```

ここではPython 3.6.10が確認できました。
以後、このAnaconda Prompt(x)を立ち上げるとこの仮想環境に入ることができます。

また、（参考書に合わせて）ライブラリ（※今回はscikit-learn）のバージョンも切り替えてみます。

仮想環境でのライブラリ一覧を確認

```
>conda list
```

scikit-learnのバージョンを確認

```
>conda list scikit-learn
```

→0.22.1だったので、0.19.1に切り替えます。

```
>conda install scikit-learn==0.19.1
```

再度バージョンを確認します

```
>conda list scikit-learn
```
→0.19.1と確認できました！

# 3. Gitのインストール
[Git公式サイト](https://gitforwindows.org/)からインストールします。

※Git, GitHubって何？という方へ...[こちらの記事](https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000)が分かりやすかったです。

インストールできたら、またスタートメニューの方に**GitBash**というアプリケーションが作成されているかと思います。これを立ち上げましょう。

ユーザー名とメールアドレス（任意のもの）を設定します。

```
$git config --global user.name “ユーザー名”
$git config --global user.email “メールアドレス"
```

※ちなみに、SSHの設定もしたみたのですが、Atom上だとうまく動いてくれなかったので、ここではHTTPS接続のみを扱います。

**GitHub**(持っていない方はアカウントを作成しましょう)に適当なリポジトリを作成、**”Clone with HTTPS"**でリモートリポジトリのアドレスをコピー、テストしてみます。

```
$git clone リモートリポジトリのアドレス
```

適当なファイルを作成します。

```
$touch test
```

pushします。

```
$git add test
$git commit -m "test"
$git push origin master
```

GitHubを確認し、作成したファイルが反映されていれば成功です。やったね！

# 4. Jupyter Notebookの確認
:snake:※疲れてきたら程よく休憩しましょう※:snake:

さて、Jupyter NotebookはAnacondaに付属されているので、インストール作業は**不要**です。

Atomと連携せず、普通にJupyterを使うときは、**Anaconda Prompt(x)**を立ち上げ、以下コマンドを実行します。

```
>jupyter notebook
```

Webブラウザが立ち上がり、Jupyter Notebookの画面が表示されたかと思います。

# 5. Atomのインストール
ここではAtomのインストールをします。
[Atom公式サイト](https://atom.io/)からインストールしましょう。

# 6. Atomパッケージのインストール
Atomのインストールが完了したら、次はAtomで必要なパッケージ（=便利機能）をインストールしていきます。
Atomの**File→Settings→Install**で、検索ボックスに必要なパッケージ名を入れて検索、インストールを行います。

とりあえず、最低限のおすすめはこちら。

- **japanese-menu** :メニューを日本語化できる
- **platformio-ide-terminal** :Atom上でterminalが使える
- **Hydrogen** :Jupyter Notebookとの連携

# 7. Hydrogenのインストール
**はい、こいつに泣かされました。**
Hydrogenをインストールしようとすると、以下のようなメッセージが表示されてインストールができませんでした。

```
Uncaught SyntaxError: Invalid or unexpected token
C:\Users\**\atom\app-1.43.0\resources\app\static\<embedded>:11
Show Stack Trace
The error was thrown from the Hydrogen package. 
This issue has already been reported.
```
[メッセージのリンク先](https://github.com/nteract/hydrogen/issues/1854)に飛んで確認してみると、どうやら最新バージョン（現時点で2.13.1）ではなく、古い2.8.0をインストールしてくれとのことだったので、**気を取り直して**コマンドプロンプトでHydrogen2.8.0をインストールします。

```
>apm install hydrogen@2.8.0
```

インストール済のパッケージを確認します

```
>apm list --installed —bare
Hydrogen@2.8.0
japanese-menu@1.15.0
platformio-ide-terminal@2.10.0
```

Hydrogenの2.8.0がインストールできました！

次に、**Anaconda Prompt(x)**で以下のコマンドを叩くと、

```
>jupyter kernelspec list —json
```

以下のように表示されると思うので、この**{**・・・**}**をまるっとコピーします。

```
{
 "kernelspecs": {
   "python3": {
     "resource_dir": “********",
     "spec": {
       "argv": [
         “********",
         "-m",
         "ipykernel_launcher",
         "-f",
         "{connection_file}"
       ],
       "env": {},
       "display_name": "Python 3",
       "language": "python",
       "interrupt_mode": "signal",
       "metadata": {}
     }
   }
 }
}
```

そして、Atomの**環境設定→パッケージ→Hydrogen→設定→Startup Code**に貼り付けます。

さらに、**環境設定→パッケージ→Hydrogen→設定→View Code**で、**Hydrogen / package.json**を開きます。


**コマンドプロンプト**で次のコマンドを叩きます。

```
>npm info @nteract/presentational-components
@nteract/presentational-components@3.3.4 …
.
.
.
```
Atomに戻ります。上で表示されたバージョンを**package.json**の**dependencies**の項目の一番下に追加します。

```
"@nteract/presentational-components”:”^3.3.4"
```
こんな感じです。

変更を保存したら、再び**コマンドプロンプト**に戻り次のコマンドを叩きます。

```
>apm install
```

```
Installing modules done
```
↑のように表示されればOK(たぶん...)

さて、これで動くはず！
Atomで、`Ctrl + Alt + Enter`を実行します！

**しかし　なにも　おこらなかった！**

→...一旦今開いているAtomを終了し、**Anaconda Prompt(x)からAtomを立ち上げます**。

```
>atom .
```


もう一度`Ctrl + Alt + Enter`を実行してみます。
![picture_pc_c8216b19d1a5fe35c61669336858f04d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289055/323e992a-8104-b19c-06f9-e876d0630871.png)
**→無事実行されました！**

どうやらAnaconda PromptからAtomを実行しないとHydrogenが動いてくれないようです...

# 8. AtomとGit, GitHubの連携
最後にAtomとGit,GitHubの連携をします。

まず、Atomで、**パッケージ→GitHub→Toggle Git Tab, Toggle GitHub Tab**でGitとGitHubのタブを表示させます（画面右側に出てきます）。

GitHubのタブ上で、トークンを入力するよう指示が表示されるので、リンク先のGitHubに移動します。
認証すると**トークン**が発行されます。そのトークンをコピーして、AtomのGitHubタブ上のボックスに貼り付けてログインすると、Atom上でGitやGitHubの連携ができるようになりました！

# Hydrogenについて
```
# In[]:
処理①

# In[]:
処理②
```

`# In[]:`〜`# In[]:`でセルを区切ることができます。
処理①のエリアにカーソルを持っていき、`Ctrl + Alt + Enter`でセル内の処理が実行されます。
また、上記のようにセルを分けなくても、実行したいコードを選択し`Ctrl + Enter`で実行できます。

他にもマークダウンで記述できたりするので、詳しい仕様は[Hydrogenの公式ドキュメント](https://nteract.gitbooks.io/hydrogen/)を参照してみてください。


また、`Ctrl + Shift + P`でプロンプトを表示させ、**Hydrogen: Export Notebook**を実行することでJupyter Notebook(**.ipynb**)形式でエクスポートすることもできます！

※以下、GitHubでの表示例
.pyファイルをエクスポートすると...
![picture_pc_315ed739123a9a7a0b3a2e01ffd1add3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289055/e295c94c-879b-5903-0848-7006506c4574.png)

こうなります！
![picture_pc_cf1ddc3f0fd82a37d4a63842ee6fba55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/289055/8b2b1ea0-491a-59c0-92c0-7a24bd6edcb3.png)
残念ながら実行結果までは出力してくれない仕様みたいです...
それでもかなり使い勝手がいい気がします...！

# 最後に
Hydrogen、とても便利そうなので使ってみたい！と思い手を出したのですがかなり手こずりました。環境構築って大変ですね...
また、AtomやPythonについての記事を書いていこうと思います。
ここまで読んでいただきありがとうございました！

# 参考リンク
[今日からはじめるGitHub 〜 初心者がGitをインストールして、プルリクできるようになるまでを解説](https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000)
[いまさらGit for Windowsのインストール、GitHubに接続してみた。](https://qiita.com/manabu-watanabe/items/ecf1b434baf305adaa00)
[https な git を使う](https://emoken.net/blog2/item_9864.html)
[Anaconda(Python3) ＋ Atom の Hydrogen を設定する方法](https://wcmemo.blog.fc2.com/blog-entry-1.html)
[Jupyternotebook-ModuleNotFoundについて](http://beast.main.jp/?p=2461)
[Atomエディタに新しく結合された Git / GitHub を使ってみた](https://blog.rokuzeudon.com/entry/atom-git)