読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Jupyter (iPython) Notebookを使って技術ノート環境を構築する方法

Python

IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集

IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集

目次

はじめに

これまで、

技術的なメモはWordやPowerPointで書いていましたが、

数式の書きにくさと、Markdownが使えないことで、

下記のような特徴を持つ

技術メモツールを探していました。

  • Markdown記法が使える

  • 数式をTex形式で入力できる

  • 画像をドラッグ&ドロップできる

  • できれば、無料でオープンソース

 

そこで色々調べた所、

Jupyter (iPython) Notebookというツールを使うことで、

上記の目的を達成した、

快適な技術ノート環境を立ち上げることができたので紹介します。

 

Jupyter Notebook (iPython Notebook)とは?

Jupyter Notebookは元々、

Pythonのインタラクティブ実行環境(iPython)を

ブラウザ上で実行するためのツールでしたが、

進化が進み、Python以外の言語も利用可能になったので、

最近はJupyter Notebookという名前で開発が進められています。

 

このJyupyter Notebookは最近のデータ解析ブームにおいて、

簡単にデータ解析を実施し、

その結果を再利用しやすく、かつ、

配布しやすい形で残すことができるため、

利用が広まっています。

(詳細は下記の資料を参照下さい)

IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集

IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集

 

一方、Jypyterはプログラム実行環境だけでなく、

Markdown表示機能や、Tex記法による数式表示機能もあるので、

技術ノートツールとして使うことも可能です。

 

インストール

基本的には、

どのOSでもpipでインストールできます。

(Windows, Ubuntu, Macで確認済み)

$ pip install jupyter

 

ubuntuにインストールする場合は、

pipでインストールする前に、

下記のコマンドで依存ライブラリをインストールする必要があります。

$ sudo apt-get install build-essential python3-dev

 

Notebookデータのバックアップ&マルチアカウントアクセスする設定

JupyterのNotebookのデータは、

.ipynbという拡張子のファイルで保存されますが、

このファイルをDropboxで管理すると、

すべての端末で共有されますし、

バックアップやバージョン管理が自動で実施されるので、

非常に便利です。

db.tt

  

.ipynbファイルは、

普通に保存するとターミナルで

Jupyterを起動したディレクトリに保存されてしまうので、

.bashrcに下記のようなエイリアスを作って

Jupyterを起動すると、常にDropbox内でJupyterが起動し、

ipynbファイルがDropboxの中に保存されて便利です。

$ alias iPythonNotebook='cd ~/Dropbox/ipythondir;jupyter notebook'

 

Jupyter Notebookのショートカット

下記のショートカットを使いこなすと、

よりJupyterを使いやすくなります。

(ショートカットがVimっぽいのがいいですね)

コマンドモードのショートカット

内容 ショートカット
セルをマークダウンモードに m
セルの削除 dd
上のセルに移動 k
下のセルに移動 j
スクロールダウン Space
スクロールアップ Shift+Space

Editモードのショートカット

内容 ショートカット
セルを実行して、下にセルをInsertする Alt+Enter

Markdownで文章を入力する

Jupyter NotebookはデフォルトでMarkdownを表示する機能があります。

各セルで、ツールバーのタブをMarkdownにして、

Markdown記法を入力し、Ctrl+Enterを押すと、

下記のようにMarkdown記法による文章が表示されます。

f:id:meison_amsl:20160220180811p:plain

 

見出しのナンバリングなども自動で実施されるので、

シンプルなレポートぐらいは作れそうですね。

   

数式を入力する

Jupyter notebookで数式を入力したい場合は、

Markdownモードで、2つの$$で前後を囲った間に、

Latex記法で数式を書くと、数式が表示されます。

$$ \sqrt{a+b} $$

f:id:meison_amsl:20160214222214p:plain

   

数式の計算をする

以前紹介した、Pythonの数式演算ライブラリsympyを使用すれば、

Jupyter上で数式の計算も出来ます。

myenigma.hatenablog.com

 

下記のように数式をprintすると、

自動で数式表示されるので非常に便利です。

f:id:meison_amsl:20160220170751p:plain

 

 

画像をドロップアンドドラッグで挿入できるようにする

技術メモを作っている際に、

画像データをWordのように

文章にドラッグアンドドロップで追加したい場合が多いですが、

Markdownの場合、

いちいちリンクを貼り付けなければならないため面倒でした。

 

しかし、下記のJupyter Notebooksのextensionをインストールすることで、

様々な拡張機能が使えるようになり、

画像のドラッグアンドドロップもできるようになります。

 

インストールは、READMEにある通り、

下記のコマンドでOKです。

(下記のインストールをする場合は

Jupyter Notebookのプロセスはkillしておきましょう)

$ pip install https://github.com/ipython-contrib/IPython-notebook-extensions/archive/master.zip --user

 

続いて、Jupyter Notebookを起動し、

URLに/nbextensions/を追加して、移動すると

下記のような拡張機能の追加画面に移動します。

f:id:meison_amsl:20160214214741p:plain

 

あとは、Drag and DropのチェックボタンをONして下さい。

すると、Jupyter Notebookで画像をドラッグアンドドロップすると、

画像が挿入されるようになります。

f:id:meison_amsl:20160214215328p:plain

ちなみに画像ファイルはD&Dすると

.ipynbファイルと

同じ場所にコピーされます。

 

目次を見出し情報から自動生成する

f:id:meison_amsl:20160224210037p:plain

上記のIPython-notebook-extensionsの一機能を使うことで、

Markdownの見出し情報から、

上記のように自動で目次を生成することができます。

 

使い方としては、

先ほどの/nbextensions/の設定画面で、

Table Contents(2)にチェックをいれます。

加えて、同じ設定画面で、

"Add a Table of Contents at the top of the notebook"

にチェックをいれます。

 

最後に下記のように

目次ウインドウを表示させて、

tボタンを押すと、

自動的に目次情報が先頭のセルに追加されます。

f:id:meison_amsl:20160224210522p:plain

 

レポートタイトルを入力する方法

残念ながら、今のところ

レポートのタイトルのようなものを

入力するツールは見つかっていませんが、

JupyterのMarkdownのモードでは、

HTMLを入力するとマークアップされた文字を入力できます。

この機能を使うことで、レポートタイトルっぽい文字を表示できました。

 

例えば、下記のようなhtmlを

JupyterのMarkdownモードのセルに入力すると、

<br />

<div style="text-align: center;">
<font size="7">Jupyter Report</font>
</div>
<br />
<div style="text-align: right;">
<font size="4">Atsushi Sakai</font>
</div>

<br />

下記のように表示されます。

f:id:meison_amsl:20160224224406p:plain

 

PDFに出力する

上記の方法である程度のレポート形式の技術ノートを作ることは

できるはずなので、あとはPDFなどに変換すれば、

プログラマ以外の他の人と資料を共有することができます。

 

Macの場合

Jupyter NotebookのデータをPDFに変換する方法は色々ありますが、

Macで一番シンプルなのは、Jupyter Notebookをブラウザで開いた状態で、

Ctrl-Pで、Macの標準機能でPDFに変換するのが一番簡単だと思います。

 

下記のように詳細設定の部分で、ヘッダーとフッターに

時刻や、ファイル名、ページなどを入力する設定ができます。

f:id:meison_amsl:20160220182656p:plain 

 

あとは普通にPDFを出力すると、

下記のようにそれなりのレポートがPDFで作成できます。

f:id:meison_amsl:20160220182742p:plain

 

Jupyterでプレゼン資料を作る方法

下記を参照下さい。

myenigma.hatenablog.com

 

JupyterのサーバをHerokuの無料枠で構築する方法

下記を参照下さい。

myenigma.hatenablog.com

 

できれば改善してもらいたい部分

もう少しで完全にWordをおさらばできそうなので、

下記のような機能を実現してもらいたいですね。

  • 参考文献管理

  • 図のタイトル入力

  • 自動図番号割り当て

上記のような機能を実現できる拡張などを知っている方は

コメントなどで教えて頂けると幸いです。

(Python使えるから、自分で作ればいいのか。。。)

 

更にJupyterを学びたい人は

下記の資料がおすすめです。

IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集

IPythonデータサイエンスクックブック ―対話型コンピューティングと可視化のためのレシピ集

Learning Jupyter

Learning Jupyter

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com