オープンソースのPaaSソフトウェア CloudFoundry の技術情報やイベント告知などを掲載します

2015-07-06

IPython Notebook を Cloud Foundry で動かす


本日の第23回「Cloud Foundry 百日行」は IPython Notebook です。

最近、データサイエンティストという役職がちらほら聞かれるようになり、ベイズの定理なんて言葉も飛び交ってきているようです。

科学計算に R言語 や Python などが利用されており、以前から SciPy は気になっておりました。キャリアのひとつとして身に着けておくと便利かなと常々おもっているのですが、のびのびになっています。特に、データサイエン ティスト界隈では今回紹介する IPython Notebook をよく使うという情報が散見されます。Bluemix で IPython Notebook を動かす方法(リンク)は知られているのですが、なかなか煩雑そうだなと思っていました。しかし、より簡単な方法で動かすことが出来ることがわかったので、ご紹介したい と思っています。

基本情報


  • 公式サイト
    http://ipython.org/notebook.html
     
  • ソースコード(ビルドパック)
    https://github.com/ihuston/ipython-notebook-buildpack.git
     
  • 参考情報
    http://www.scipy.org/
    http://www.slideshare.net/ihuston/python-on-cloud-foundry

 

デプロイ


1. ソースの入手なし


今回の手法は、ビルドパックのみという手法をとっています。ビルドパックだけでアプリケーションがデプロイできるというのは素晴らしいですね。

2. デプロイ


利用するビルドパックには、デフォルトでは数学関係のモジュールが入っていないようなので、追加のモジュールを requirements.txt ファイルに記述します。


$ cat requirements.txt
numpy
pandas
matplotlib

その上で、Cloud Foundry 上にデプロイします。今回は、Bluemix を利用しております。

$ cf push amntip -b https://github.com/ihuston/ipython-notebook-buildpack.git -m 512M

requested state: started
instances: 1/1
usage: 512M x 1 instances
urls: amntip.mybluemix.net
last uploaded: Wed Jul 1 07:14:35 UTC 2015
stack: lucid64

     state     since                    cpu    memory           disk           details
#0   running   2015-07-01 04:17:11 PM   0.0%   119.3M of 512M   254.4M of 1G


Cloud Foundry のビルドパックは実行環境を構築するのにつかわれ、その上にソースファイルやバイナリをユーザーが提供するというのが一般的です。

しかし、今回のケースのようにアプリケーションそのものを導入することもできます。ビルドパックの compile スクリプトがソフトウェアを導入するスクリプトなのですが、今回のビルドパックのコンパイルスクリプト を見てみるとさほど難しいことをしているわけではないです。単純に普段ユーザーが導入スクリプトを書くように自然に記述されています。このあたりの自由度は Cloud Foundry 特有でしょう。ある意味、Docker スクリプトを書くよりも簡単かもしれません。

さて、動かしてみましょう。

動作確認


はじめはやはり Hello World ですね! New ボタンから Python 2 を選択します。



In の部分に、print "Hello"と入力して、動かします。



Hello と出ました。せっかくなので、プロットも試してみます。次の命令を入力して実行します。


%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp');

表示されました。



参考情報のリンクにあるチャートにて、 Ian Huston 氏はデータサイエンティスト達にとって以下のメリットがあると述べています(拙訳)

- WEBアプリケーション(IPython:訳注)を簡単に動かすことができる
- 必要なデータサービスを簡単にバインドすることができる
- ひとつのクラウドベンダーにロックインされない
- Python は公式にサポートされいる

たしかにたとえば少し計算してみたいと思えば、数分で IPython の実行環境が得られるのはメリットがあると思います。

おまけ


なお、今回は動かすのみで、あまりアプリケーションに対して様々な動作検証を行うというまでにはたどり着けませんでした。スキル習得の難しさを実感しています。千里の道も一歩から。お気軽に動作できる環境ができたので、暇をみつけてスキルを磨こうと思っております。


今回使用したソフトウェア

  •  cf-release Bluemix (v210)
  •  IPython Notebook buildpack
    https://github.com/ihuston/ipython-notebook-buildpack/tree/02ca4d69805ba50f4afa77e6a4db5e75287b046f