目次
Jupyter Notebook は分析者と様々な機能を結びつけるハブ的な存在
機械学習を行う場合、クイックに実行できるAmazon Machine Learning のようなクラウドサービス、色々な予測モデルを勝手に試してくれるDataRobotのような高性能サービスがありますが、これらのサポート外の分析方法や Deep Learning では、どうしてもPython言語で分析処理を書かなくてはいけない場面が出てくるかもしれません。それは、プログラミングを殆どしない分析者にとっては、非常に高い壁であり、精神的に躊躇してしまいます。そんな壁を少しでも低くしてくれるのが「Jupyter Notebook」というGUIベースのPython実行環境です。今回は Jupyter Notebook が分析者の作業を軽減してくれるポイントについてご説明します。
※本編は Jupyter Notebook についての環境構築方法や使い方に対して説明はありません。
Jupyter Notebook によってPythonプログラミングに集中できる
最初にお伝えしますが、Jupyter Notebook を使うことでコードを自動生成したり、途中までコードを書くと入力候補を出してくれるサジェスト機能などが行えることはありません。Jupyter Notebook によっても得られる効果とは、OSなどの技術要素を意識せずにPythonプログラミングに集中できるシンプルで見やすい環境を手に入れることができます。
プログラミングの何が大変?
Python言語コードはシンプルで他言語に比べて分かりやすく、また、少ないコーディング量で処理が行えるように設計されているため、プログラミングを全くやった事がなくても、ちょっとした処理は作れます。しかし、プログラムを実行するためには以下のような手順を繰り返す必要があり、機械学習のモデル作成で試行錯誤を行う場合は煩わしい作業になってしまいます。
- Pythonファイルを開く
- コードを変更する
- Pythonファイルを保存
- OSのコンソール画面でPythonファイルを実行
- 実行結果を確認して 1. に戻る
対話的に実行・確認できる
Jupyter Notebook を使えば上記のようなプログラム実行の煩わしさから解放されます。Jupyter Notebook では開発作業領域が「ノートブック」と呼ばれる1つの画面で完結できます。ノートブックでは下記のようにセル(プログラムが記入する枠)の下に実行結果が表示されます。この機能によって、少しずつ実行結果を確認しながらプログラミングができます。また、実行結果をセル単位で記憶しているため、途中からやり直すことも可能です。
そして、作成したコードファイルは、Jupyter Notebook の形式(.ipynb)で保存されますので、プログラミングを再開する時も非常に便利です。(Pythonファイル形式、PDF形式、HTML形式などへの変換も可能)
基本的な操作はショートカットキーで行える
人によっては「プログラミング中にマウス操作も煩わしい」と思う方もいらっしゃると思います。そのような方のために Jupyter Notebook プログラムの実行などをショートカットキーで行えるようになっています。そのためテキストエディタを編集している感覚でプログラミングと実行が可能です。(相当な数があるため、実行や保存など基本的なショートカットキーを覚えていると便利だと思います)
OSの機能も呼び出せる
上記のようにPythonのプログラミングと実行・確認についてはノートブック内で完結できます。更にOSのコンソールから実行するコマンドやOS機能もノートブックから実行できます。これによってファイル移動やインストールなど簡単な操作は可能です。また、Linuxの場合はBashシェルも実行できるため、簡単なバッチ処理もノートブック上でプログラミングすることが可能です。
システム拡張で出来る事が増える
Python言語は世界中のエンジニアや団体が優れたパッケージを開発し、無償で公開しています。この中には機械学習や Deep Learning のパッケージも含まれ、それによって私たちは細かい処理内容を知らなくても高性能な処理を少ないプログラミング量で実現することが可能です。
それと同様に Jupyter Notebook もオープンソースのWebアプリとして、日々、世界中のエンジニアが機能拡張のパッケージを開発・リリースしています。そのため、標準の Jupyter Notebook に様々なパッケージを追加することで機能拡張を行うことができます。下記は「ipython-sql」というパッケージを使った時のイメージですが、様々な種類のデータベース対してSQLを実行・確認できるインターフェースを持つことが可能です。
また、Jupyter Notebook の設定を行うことで、R言語やRuby言語などもPython言語と同様にノートブック上で実行することもできます。
Jupyter Notebook はクラウドサービスの機械学習サービスでも採用
Jupyter Notebook はオープンソース、かつマルチプラットフォーム(インストール先のOSを選ばない)のため、様々なツールやサービスでの導入が進んでいます。特にクラウドサービスでは、Azure Machine Learning や Google Cloud Datalab の機械学習の実行環境として Jupyter Notebook が採用されています。これらのサービスは、ノートブックから呼び出し可能なPythonパッケージやAPIなどを使用することで、各クラウドサービスと連携することが可能です。
かつて、Java言語の統合開発環境のデファクトスタンダードがEclipseになったように、Jupyter Notebook は機械学習のデファクトスタンダードになっても不思議ではないと思います。