Jupyter Notebook:Dev Basics/Keyword
Jupyter Notebookは実行可能なプログラムコード、視覚化されたデータ、メモなどを含んだドキュメントを作成/共有可能なオープンソースのWebアプリ。
Jupyter Notebookは、実行可能なプログラムコードや、そこから生成される視覚化されたデータ、付随するメモなどを含んだドキュメントを作成/共有可能なオープンソースのWebアプリだ。データサイエンスなど、さまざまな分野で便利に使われている。
Jupyter Notebook
Jupyter NotebookはもともとはIPython Notebookという名前のPythonを処理系とするWebアプリだったが、現在ではJulia、Python、R、Scalaなど、40を越えるプログラミング言語を利用できるようになり、名称も現在のものへと変更されている(「Jupyter」という名称は「Julia」「Python」「R」に由来するといわれている)。
Jupyter Notebookを試すには、Webブラウザで「Try Jupyter!」ページにアクセスするのが一番簡単だ。ローカル環境にインストールすることも可能だが、その場合にはAnacondaと呼ばれるPythonディストリビューションを使用することが推奨されている(Jupyter NotebookのインストールにはPythonが必須であり、AnacondaはJupyter Notebookを同梱しているPythonのディストリビューション)。ローカル環境へのインストールについてはJupyterの「Install」ページなどを参照されたい。
以下ではJupyter NotebookでPython 3を利用したノートブックを作成しながら、その特徴を幾つか紹介していく(Python以外の言語を利用する場合には、個々にセットアップを行う必要がある)。
ノートブックとセル
Jupyter Notebookの「Try Jupyter!」ページをWebブラウザで開くか、あるいはローカル環境にインストールしたJupyter Notebookを起動すると次のようなページが表示される(ここではローカル環境にインストールしたJupyter Notebookを起動して、work/devbasics/jupyterディレクトリに移動している)。
ここで画面右にある[New]ドロップダウンを選択して、表示されたメニューから[Python 3]を選択すると、Python 3を利用した「ノートブック」が新規に作成される。ここでいう「ノートブック」とは、Python 3のコードやその実行結果、Markdownで記述したコードに関する説明やメモなどを含んだドキュメント一式のこと。
ノートブックを作成すると、画面は次のようになる。
けい線で囲まれた領域のことを「セル」と呼ぶ。セルにはMarkdown形式のドキュメントやコード(ここではPythonのコード)などを記述できる。現在選択しているセルの内容が何かは画面上部にあるツールバーのドロップダウンで示される(上の画像では[Code]となっている)。セル左端にある「In [ ]」は後からこのセルを参照するために使用できる。
ここでは以下のPythonコードを入力してみよう。
def fact(n, result=1):
if n == 0:
return result
return fact(n - 1, n * result)
入力したコードはツールバーの実行ボタンをクリックすることで実行できる(正確には「コードの実行」ではなく「セルの実行」であり、後述するMarkdown記法で内容を記述したセルも「セルを実行」することで、プレーンテキストから表示が変わる)。ここでは関数を定義しているだけなので、特に出力はない。
コード(セル)を実行すると、下にセルが新規に作成され、「In [1]」のように参照が可能なようインデックスも表示される(セルのインデックスは実行するたびに変化することに注意)。
下のセルに「fact(5)」と入力してから、セルを実行し、今定義した関数を呼び出してみると、表示は次のように変わる。
「Out [2]」は「In [x]」と同様に、後からそのセルの実行結果(出力)を参照するのに利用できる。
このようにJupyter Notebookを使用すると、対話的にプログラムコードを記述/実行しながら、そのコードと実行結果を1つの「ノートブック」として保存できる。さらにMarkdown形式でメモやドキュメントを付加することも可能だ。下の画像は、上のコードにメモを追記してみたものだ。
ツールバーにあるセル内容を示すドロップダウンの内容が[Markdown]になっていることに注意されたい。また、セルにはプレーンテキストとしてメモの内容が入力されている。ここでメニューバーから[Cell]−[Run All]を選択すると、画面は次のようになる。
ご覧の通り、プレーンテキストで入力していた部分が対応するHTMLドキュメントへと変換されて表示されている(また、In/Outの数値も変更されていることが分かる)。なお、Markdownセルの内容を再編集する場合には、そのセルをダブルクリックすればよい。
ノートブックの保存と共有
ツールバーの[Save and Checkpoint]ボタンをクリックすると、これまでに編集してきたノートブックの内容を保存できる。保存されたノートブックの拡張子は「ipynb」となっており、この「.ipynb」ファイルをダウンロードしてからGitHubなどで共有することで、自分が保存したノートブックの内容を他の環境で再現/編集/実行できる。このため、自分が行った作業について、実際に動作するコードとその説明などをノートブックにまとめて、他のユーザーにその内容を検証してもらったり、意見をもらったりという使い方も可能だ。
グラフ描画
Jupyter Notebook(およびその前身となるIPython Notebook)が通常のPython対話環境に対して非常に強力な点の1つは、データの可視化をウィンドウ内で行えることにある。最後に簡単な例を以下に示しておこう。
%matplotlib inline
from random import randint
from matplotlib import pyplot as plt
x = list(range(10))
y = [randint(0, 20) for item in x]
plt.plot(x, y)
詳細な説明は割愛するが、先頭の「%matplotlib inline」行は「マジックコマンド」と呼ばれるもので、ここでは「inline」バックエンドを使用して、グラフを描画するように指定している(inlineバックエンドとはJupyter Notebookのフロントエンドのことで、簡単にはグラフ描画コマンドを実行した結果の直下にグラフが描画されるということだ)。
その下では、乱数を生成する関数randint、グラフ描画を行うためのmatplotlib.pyblotモジュールをインポートしている。その後、乱数を用いて10個の値を生成して、それをグラフとして描画している。
実際に実行した結果を以下に示す(「Out [1]」の直下にグラフが描画されていることに注目)。
ここでは、非常に簡単な例を示したが、Jupyter Notebookを使うことで、データ解析を含むさまざまなコードをドキュメントとして記述/実行し、その結果を他者と共有することがとても簡単に行えることが分かる(スライド表示も可能なことから、生きたコードをプレゼンテーションに利用するといった使い方もある)。また、本稿ではPythonを利用したが、さまざまな言語からでもこの機構は使用可能であるため、現在では広く使われるようになっている。
Jupyter Notebookは、実行可能なプログラムコード、そこから生成される視覚化されたデータ、付随するメモなどを含んだドキュメントを作成/共有可能なオープンソースのWebアプリであり、さまざまな言語/さまざまな分野で広く利用されている。
参考資料
- Project Jupyter: Jupyter Notebookの公式サイト(英語)
- Jupyter Documentation: Jupyter Notebookのドキュメントページ(英語)
- IPython: Jupyter NotebookのPythonカーネルとして利用されているIPythonの公式サイト(英語)
- IPython Documentation: IPythonのドキュメントページ(英語)
- Jupyter/IPython Notebook Quick Start Guide: 初心者向けガイド(英語)
Copyright© Digital Advantage Corp. All Rights Reserved.