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

MyEnigma

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

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でインストールするのが簡単だと思います。

$ pip install jupyter

 

おすすめJupyter設定

JupyterのNotebookのデータは、

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

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

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

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

非常に便利です。

 

.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

 

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のestensionをインストールすることで、

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

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

 

インストールは、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ファイルと

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

 

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

 

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

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

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

  • 目次の自動生成機能

  • 参考文献管理

  • 図のタイトル入力

  • 自動図番号割り当て

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

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

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

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

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

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