33
Jupyter Notebook を ををををを 2016/11/10 Acroquest Technology 株株株株 株株 株株

Jupyter Notebookを納品した話

Embed Size (px)

Citation preview

Page 1: Jupyter Notebookを納品した話

Jupyter Notebookを納品した話

2016/11/10Acroquest Technology 株式会社

山本 大輝

Page 2: Jupyter Notebookを納品した話

自己紹介

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

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

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

Page 3: Jupyter Notebookを納品した話

目次

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

3

Page 4: Jupyter Notebookを納品した話

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

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

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

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

4

Page 5: Jupyter Notebookを納品した話

5

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

Page 6: Jupyter Notebookを納品した話

6

そう  Jupyter ならね

Page 7: Jupyter Notebookを納品した話

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

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

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

3. Markdownを使える。

7

Page 8: Jupyter Notebookを納品した話

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

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

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

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

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

8

Page 9: Jupyter Notebookを納品した話

Jupyter Notebookの例

9

Page 10: Jupyter Notebookを納品した話

Markdown

図ソースコード

Jupyter Notebookの例

10

Jupyterの特殊コマンド

(Magic Command)

Page 11: Jupyter Notebookを納品した話

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

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

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

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

11

Page 12: Jupyter Notebookを納品した話

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

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

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

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

4. 便利な Pluginがある。

12

Page 13: Jupyter Notebookを納品した話

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

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

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

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

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

13

Page 14: Jupyter Notebookを納品した話

Jupyter Notebookの例

14

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

Page 15: Jupyter Notebookを納品した話

Jupyter Notebookの例

15

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

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

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

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

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

Page 16: Jupyter Notebookを納品した話

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

Page 17: Jupyter Notebookを納品した話

nbextensions

17

Page 18: Jupyter Notebookを納品した話

nbextensionsPlugin一覧のテーブル

Plugin名18

Page 19: Jupyter Notebookを納品した話

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

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

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

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

19

Page 20: Jupyter Notebookを納品した話

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

Page 21: Jupyter Notebookを納品した話

でも・・・・・

Page 22: Jupyter Notebookを納品した話

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

Page 23: Jupyter Notebookを納品した話

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

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

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

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

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

etc23

Page 24: Jupyter Notebookを納品した話

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

24

Page 25: Jupyter Notebookを納品した話

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

インデントがない

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

25

Page 26: Jupyter Notebookを納品した話

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

Page 27: Jupyter Notebookを納品した話

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

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

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

Markdown)

27

Page 28: Jupyter Notebookを納品した話

印刷が難しい

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

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

28

Page 29: Jupyter Notebookを納品した話

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

29

Page 30: Jupyter Notebookを納品した話

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

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

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

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

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

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

30

Page 31: Jupyter Notebookを納品した話

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

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

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

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

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

Page 32: Jupyter Notebookを納品した話

まとめ

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

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

32

Page 33: Jupyter Notebookを納品した話

33

Jupyter Notebookを使おうぜ!

Infrastructures Evolution