2015年1月25日日曜日

Android端末をサーバにしてPyramidフレームワークを利用する

このブログ記事をはてなブックマークに追加

しばらく前に、PythonのWebフレームワークであるPyramidを利用した。これがなかなか良くできており、Android端末上でも動かしてみたくなったので載せてみた。

ところで、自分が利用しているキャリアはドコモなんだけど、spモードだとグローバルIPが割り振られないので外部から端末にアクセスできない。なので、spモードを契約せずに、mopera Uを利用している。mopera UであればグローバルIPが割り振られるのでアクセスすることができるからだ。このためだけに、spモードにせず、mopera Uにしていると言っても過言ではない。

閑話休題。まず、Pyramidを動作させるにはAndroid端末用のPython環境であるSL4Aを入れる必要がある。次にPyramidを入れるのだが、必要なモジュールなどが複数あるのでそれも一緒に入れる。一応、Hello Worldプログラムを動かすのに必要なものはすべて挙げたが、もし足りない場合は実行時に何が足りないかエラー表示が出るので、それを参考に入れて欲しい。また、Android SDKが導入されていることを前提にしている。


まず、Android端末にシェルで入ってプログラムを展開するディレクトリを準備する。環境に合わせてディレクトリは読み替えて欲しい。

> adb shell * daemon not running. starting it now on port 5037 * * daemon started successfully * $ cd /sdcard/sl4a/scripts $ mkdir pyramid $ exit

適当なディレクトリで以下のプログラム・モジュールをPC側で展開する。


PC側からAndroid端末にプログラム・モジュールをコピーする。

> adb push pyramid /sdcard/sl4a/scripts/pyramid/pyramid/ > adb push translationstring /sdcard/sl4a/scripts/pyramid/translationstring/ > adb push venusian /sdcard/sl4a/scripts/pyramid/venusian/ > adb push webob /sdcard/sl4a/scripts/pyramid/webob/ > adb push zope /sdcard/sl4a/scripts/pyramid/zope/ > adb push repoze /sdcard/sl4a/scripts/pyramid/repoze/

pkg_resources.pyについては、PCに入っているPythonのsite-packagesなどから適当に持ってきてコピーする。

> adb push pkg_resources.py /sdcard/sl4a/scripts/pyramid/

これでプログラム・モジュールについては準備完了だ。次に、Android端末側の設定をする。

まずはSL4Aを起動させる。pyramidディレクトリが作成されているはずなので、そこをタップして中を確認してみる。一通り、ファイルがあることを確認したら、メニューからViewをタップし、Interpretersを選択する。更にメニューを開き、Start Serverをタップして、Publicを選択する。これで、Android端末がサーバとして機能する。Androidの通知画面を開くと、SL4A Serviceという通知があるので、それをタップすることでServer情報を確認できる。そこに表示されたドメイン名でAndroid端末にアクセスできる。以前の記事でもサーバにする方法を書いたので、そちらも参考にしてほしい。

これで、Android端末をサーバとして機能させることができたので、こんどはHello Worldプログラムを動かして、動作確認をしてみる。

プログラムをhelloworld.pyとして保存した後、Android端末にコピーする。

> adb push helloworld.py /sdcard/sl4a/scripts/pyramid/

そして、コピー先のディレクトリにhelloworld.pyが表示されるので、それをタップして実行する。先ほど得られたドメイン名(ここでは 12345.mopera.net とする)にポート番号8080でアクセスする。


http://12345.mopera.net:8080/hello/world

これで以下の画面が表示されれば成功だ。


携帯の電波が届くところであればどこでも使えて、Pyramidが載っている手のひらWebサーバってなんか良い。

0 コメント: