こんばんは、週末は寒くなってきてからか、はたまた、体調不良の前触れか、長男がべったりくっついていることが多かった@kjunichiです。
はじめに
以前に話題になった、組み合わせを数え上げるおねえさんの動画。長男と一緒に何度か観ました。 ちょっと数が増えるとその組み合わせが爆発的に増加するという話。この動画で最新のアルゴリズムではもっと早く数えられるとありましたが、当時はまさか、それがPythonで実装されてgithubに公開されてるなんて思いもしませんでした。今週末、たまたま、プラレールのYoutubeばかり見えていると奥さんに怒られると思い、たまには、勉強をということで、見返したら、関連動画からGraphillionの存在を知ることが出来ました。
GraphillionをDockerで動かすまで
GraphillionはPython3は非対応
GraphillionはPython 3 support · Issue #13 · takemaru/graphillionにあるようにPython2.x系でのみ動く模様。
Dockerの既存のIPython Notebookイメージ
python2系のIPython Notebookの以下のイメージを使って作業を進める。 ipython/notebook Repository | Docker Hub Registry - Repositories of Docker Images
Notebookでシェルコマンド
!を付ければ良い、ただし、インタラクティブモードに注意
!apt-get install -y gfortran
といった感じで決して入力したコマンドが標準入力からの入力を待たないようにしないといけない。
必要なライブラリ
!apt-get install -y libpng12-dev libfreetype6-dev gfortran
必要なPythonモジュール
!pip install numpy
!easy_install networkx !easy_install matplotlib
python本体の再起動
quit()
カーネルが再起動される。
Notebookにグラフを貼るには
%matplotlib inline
GraphillionをNotebookで試す
Graphillionを試すNotebookを作った、これをDLして使うことで、Graphillionを試すことが出来る。 http://nbviewer.ipython.org/gist/kjunichi/9e77493c41fdfe0d8f20/Graphillion.ipynb
Dockerのコンテナを保存する
docker commit <<コンテナID>> kjunichi/notebook
コミットしたコンテナを起動する
既存のコンテナを止める
docker stop <<コンテナID>>
コミットした新しいイメージを元にコンテンを起動する
docker run -d -p 443:8888 -e "PASSWORD=MakeAPassword" kjunichi/notebook
Link
- IPython Notebook チュートリアル - Qiita
- https://github.com/takemaru/graphillion/wiki
- ipython/notebook Repository | Docker Hub Registry - Repositories of Docker Images
まとめ
前々から気になっていたが、イマイチ使えなかったIPython NotebookやPythonのパッケージ管理に関して今回のおねえさんを救うミッションを通じで一気に知識を深めることが出来た。
今回の記事の方法では、Dockerfileを一切編集していないが、もちろん、Dockerfileを編集して、必要なパッケージをインストールしてから使う方法もありだと思うが、IPython Notebookの場合、あれこれやってみて、後からパッケージが必要になるユースケースの方が圧倒的に多いと考え、今回のDockerfileを編集しない方法を記事にした。
関連記事
- BlenderでPython使って最速降下曲線を描いてみる
- アメッシュの画像を表示するslackのボットをbotkitを使ってDockerイメージにしてherokuで動かした
- node.jsで大きな数を扱う
- 東大の入試問題をNode.jsに解かせてみた