Jupyter NotebookDev Basics/Keyword

Jupyter Notebookは実行可能なプログラムコード、視覚化されたデータ、メモなどを含んだドキュメントを作成/共有可能なオープンソースのWebアプリ。

» 2017年03月07日 05時00分 公開
[かわさきしんじInsider.NET編集部]
「Dev Basics/Keyword」のインデックス

連載目次

 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ディレクトリに移動している)。

Jupyter Notebook Jupyter Notebook

 ここで画面右にある[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)


階乗を求める関数fact

 入力したコードはツールバーの実行ボタンをクリックすることで実行できる(正確には「コードの実行」ではなく「セルの実行」であり、後述するMarkdown記法で内容を記述したセルも「セルを実行」することで、プレーンテキストから表示が変わる)。ここでは関数を定義しているだけなので、特に出力はない。

入力したコードの実行 入力したコードの実行

 コード(セル)を実行すると、下にセルが新規に作成され、「In [1]」のように参照が可能なようインデックスも表示される(セルのインデックスは実行するたびに変化することに注意)。

 下のセルに「fact(5)」と入力してから、セルを実行し、今定義した関数を呼び出してみると、表示は次のように変わる。

5の階乗を計算 5の階乗を計算

 「Out [2]」は「In [x]」と同様に、後からそのセルの実行結果(出力)を参照するのに利用できる。

 このようにJupyter Notebookを使用すると、対話的にプログラムコードを記述/実行しながら、そのコードと実行結果を1つの「ノートブック」として保存できる。さらにMarkdown形式でメモやドキュメントを付加することも可能だ。下の画像は、上のコードにメモを追記してみたものだ。

Markdown形式でメモを追加 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]」の直下にグラフが描画されていることに注目)。

matplotlibを利用したグラフの描画 matplotlibを利用したグラフの描画

 ここでは、非常に簡単な例を示したが、Jupyter Notebookを使うことで、データ解析を含むさまざまなコードをドキュメントとして記述/実行し、その結果を他者と共有することがとても簡単に行えることが分かる(スライド表示も可能なことから、生きたコードをプレゼンテーションに利用するといった使い方もある)。また、本稿ではPythonを利用したが、さまざまな言語からでもこの機構は使用可能であるため、現在では広く使われるようになっている。


 Jupyter Notebookは、実行可能なプログラムコード、そこから生成される視覚化されたデータ、付随するメモなどを含んだドキュメントを作成/共有可能なオープンソースのWebアプリであり、さまざまな言語/さまざまな分野で広く利用されている。

参考資料


「Dev Basics/Keyword」のインデックス

Dev Basics/Keyword

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。