PythonでTUIアプリを作ろう 第二部入魂編 ( その6 AndoridでListDBPを動かす )


ここまで説明してきたPython Urwidを使用したTUIアプリケーション”ListDBP”の動作環境は、基本的にLinuxを想定していました。
しかし、「PythonでTUIアプリを作ろう (その1 TUIアプリとは)」で述べたように、「TUIアプリの活用範囲は広い」のです。

ListDBPは、スマートフォンでも動く。

今回は、Andorid環境での動作について検証していきましょう。


[1] Termux

言うまでもなく、Android環境での動作を可能にしているツールは、Termuxです。今回、TUIアプリケーションを公開しているのも、Termux環境で動くことが動機の一つになっています。

さて、そのTermuxですが、最近Android5-6が切り捨てられていたり、その行くすえが気になりますが、今の所なんとかなります。
これについては、TermuxのRepositoryが使えなくなっている ( その対処法について )にまとめていますので、参考にしてください。

それでは、Google PlayからTermuxをインストール、下記の手順で環境を整えていきます。

(1) 内部ストレージ(/sdcard)の有効化

まずは、内部ストレージ(SDカード)を下記のコマンドで有効化します。

termux-setup-storage  

Andoridでは、内部ストレージ(SDカード)上のファイルは実行できませんが、Pythonインタプリタで動くListDBPは、動作が可能です。スクリプトとデータは、ここに置いたほうが運用しやすいと思います。

(2) Python Urwidのインストール

次に、Termux環境に、PythonUrwidをインストールします。

pkg update  
pkg install python  
pip install urwid  

(3) ListDBPのセットアップと実行

「PythonでTUIアプリを作ろう 第二部入魂編(その5 TUIアプリケーションの作成)」で説明したコード内の「ListDBPディレクトリ」を、内部ストレージ(/sdcard)にコピーしておきます。

完了後、コピーしたディレクトリに移動、アプリケーションを起動します。

cd /sdcard/ListDBP  
python list.py  

(4) データテーブル一覧の表示と選択

ここからは、前回説明した内容と同様です。画面は、Nexus5(Android6.0)で実行したものです。


(5) List一覧、Detail表示画面

画面を連携させていきます。


(6) Google Mapsとの連携

Android上ではIntentを利用して、Google Mapsを起動しています。


Urwidがマウスをサポートしてくれたおかげで、Termux上ではタッチが効きます。ボタン部分はもちろんですが、List一覧ではダブルタップでDetail画面に移動することも可能です。


[2] GNURoot Debian(Lifetouch Note)

Termuxで動けば十分なのですが、Android黎明期のクラムシェルたち(その2 LifeTouch NoteでLinuxを使おう)で説明したLifetouch Note上のDebian Wheezyでも実行してみましょう。

このDebianでは、標準でPython2.7が導入されますので、こちらをベースに動かしてみます。

(1) Urwidのインストール

この環境では、pipがうまく入らなかったので、Urwidソースから入れてしまいます。ダウンロードしたUrwidのディクトリ(urwid-master)に移り、setup.pyでインストールします。

cd urwid-master  
python setup.py install  
(2) スクリプトの起動

Termux同様に、sdcard上にListDBPをコピーし、起動します。

cd /sdcard/ListDBP  
python list.py  
(3) データテーブル一覧の表示と選択

このTerminalでは、Popup Dialogが少し乱れてしまいますね。いささか見栄えはよくありませんが、実行に支障はありません。


(4) List一覧、Detail表示画面

メイン画面は問題なく表示されます。



この環境は、Terminalベースなので、Google Mapsとの連携は出来ません。


[3] Linux Deploy

ひとりよがりのモバイルPCで説明してきたLinux Deployの環境でも動かしてみました。もちろん何の問題もなく動きます。



以上、Android環境で、ListDBPを動かしてみました。

ここでは、Android以外の環境を説明しませんが、ChromebookLinux環境である「Crostini」でも動きますし、64ビットのWindows10では、WSLLinux環境を作れば問題なく動作することを確認しています。

初回に、

「汎用的な言語を使ってTUIアプリを作成、様々な環境で動作させること」

というテーマ設定を行ったわけですが、一応の目標は達成できたのではないでしょうか。