jupyter notebookを納品した話

Post on 16-Apr-2017

1.777 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Jupyter Notebookを納品した話

2016/11/10Acroquest Technology 株式会社

山本 大輝

自己紹介

1. 名前:山本 大輝(やまもと ひろき)2. Twitter:@tereka1143. Blog:のんびりしているエンジニアの日記

http://nonbiri-tereka.hatenablog.com/4. 専門:画像処理、異常検知5. 普段は CV勉強会や PyData等で活動しています。

Copyright © Acroquest Technology Co., Ltd. All rights reserved.2

目次

1. はじめに2. Jupyter Notebookとは3. Jupyter Notebookを選んだ理由4. Jupyter Notebookの Plugin5. Jupyter Notebookの罠6. まとめ

3

こんなことありませんか?

1. 「データを分析して欲しい」と言われたけど、分析結果をどんな形式で提出しようか悩んでいる。

2. 分析の思考過程とコードをバラバラに管理しており、後から分析過程を追跡できなくなる。 そのため、思考過程とコードを一緒に残したいが、コードをWord等に貼り付けたくない。

3. コードの動作確認結果を可視化したいが、対話式に確認ができない。(デバッガでは画像は面倒)

4

5

この問題全部解決できます!

6

そう  Jupyter ならね

Jupyter Notebook1. Jupyter Notebookは作成したコードやドキュメントを簡単に共有できる。

① 様々な言語をサポート( Rも使えるよ!)② Notebook自体の共有③ インタラクティブな実行

2. 可視化したグラフを掲載できる。

3. Markdownを使える。

7

何ができるの?1. コードを実行できる。基本はPythonですが、カーネルを追加すれば他の言語も実行可能。

2. 当然、出力結果を可視化できる。 %matplotlib inlineを記述すれば、Matplotlib(グラフ)も出力可能

3. Markdownで文章を記述できる。コードをドキュメントに組み込める。

4. 様々なPluginを利用できる。

5. Githubが .ipynb( Jupyter Notebookの拡張子)に対応している。

8

Jupyter Notebookの例

9

Markdown

図ソースコード

Jupyter Notebookの例

10

Jupyterの特殊コマンド

(Magic Command)

なぜ、 Jupyter Notebook?1. Jupyter Notebookは分析の過程を残せる。

なぜ、そのコードを書いたのか、途中経過を残すことができる。

2. Jupyter Notebookは環境を整えれば再現が可能① 環境を整えれば、同じ状況を再現をすることが可能できる。② 手順を追実験できる。(手順書としても使える!)

3. Jupyter Notebookは結果をエビデンスとして残せる。 これを納品しよう!

11

実際に Jupyter Notebookの良かったところ

1. 実行結果を見ながら説明ができる。 ソースコードの実行過程を見ながら説明ができる。

2. 実行結果を逐一確認できる。 現状の実行結果を見て、次にどうするか思考できる。

3. アルゴリズムの検証結果を見ることができる。

4. 便利な Pluginがある。

12

Jupyter Notebookの活用例1. 分析レポートとして使う。

今回の利用用途、過程とコードが一緒でわかりやすい。

2. アルゴリズムの過程を残す。 画像処理のコードで処理後の結果を残す。

3. 手順書 基本的にはその通りやれば動くので手順書として実行コマンド、結果、説明を同居させて残せる!

例えば、 Hadoopの構築手順書https://github.com/NII-cloud-operation/Literate-computing-Basics

13

Jupyter Notebookの例

14

出展: https://github.com/NII-cloud-operation/Literate-computing-Basics/blob/master/D03_KVM%20-%20Ready!%20on%20CentOS.ipynb

Jupyter Notebookの例

15

【説明】コードややることに関する内容を記述でき

出展: https://github.com/NII-cloud-operation/Literate-computing-Basics/blob/master/D03_KVM%20-%20Ready!%20on%20CentOS.ipynb

【コード】実際のコマンドがわかりやすい

【実行結果】説明と結果が同時に見える

上から順に手順を追える!

Plugin導入の方法1. nbextensionsを使うと、よく使う Pluginは入ります。

2. インストール方法① git clone https

://github.com/ipython-contrib/IPython-notebook-extensions

② cd IPython-notebook-extensions③ python setup.py install④ sudo jupyter contrib nbextension install --user今の日本語ページだと

あまりこの情報がない

16

nbextensions

17

nbextensionsPlugin一覧のテーブル

Plugin名18

おすすめの Plugin1. Table of Contents (2)

見出しから目次を作成して表示する。

2. Python Markdown Markdownに Pythonの変数等を埋め込める。

3. Hide input 入力したセルを隠せる。

19

Jupyter Notebookいい面いっぱいあるよね!

でも・・・・・

Jupyterで苦労したこともあります。

html出力時と見た目が異なることが発覚した

1. Pluginが使えない場合がある、Markdownが機能しない等、問題が発生する。

2. Jupyter Notebookの機能に htmlを出力する機能があるが、出力結果がNotebookと異なる。

3. Table of Contents (2)の機能を使っていたが、ナンバリングがなくなった。

4. 変数埋め込み機能が使えない。

etc23

Table of Contents(2)の場合~notebook~

24

Table of Contents(2)の場合~ html~

インデントがない

ナンバリングされていない

25

その他いくつかの場合~ notebook~

その他いくつかの場合~ html~

Notebook上で hideにした cellも、 html出力されてしまう( Hide Cell)

埋め込んだ変数名が可視化される( Python

Markdown)

27

印刷が難しい

1. Webページや Notebookのまま印刷しようとすると、グラフや表が画面から消える。

2. Jupyter Notebookを pdf化するために、 LaTeXを必要とするのが面倒。(印刷機能を使えば別の方法で可能)

28

印刷が難しい横スクロールで印刷が途切れる

29

ファイルの分割ができない

1. ファイルの分割が難しい要因は次の 2つ① ファイルの結合をサポートしていない。

Issueはありました。 https://github.com/jupyter/nbconvert/issues/253

② ソースコードが必要である。

2. 複数人開発の構成管理が難しい。 複数人で開発すると必ず conflictが起こる状況へ・・

3. ファイル構成の設計が必要である。① Notebook自体を分割した状況を作る。② 結合するスクリプトを書く(できるかわからない。)

30

可能な限り情報は一つのファイルにまとめる

1. csvや Excel形式については pandasを使うと可視化可能となるので、うまくコードを書いて埋め込むことが可能

2. 表示形式を表で出力したい場合はpandas.DataFrame形式で変数を保持するのも良い。

3. あまりに長くなってくると見通しが悪化するので可能な限り影響範囲は狭い方が良い。

4. (ちゃんと設計しましょう)31

まとめ

1. Jupyter Notebookを使うとコードや過程、手順をNotebookとして残せる。 納品可能なレベル

2. ただし、プラグイン等のカスタマイズ機能を使う場合は気をつける必要がある。

32

33

Jupyter Notebookを使おうぜ!

Infrastructures Evolution

top related