Androidで実現できる機械学習や実用的なpythonプログラミング環境の紹介です。今回もCosmo Communicatorを使用しており、設定なども含まれていますので、Astroslide 5GやGeminiPDAにも役立つと思います。それ以外でも、お手持ちの端末に合わせたカスタマイズにも応用できるのではないかと期待しています^_^;
ubuntu(linux)環境やpythonプログラミング、AIや機械学習に興味ある方が、一通りの作業を楽しみながら気楽にスタートするきっかけになれば、とてもうれしいです。もちろん手持ちのAndroid端末を限界まで使い倒したい方や、キーボードデバイスを愛している方にとっても、ポジティブなトピック提供になったら幸いです^_^
以前にもTermuxをベースとしたjupyterlabの環境を紹介しましたが、その時はツール作成や、統計解析、ディープラーニングの基礎学習に足りる、というところまででした。今回は、もう一歩踏み込んで、より実用的なプログラミングや機械学習ライブラリの利用などもできる環境になります。
具体的には、Termuxにproot化ubuntuをインストールし、VNCを用いたGUI環境からvscodeを用意します。そこに隔離されたpythonの仮想環境を設定して、各種ライブラリをインストールしていくところまでを紹介したいと思います。また、VNC接続のGUI環境までしなくても、ubuntuのターミナルからjupyterlabを起動して、Androidのブラウザから同等のpythonプログラミング環境を用意することも可能です^_^
F-DroidからTermuxをインストール、Termuxにproot化ubuntuをインストール(日本語化)、vscodeのインストール、VNC接続まで
^_^;いきなり動画紹介(これ観ました)
いきなり他力となり、恐縮です^_^;
しかし、非常によくまとまった動画でして、私もこの動画をほぼ完コピしましたので、僭越ながら紹介させて頂きます。是非ご参考になさって下さい。
F-DroidからTermuxを入手
Termuxにproot化ubuntuをインストール
上記動画に沿った内容ですが、Termuxインストール後の私の環境でのコマンド進行だけ、記載させて頂きます。
$ pkg update -y
$ pkg upgrade -y
$ termux-setup-storage
$ pkg install proot -y
$ pkg install proot-distro -y
$ proot-distro install ubuntu
ubuntu環境へログイン
$ proot-distro login ubuntu
ubuntu環境からのログアウト(Termux環境へ戻る)
root$ exit
$
ubuntu環境:設定(時刻、xfce)
root$ apt update
root$ apt upgrade -y
root$ apt install locales -y
root$ apt install vim -y
root$ vim /etc/locale.gen
ja_JP.UTF-8のコメントアウト(#)を外す
root$ locale-gen
root$ update-locale LANG=ja_JP.UTF-8
root$ apt install tzdata
6 アジア
79 東京
root$ apt install task-japanese fonts-vlgothic -y
root$ apt install gvfs-daemons
root$ apt install xfce4 -y
55 japanese
1 japanese
ubuntu環境:vscode, vivaldi(ブラウザ)のダウンロードとインストール
vscodeの入手:以下のサイトから*.debファイルをダウンロード
*: ダウンロード時のvscodeバージョン
root$ apt install /data/data/com.termux/files/home/storage/downloads/code_*.deb
root$ vim /usr/share/applications/code.desktop
Exec=/usr/share/code/code --unity-launch --no-sandbox %F # -no-sandboxを追記
root$ apt install fcitx-anthy -y
vivaldiの入手:以下のサイトから*.debファイルをダウンロード
*: ダウンロード時のvivaldiバージョン
root$ apt install /data/data/com.termux/files/home/storage/downloads/vivaldi-stable_*_arm64.deb
root$ vim /usr/share/applications/vivaldi-stable.desktop
Exec=/usr/bin/vivaldi-stable --no-sandbox %U # -no-sandboxを追記
ubuntu環境:設定(日本語化)
root$ apt install fcitx-anthy -y
一旦、ログアウトしてTermuxを再起動します。
root$ exit # ubuntu環境からログアウト
$ exit # Termux環境からログアウト
ubuntu環境:VNCサーバー
VNCサーバーのインストール
root$ apt install tigervnc-standalone-server -y
VNCパスワードの設定
root$ vncpasswd # パスワードを2回入力
問い合わせには、「n」を入力
VNCサーバーの起動
root$ vncserver -localhost
VNCサーバーの停止
root$ vncserver -kill
VNCサーバーの起動状況の確認
root$ vncserver -list
VNCサーバーのリフレッシュ:stale状態になり、VNC接続できなくなるのを解消
root$ vncserver -cleanstale
参考:Termux環境の設定、Airpodsケースに収まる極小マウスについては、こちらをどうぞ
VNCアプリのインストール、設定
bvncアプリのインストール
bvncの設定
サーバーアドレスは「localhost」、ポートは「5901」として、VNCサーバーに設定したパスワードを入力します。
画面解像度のカスタマイズ
デフォルトの解像度には、cosmo communicatorの画面解像度はないので、bvncの詳細設定から、リモートデスクトップサイズから、カスタマイズ:「2160×1080」の解像度を設定します。
VNC接続によるGUI環境の起動
ubuntu環境からvnc serverを起動します。
root$ vncserver -localhost
ubuntu環境は維持したまま、bvncアプリで設定した環境をクリックすると、GUI環境が立ち上がります。
ただし、5.9インチの画面に2160×1080解像度等倍なので、そのままだとアイコンやフォントが豆粒のようで人の利用を拒絶しているかのようです^_^;
そこで、フォントサイズとアイコンサイズを設定したいと思います。
フォントサイズの設定
「アプリケーション」→「設定」→「外観」→「フォント」タブ下の設定
- デフォルトフォント:「11」
- デフォルトMonospaceフォント:「11」
- DPI:「130」
ちなみに「スタイル」タブ下で「Greybird-dark」を選択すると、ダークモードになります。
アイコンサイズの設定
「アプリケーション」→「設定」→「デスクトップ」→「アイコン」タブ下の設定
- アイコンのサイズ:「80」
- 指定フォントサイズを使用する:「14」
- アイコンのツールチップを表示するサイズ:「128」
尚、「背景」タブ下のフォルダー「backgrounds」に設定すると別の壁紙が選べます。予め、好みの壁紙を用意すれば「other」から選択できそうです。
日本語化
左上の「アプリケーション」タブから「プログラムの実行」を選択して、以下を実行します。
im-config
問い合わせに”y”と入力して、「fcitx」を選択します。
もう一度、「アプリケーション」タブから、「プログラムの実行」を選択して、以下を実行します。
fcitx-configtool
box内の「全体の設定」タブから、入力メソッドのオンオフのショートカットを設定するのに、「shift + space」のキー入力を通して設定します。
デスクトップがフリーズしてしまいますが、一度Termuxから再起動すると、ちゃんと設定できています。
ubuntu環境:ユーザーの作成
python環境構築を見据え、ユーザーを作成しておきます。
ユーザーの作成
root$ adduser cosmo
「cosmo」はユーザー名です。パスワード設定を要求されるので、設定してください。
またuseraddコマンドでもユーザー作成できますが、ホームディレクトリが作成されないので、adduserコマンドにて実施してください。
sudoコマンドのインストール
ユーザー環境下でインストール作業など、root権限をもって実行できるようにsudoコマンドをインストールします。rootユーザーにて、以下のコマンドを実行していきます。
root$ apt install sudo -y
sudo権限の付与
sudoグループにユーザーを追加します。確認は、catコマンドで実行できます。
root$ gpasswd -a cosmo sudo
root$ cat /etc/group | grep sudo
root$ visudo
cosmo ALL=(ALL:ALL) ALL # この内容を追記(cosmoはユーザー名)
こちらで、Termuxを再起動すれば、sudo権限が付与されると思いますが、ちょっと記憶が定かでないので、作業が足りなかったら、ごめんなさい^_^;
作成したユーザーに移る
root$ su cosmo
cosmo$
rootユーザー(スーパーユーザー)に戻る
cosmo$ exit
root$
ubuntu(linux)環境に興味を持って下さった方へのリンク
UDEMY : Linux(ubuntu)環境を学びたい方へのリンク UDEMY : 現役シリコンバレーエンジニアが教える NeoVim(VIM) + Tmux + Zsh 入門メンテナンス用シェルスクリプトの作成
以下のようなコードをもつapt_maintenance.shを作成します。特にvscode, vivaldiは、アップデートのたびに.desktopファイルが上書き更新されるので、更新ごとに—no-sandboxの再追記が必要になってきます。
cosmo$ vim apt_maintenance.sh
#!/bin/bash
#最新のアップデートを確認
sudo apt-get update
#最新のアップデートを適用
sudo apt-get -y upgrade
#ディストリビューションを最新のものに更新
sudo apt-get -y dist-upgrade
#依存関係解決後に使われなくなったパッケージを削除
sudo apt-get -y autoremove
#作業時のaptキャッシュを削除します。キャッシュ(/var/cache/apt/archives)が肥大化することを防止
sudo apt-get -y autoclean
#メンテナンスされると--no-sandboxの記載がリセットされてしまうので、再追記
sudo sed -i 's/Exec=\/usr\/share\/code\/code --unity-launch %F/Exec=\/usr\/share\/code\/code --unity-launch --no-sandbox %F/' /usr/share/applications/code.desktop
#メンテナンスされると--no-sandboxの記載がリセットされてしまうので、再追記
sudo sed -i 's/Exec=\/usr\/bin\/vivaldi-stable %U/Exec=\/usr\/bin\/vivaldi-stable --no-sandbox %U/' /usr/share/applications/vivaldi-stable.desktop
実行権限を付与します。
cosmo$ chmod 755 apt_maintenance.sh
以下のコマンドで実行します。
cosmo$ ./apt_maintenance.sh
vscode, vivaldiともにGUIから起動できるか確認します。
ubuntu:ユーザー環境:隔離されたpython仮想環境の作成
作成したユーザー環境下にて、以下のコマンド進行で、必要なものをインストールして、python v.3.10.2をインストールしました。
cosmo$ sudo apt -y update
cosmo$ sudo apt -y install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
cosmo$ cd /tmp
cosmo$ curl https://pyenv.run | bash
cosmo$ echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bashrc
cosmo$ echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc
cosmo$ echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc
cosmo$ echo ' eval "$(pyenv init -)"' >> ~/.bashrc
cosmo$ echo ' eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
cosmo$ echo 'fi' >> ~/.bashrc
cosmo$ exec $SHELL -l
cosmo$ pyenv install 3.10.2
python仮想環境のインストール
「py3102」という名前の仮想環境を作成します。
cosmo$ pyenv shell 3.10.2
cosmo$ python -m venv ~/py3102
python仮想環境を起動
cosmo$ source ~/py3102/bin/activate
py3102$
起動を簡単にするために、エイリアスを作成しておきます。
cosmo$ cd ~
cosmo$ vim ~/.bashrc
alias py3102='source ~/py3102/bin/activate' # エイリアスを追記
cosmo$ source ~/.bashrc
以降は、以下のコードにて、仮想環境を起動
cosmo$ py3102
py3102$
python仮想環境の解除
py3102$ exit
root$
参考リンク:隔離された Python 3.7 仮想環境の新規作成(ubuntuの場合)
pipパッケージのインストール
py3102$ python -m pip install <パッケージ名>
インストールしたパッケージ
py3102$ python -m pip install -U pip
py3102$ python -m pip install setuptools
py3102$ python -m pip install numpy
py3102$ python -m pip install pandas
py3102$ python -m pip install matplotlib
py3102$ python -m pip install scipy
py3102$ python -m pip install scikit-learn
py3102$ python -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu
たまにタイムアウトのエラーが出る時がありますが、その際は何度かインストールをトライすれば、完遂できると思います。
参考リンク:pytorchのインストール
pythonプログラミングや各種ライブラリの活用に興味を持って下さった方へのリンク
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル 米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座 NumPy+matplotlib実践トレーニング -機械学習、深層学習の基礎として学ぶデータの操作と可視化- pandasの基礎 – 再入門 – / 本当に使えるようになるための実習 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜 Pythonで機械学習:scikit-learnで学ぶ識別入門 【PyTorch+Colab】PyTorchで実装するディープラーニング -CNN、RNN、人工知能Webアプリの構築-sudo権限が必要なpipパッケージのインストール
また、sudoコマンドから単にpythonを実行するとrootのpythonが呼び出されるようなので、仮想環境のpythonで実行するように絶対パスを指定してインストールしました。
py3102$ which python
py3102$ sudo <which pythonで表示されたパス/python> -m pip install <パッケージ名>
sudo権限でインストールしたパッケージ
現状では、localhostを使用するようなサーバー関連のパッケージのインストールにはsudo権限が必要でした。コマンド実行後、ユーザーパスワードを入力すると処理が進んでいきます。
py3102$ sudo /home/cosmo/py3102/bin/python -m pip install jupyterlab
py3102$ sudo /home/cosmo/py3102/bin/python -m pip install streamlit
たまにタイムアウトのエラーが出る時がありますが、その際は何度かインストールをトライすれば、完遂できると思います。
ubuntu:python仮想環境で実行したプログラムをAndroidブラウザで使用する
jupyterlabをAndroidブラウザで使用する
jupyterlabの起動
作業ディレクトリを作成しておきます。
py3102$ cd ~
py3102$ mkdir workspace
コマンドを起動したディレクトリが起動時のrootディレクトリになるので、作業ディレクトリに移動して、jupyterlabを起動します。
py3102$ cd ~/workspace
py3102$ jupyter lab
表示されるURL+トークンをコピーします。
Androidのブラウザを起動し、URL+トークンをペーストして、URLを開けば、そのままjupyterlabを使用できます。
URLを「ホーム画面に追加」すれば、以降はショートカットから起動できます。
jupyterlabの基本的な操作については、こちらのリンクをご参考に頂ければと思います。
参考:termux(ubuntu)環境で実行したjupyterlabをandroidブラウザで使用する
jupyterlabの制限事項
機能拡張が少し不安定です。それ以外は文句無しなんですけど。。もし解決策を知ってる方がいれば、教えてもらえるとうれしいです^_^;
とはいえ、入力補完はtabを押せばできるので通常の利用に関しては問題無いと思います。
jupyterlabの停止
jupyterlabのブラウザのメニュー「file」から「Shut Down」を選択します。
また、サーバー起動中のターミナルがアクティブな状態で「Ctrl+c」で「y」を選択しても停止できます。
streamlitをAndroidブラウザで使用する
streamlitとは、逐次的に構築できるWebフレームワークです。ただ、今回はチュートリアルの実行のみとし、詳しい使い方については、恐縮ですが割愛させて頂きます^_^;
streamlitの起動(チュートリアルの実行)
py3102$ streamlit hello
表示されるURL+トークンをコピーします。
Androidのブラウザを起動し、URL+トークンをペーストして、URLを開きます。
とても引き出しの多い、魅力的なWebフレームワークだと考えています。
streamlitの停止
サーバー起動中のターミナルがアクティブな状態で「Ctrl+c」で、「y」を選択して停止します。
もっとstreamlitでのwebアプリ開発について学びたい方へのリンク
UDEMY : Steamlitを楽しく学ぶリンクvscodeの設定およびpython実行
「アプリケーション」→「開発」→「vscode」をクリックして起動します。
フォントサイズの設定
左下にある設定アイコンをクリックし、のキーワード検索から「font size」と入力すると、フォントサイズ関連の設定が抽出されてくるので、私の場合は大体「12」で設定しました。
テキスト入力だと、25行くらいのスペースになります。
vscodeでのpython仮想環境の利用方法
VNC接続は、rootユーザーからしかできないので、vscodeもrootユーザーということになりますため、作成したpython仮想環境を設定しておきます。
設定アイコンをクリックして、キーワード検索で「Venv Path」し、「python Venv Path」の項目に仮想環境への絶対パス「/home/<ユーザー名>/<仮想環境名>」を入力します。
同じく設定から、コマンドパレットをクリックして「python select interpreter」を検索して、python 3.10.2を選択することで、デフォルトの環境をpython仮想環境に設定できます。
vscode機能拡張の利用
使っている機能拡張はこんな感じです。
スクリーンショットに移ってないですが、vimも入れています^_^;
vscodeでのpython実行
実行ボタンから*.pyファイルの実行
ファイルを開いて、右上にある実行ボタンをクリックします。
ターミナルから*.pyファイルの実行
あまりないかもしれないですが、vscode上でメニューからターミナルを開き、仮想環境を開いてファイルを実行します。
root$ source /home/cosmo/py3102/bin/activate
(py3102) root$ python /home/cosmo/workspace/test.py
notebookの実行
notebookファイルを開いて、セルブロックの実行ボタンを押すか、を「Shift+Enter」で実行します。
すべて実行する場合は、全実行ボタンも用意されています。
vscode上で、*.pyファイルをnotebookファイルのように逐次実行する方法
vscode機能拡張を用いれば、jupyter notebookファイルも実行できますが、それだけでなく、*.pyファイルもnotebookファイルのような逐次実行が可能です。
具体的には、*.pyのコードに「# %%」を記載すると、それ以下のコードはnotebookのセルブロックと見做され「shift + enter」でセルブロックを実行できます。
一点注意する必要があるのは、notebookファイルと違い、実行結果がファイルに残らないところです。それを許容できるなら、*.pyファイルなのでコマンドからも実行できるし、そのままライブラリも作成できるので、vscodeをメインで使用するなら、この形式の方が便利かなと考えています。
まとめ
いかがでしたでしょうか。
Android端末という、とても身近なデバイスでもアプリケーションを作ったり、データを分析して物事の理解を深めるための環境を用意できることが分かったと思います。
もちろん、より本格的に厳密で複雑なことを実施するには、荷が勝ちすぎますが、それでも個人レベルでは、かなり使えるのではないかなと考えています。より大きな目的のためにも、その初動には耐えうるのでないでしょうか。
AIやアプリケーションなど、それと知らずに触れ合う機会はどんどん増えていくと思いますが、それらを使うだけでなく、作ることにも興味を持つ方が行動を起こすきっかけとなり、その方の自己表現における一助となれば幸いです。
Apendix 1:ユーザーコマンド表記の遷移のまとめ
$ # termux環境
root$ # ubuntu環境のrootユーザー
cosmo$ # ubuntu環境のユーザー
py3102$ # python仮想環境
(py3102) root$ # rootユーザーでのpython仮想環境(vscodeでの実行環境)
Apendix 2:AI、機械学習、統計解析に興味を持って下さった方への書籍リンク
発展的学びのため、プログラム実行実績のある書籍を、いくつか紹介させて頂ければと思います^_^;
書籍:アマゾンリンク
将棋の棋士である谷合廣紀先生の書籍「Pythonで理解する統計解析の基礎」です。ubuntu環境だけでなくTermux環境でもライブラリを追加することで、全てのプログラムが実行可能です^_^
ゼロつくシリーズも、ubuntu環境だけでなくTermux環境でも、全て実行可能なのですが、後半のプログラムでは、私のCosmo communicatorでの環境では、7時間以上掛かったものもあったので、コードを推考している際は、実行epoch数に注意が必要なプログラムもあります^_^;
Termux環境では、pytorchを用いる手前の2章までは実行可能でしたが、今回示したubuntu環境であれば、pytorchをインストールできるので、3章以降も実行可能だと考えています。
6章まで実行確認できました!
私のインストールしたgym==v0.25.1では、4章のMNISTのデータ形式が一部変更されていましたが、こちらは型を変更すれば問題無く実行できました。また、gym==v0.25.1ではBreakoutは消えていたので、7章の実行は試しておりません。gym==v0.21までは、存在したという情報もあるので、興味のある方は試していただければと思います^_^
尚、一部動画保存が上手くいかないところがありましたが、実行結果は得ることができます^_^;
解決できたら、改めて情報更新したいと思います。
楽天ルーム(書籍)
Apendix 3:ハードウェアに興味を持って下さった方へのリンク
キーボードは、ネットを介した人とのコミュニケーションに必要な入力デバイスとしては、緩やかにその役割を終えつつあるかもしれません。しかし、コンピュータとのコミュニケーションには、より深いところで繋がっていくために、依然として極めて重要な役割を担っていると考えています。
私は、ポケットサイズの小さなキーボード端末が大好きで、今回のブログの内容によって昔から思い描いていた環境をほぼ再現できて、とてもうれしく思っています。
Astroslide 5GやGeminiPDAだけでなく、他のキーボード端末も同士です^_^
端末:アマゾンリンク
もちろん、タブレットなどの普通のAndroid端末でも、十分楽しめると思います。
むしろ、多くの方にとっては、そっちの方が自然なのかもしれません^_^;
コメント