【画像で説明】VSCodeをJupyter化する ~.pyファイルをセル単位で実行~

# やること
VSCode上で.pyファイルをJupyterみたいに表示させてみます。
↓VSCode上でこんな感じで表示させたい。
**※これはJupyterLabです。**
<img width="698" alt="スクリーンショット 2019-06-24 10.08.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/ea03f81d-e7ed-53c7-91b8-f7461c39fc12.png">



# なにがうれしいの？？
- VSCodeの機能をつかえる
- Jupyterのカスタマイズに時間をとられなくてすむ

追記：
※ 現在のVSCodeでは.ipynbファイルを認識できるようになっていますが、vscodevimが動かないのでvim記法を使われる方はこちらのやり方がおすすめです。

# 環境
- MacOS X 10.14.5 (Mojave)
- VSCode 1.35.1


# 前提
VSCodeのインストール



# 拡張機能のインストール
表示 > コマンドパレット > ``` 拡張 ```と打つ > ビュー：拡張機能を表示する
![スクリーンショット 2019-06-24 10.34.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/09742a06-bfb4-de19-7b9c-8d605692f729.png)

サイドバーの入力欄に``` python ``` と打つ > ```Python```を選択 > インストール
![スクリーンショット 2019-06-24 10.44.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/95d180a1-6a0e-fc6b-c863-bea717d0b5a9.png)

**以前は``` Jupyter ```という拡張機能をインストールしていましたが、``` Python ```に統合されたとのこと。**

>Deprecated This extension is no longer being maintained and all of its functionality has been (or will be) placed into the Microsoft Python extension.  Please download the Microsoft Python Extension instead.  

>このエクステンションはもう保守されておらず、そのすべての機能はMicrosoft Pythonエクステンションに組み込まれています（またはされる予定です）。 代わりにMicrosoft Python Extensionをダウンロードしてください。

https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter

# 実行方法
.pyファイルの先頭に ``` #%% ``` を入力します。
すると勝手にセル実行ボタンが出てきます。
**※``` #%% ```ごとにセルが区切られます**
![スクリーンショット 2019-06-24 11.01.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/5e142406-1716-2ec2-0907-f0ad3c703a84.png)

- Run Cell => そのセルのみ実行
- Run Above => そのセルより上までを実行（自身は含まない）
- Run Below => そのセルから下を実行（自身を含む）



# こんなかんじ

データフレーム
![スクリーンショット 2019-06-24 11.09.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/3ee84bc4-e18d-f7bb-697d-f30f3b68cd92.png)

プロットも
![スクリーンショット 2019-06-24 11.09.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/4059f488-b81d-1839-1f4a-4057a1630a63.png)

``` ! ``` を行頭にしてコマンド実行
![スクリーンショット 2019-06-24 11.10.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/d460a217-20cb-0834-65ad-4fd1b63b5a03.png)

Markdownは行頭に``` # ```
![スクリーンショット 2019-06-24 11.11.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/82b97a6e-53fa-bd1a-a5bc-40fe30e8e02e.png)

まとめて実行
![スクリーンショット 2019-06-24 11.15.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/5aa60c86-3ce9-bb48-ce8a-3481cb71ea63.png)

# .py => .ipynb へ変換
ここまでは.pyファイルを編集してきました。
jupyterで開きたいときは、.ipynbファイルを出力します。

実行結果タブの右上の保存ボタンで出力して下さい。
実行したセルのみ.ipynb出力されます。
**※.ipynbファイルの中身は.jsonの書式です**
![スクリーンショット 2019-06-24 11.34.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/afce9264-b741-6075-bebb-070fd94e77fc.png)


jupyterで開いてみます。
**※データフレームのセルとMarkdownのセルだけ出力し保存したものです。**

```bash
$ jupyter lab main.ipynb
```

<img width="1095" alt="スクリーンショット 2019-06-24 11.48.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/3f426713-2ae9-013d-13c7-fa2ec9230149.png">


# .ipynb => .py へ変換
すでにある.ipynbファイルをVSCodeで編集したいときは.pyファイルに変換して編集できます。

サイドバーの.ipynbファイルを右クリック > Import Jupyter Notebook 

![スクリーンショット 2019-06-24 11.57.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/5f5cd580-5853-2771-8a4b-d7eac7bfa0c9.png)

``` Untitle-~ ```というPythonフォーマットの新しいファイルが開かれるので、.py拡張子で保存して下さい。
![スクリーンショット 2019-06-24 12.08.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/2df97cd5-d433-72f9-aca2-db5b9ede0af7.png)

# はまりどころ
実行結果にパッケージエラーが出ている場合は、インタープリタの設定に注意してみてください。
anacondaやvenvやpyenvなど複数環境がある場合は、必要なパッケージがインストールされている環境を選択します。
![スクリーンショット 2019-06-24 12.50.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/090190c4-af97-ae1b-3654-c2a794f993ea.png)

こんなミス、私しかしないと思いますが念の為…。

# Dockerコンテナの中で使いたい！

記事書きましたので、もしよろしければ。
=> [DockerでAnaconda環境をつくり、コンテナの中でVSCodeを使う](https://qiita.com/komiya_____/items/96c14485eb035701e218)

# 参照
ありがとうございました！

- https://qiita.com/suudon0014/items/dbf0237d90922275af1c
- https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter

# まとめ
変換が少し手間ですが、VSCodeを使えるのであれば余裕で許容ではないでしょうか。
Microsoftさんには、ただただ感謝です。
IEに泣かされた過去は忘れました:relaxed: