Visual Studio Code(以下、vscode)ではDockerでPythonやVue.jsの開発環境を構築したり、あるいはMarkdownで書いたドキュメントを配布用にPDF変換したりと、今までいろいろやってきました。今度はJupyter Notebookを動かします。いやー、vscodeってホントに多彩ですね。
なお、今回においてはDockerを利用せず、単純にローカル環境でJupyterを使用します。
2019年時点ではこの記事の仕様でしたが、現在(2020年後半)では完全にネイティブでnotebookに対応しています。なので、#%%
という記述は現在では完全に不要です。よって、この記事の存在意義は現時点で皆無なのですが、過去の遺産ということでそのまま残しておきます。
Jupyter Notebook (なお、読み方は「ジュパイター・ノートブック」、または「ジュピター・ノートブック」。自分は「ジュピター」って言ってますが、どっちが一般的なんですかね?) とは、ブラウザ上で実行するデータ分析作業のためのツールです。特徴的なのは、実行結果を記録しながらプログラミングができる点です。ここでブラウザから実行できます。
プログラムそのものを記述しつつ、Markdownを利用して各種テキストや図表も同時に書き込んでいくことが可能です。つまり、プログラムのソースとその実行結果が、メモを含めて明確に紐づいた状態で確認できます。そのため、作業内容の振り返りに非常に便利ですし、複数人で作業を行う場合の共有にも有用です。また、Jupyterは*.ipynb
形式のファイルで保存しますが、ソースコード部分を*.py
のPythonコードとして出力することも可能ですし、実行結果をPDFやHTML形式で出力できるため、Jupyterの実行環境がなくても内容を共有できます。
そんなJupyterをvscodeで使っちゃえ、というのが今回の趣旨です。
Anacondaをインストールしている場合、基本的にはJupyterも一緒にインストールされているはずです。なお、Anacondaのインストールは、オフィシャルページからプラットフォームに合ったインストーラーをダウンロードして実行します。インストール後に下記のコマンドを実行すると、conda
コマンドにてインストールされているリストが出力されます。表示されたリストの中にjupyter
があればインストール済みであることがわかります。
conda list
ちなみに、Anacondaを導入しないでJupyterを利用するにはpip
を利用します。下記のコマンドを実行するだけです。
pip install jupyter
vscodeでJupyterを利用するには、Pythonの拡張機能をインストールする必要があります。
拡張機能をインストールするには、vscodeの左側にあるメニュー中から拡張機能のアイコン(下画像の赤枠内)をクリックします。
検索窓に「python」と入力します。検索結果のうち、「Python」を選択し、インストールします。なお、下画像ではすでにインストール済みのため、歯車のアイコンが表示されています。
他にも導入すると便利な拡張機能はありますが、今回は割愛します。
まず任意のフォルダを作成します。今回はworkdir
としましたが、フォルダ名はなんでもいいです。次にvscodeで先ほど作成したフォルダを開きます。フォルダを開いたら、適当にファイルを作成します。ただし、この際に作成するファイルの拡張子は*.py
です。先ほどJupyterでは*.ipynb
形式を用いると言いましたが、vscodeで実行する場合はPythonの拡張子でファイルを作成します。
「だけど、それじゃあフツーのPythonコードを見分けがつかないじゃん!」と思ったあなたは正しい。つまりファイルの拡張子ではなく、ファイルの中身で見分けるわけです。
ファイルを*.py
形式で作成したら、下記のコードを入力してください。なお、「その2」部分はCSVファイルがないとコケちゃうので、適当なCSVファイルを作っておくかコードを削除してください。
#%%
## その1
import numpy as np
x = np.arange(10)
print(x)
#%%
## その2
import pandas as pd
data = pd.read_csv("C:\\app\\hoge.csv", encoding="cp932")
data.head()
#%%
## その3
### sin plot
import matplotlib.pyplot as pl
import matplotlib as mp
import numpy as np
x = np.linspace(0, 30, 100)
pl.plot(x, np.sin(x))
pl.show()
### cos plot
y = np.linspace(-np.pi, np.pi)
pl.xlim(-np.pi, np.pi)
pl.ylim(-1, 1)
pl.plot(y, np.cos(y))
pl.show()
### tan plot
z = np.linspace(-np.pi, np.pi)
pl.xlim(-np.pi, np.pi)
pl.ylim(-np.pi, np.pi)
pl.axhline(0, ls='-', c='r', lw=0.5)
pl.axvline(0, ls='-', c='r', lw=0.5)
pl.plot(z, np.tan(z))
pl.show()
何か見慣れない#%%
という文字列が含まれていますが、これが普通のPythonコードとJupyterを見分けるコードです。これが「セル」という、Jupyter Notebookにおける区切りを表しています。これで区切られた領域が1つの実行単位です。これをvscode上で記述すると、「Run cell」とか表示されます。このボタンを押下するとセル単位で実行するか、別のセルも一緒くたに実行するかが選べます。
Run cell
押下したセルのみ実行します。Shift + Enter
を押下しても同様の結果が得られます。
Run Above
押下したセルの直前セルまで実行します。
Run Below
押下したセルから下のセルをすべて実行します。
ちなみに、下画像で#%%
の部分なんかに赤い波線が表示されていますが、これはflake8のlintに引っかかっているためです。ファイルの拡張子が*.py
であるため、flake8が反応しちゃってるようです。「import
はモジュールの冒頭に記述しろよぉ」とか言ってるわけですけど、ごめんね、これ*.py
ファイルだけどJupyterなのよ_:(´ཀ`」 ∠):_
実行すると、右側に新しいタブで実行結果が表示されます。
なお、基本的にAnacondaをインストールしている場合は上記のコードがそのまま動作すると思います。が、Jupyterをpip
でインストールした場合は、必要なパッケージを別途pip install
してください。
基本的にJupyterはブラウザ上で気軽にPythonを記述できる便利な環境でしたが、vscodeと組み合わせることでコードの補完機能を利用でき、より一層気軽かつ便利にコードを記述できます。
ますますvscode依存が深まりそうです_:(´ཀ`」 ∠):_