2018年6月12日火曜日

VS CodeでJupyter Notebookを使うために必要なもの

 Jupyter Notebookはもともとは「実行可能なコードとそれに関連するテキストをひとまとめにしたドキュメント」をWebブラウザ上で作成したり共有したりすることを可能とするWebアプリだ。ドキュメントはセルと呼ばれる部分に分割され、そこにMarkdown形式でメモやコメントを記述したり、プログラムコードを記述したりしていくことで、ドキュメントとコードを1つの「ノートブック」にまとめて記述できるものだ。セルに記述したコードは実際に実行が可能であり、コードの編集と実行、そのドキュメントの編集をWebブラウザ上で効率よく行える(ことや、それを他者と簡単に共有でき、知見を広めるコストが大きく低下する)のが大きな特徴だ。機械学習やデータサイエンスの分野でよく使われているが、本稿ではそこまでは扱わずに、VS CodeJupyterするための基礎について見ていこう。

 VS CodePython拡張機能とJupyter拡張機能を利用すると、Jupyter Notebook(のサーバ機能)がVS Codeに統合される。これにより、Pythonモジュール(.pyファイル)の内容をセルに分割して、1つのセルだけを実行し、その結果を見ながら、コードに微修正を加えて再実行してみるといったことが手軽に行える(コードとドキュメントが一体化した「ノートブック」というよりは、コード記述と実行を簡便に行えるようになるというのが、Jupyter拡張機能がもたらす大きなメリットと筆者は感じている)。

 VS CodeJupyterするには以下が必要になる。

  • Python処理系
  • Jupyter(と、コードの実行に必要となるその他のパッケージ)
  • Python拡張機能
  • Jupyter拡張機能

 Jupyterの公式サイトでは、「Anacondaディストリビューションを利用してPythonとJupyterをインストールすることを強く推奨」している。そこで今回は、筆者の環境に既にインストール済みのAnacondaのバージョン5.1.0をベースに作成したPython環境を例としよう(最新バージョンは5.2)。また、Python拡張機能は既にインストール済みであるものとする。ここでは、手抜きをして、Anaconda Navigatorから「jupyterenv_anaconda」という環境を作成している。

 

その後、VS Codeでコマンドパレットから[Python: インタープリターを選択]コマンドを実行して、作成した環境をPython環境として指定してやる。

 

 Anaconda以外のPython処理系(をベースとした仮想環境など)にJupyterをインストールするのであれば、Jupyterの公式サイトにもあるようにpipコマンドでJupyterおよび必要となるパッケージをインストールする。

 

Jupyter拡張機能はサイドバーの[拡張機能]ビューで「jupyter」を検索して、最初に出てくるDon Jayamanne氏が作成したものをインストールすればオーケーだ。

 

 Jupyterを利用する環境のセットアップとJupyter拡張機能のインストール、必要となるその他のパッケージやモジュールのインストールが終われば、VS CodeJupyterを利用する準備は完了だ(例えば、以下の例ではnumpyパッケージおよびmatplotlibパッケージが必要になる)。

 

サンプルコードを実行してみよう

 準備が整ったら、Jupyter拡張機能の説明ページにあるサンプルコードを実行してみよう。ここではjupytertestディレクトリを作り、その下にtest.pyファイルを作成して、そこにこのコードを記述している。

#%%
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

x = np.linspace(0, 20, 100)
plt.plot(x, np.sin(x))
plt.show()

サンプルコード


 先頭行の「#%%」は、Jupyter Notebookにおける「セル」の区切りを示すもので、これで区切られた領域が1つの実行単位となる。そのため、この行の上には[Run cell]というリンクが表示されている。

 
Run cell]リンクをクリックすると、そのセルの内容が実行される


 また、以下のように「#%%」で区切ってprint関数呼び出しを記述すると、これは2つのセルを含んだコードとなる。

 
2つのセルで構成されるコード

 

0 件のコメント:

コメントを投稿