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環境に、PythonとUrwidをインストールします。
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)で実行したものです。
.png)
(5) List一覧、Detail表示画面
画面を連携させていきます。
.png)
.png)
(6) Google Mapsとの連携
Android上ではIntentを利用して、Google Mapsを起動しています。
.png)
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が少し乱れてしまいますね。いささか見栄えはよくありませんが、実行に支障はありません。
.png)
(4) List一覧、Detail表示画面
メイン画面は問題なく表示されます。
.png)
.png)
この環境は、Terminalベースなので、Google Mapsとの連携は出来ません。
[3] Linux Deploy
ひとりよがりのモバイルPCで説明してきたLinux Deployの環境でも動かしてみました。もちろん何の問題もなく動きます。
.png)
以上、Android環境で、ListDBPを動かしてみました。
ここでは、Android以外の環境を説明しませんが、ChromebookのLinux環境である「Crostini」でも動きますし、64ビットのWindows10では、WSLでLinux環境を作れば問題なく動作することを確認しています。
初回に、
「汎用的な言語を使ってTUIアプリを作成、様々な環境で動作させること」
というテーマ設定を行ったわけですが、一応の目標は達成できたのではないでしょうか。