AndroidにNode-REDをインストールする

f:id:ueponx:20220203233943p:plain

タイトル通りの内容になります。こんなの以下のURLから作業すれば一発だろ?と考えていた時期が俺にもありました。

nodered.jp

f:id:ueponx:20220203220349p:plain

Androidにインストールしてみる

今回、インストールのターゲットとしたのはNexus7(2013)です。今となっては9年も前のハードウエアになるので、OSが大丈夫なのということも考えられるのですが、以前Nexus7Android11(厳密にいうならばLineage OS 18.1)を自己責任でインストールしていたものがあったのでそちらを使用しています。

参考

uepon.hatenadiary.com

このハードウエアに先程のURLの情報を使ってインストールしてみます。手順としては以下のようになります。

  1. GooglePlayストアからTermuxをインストールする
  2. インストールしたTermux上でNode-REDに必要になるようなパッケージをインストール
  3. node-redを起動
  4. Androidにインストール済のブラウザからNode-REDへアクセス

この手順でNode-REDのフローエディタを使うことができます。起動後は外部アクセスしなくても使用できる点はなかなかいいですね。 では早速やってみましょう。

1.Termuxをインストールする

ちなみにTermuxは、Androidの環境内にLinux的な実行環境を提供する端末エミュレーターアプリとなります。特に端末のRoot化などを行うことをせずそのまま使えるのが利点です。

ページには以下のように記載があります。

アプリストアのTermuxアプリを利用することで、簡単にAndoroidデバイス上でNode-REDを実行することができます。 このアプリはPlayストアから入手できます。

参考ドキュメントの情報通りGooglePlayストアに行ってアプリを検索し、インストールを行います。

f:id:ueponx:20220203221428p:plain

あとは、【インストール】ボタンをタッチすればOKです。特にエラーなどもなくインストールは終了します。 通常のアプリ同様にアイコンをタッチすれば起動ができます。ストア上で【開く】ボタンをタッチしてもOKです。

f:id:ueponx:20220203221943p:plain

2.インストールしたTermux上でNode-REDに必要になるようなパッケージをインストール

Termuxを起動すれば、ターミナルが開きます。ほぼLinuxと同様の環境になるので、ドキュメントに従いインストール作業を行っていくことになります。

$ apt update
$ apt upgrade
$ apt install coreutils nano nodejs
$ npm i -g --unsafe-perm node-red
$ node-red

しかし、apt updateコマンドを実行してもエラーが発生します。最初は使用していたAndroidのOSが厳密にはLineage OSであることに原因があると思い、いろいろと作業をしてました。また、aptコマンド以外でもpkgというコマンドでもパッケージのインストールができるので、そちらを使ったりもして、インストールまで行くことはできるようですが実際は茨の道になってしまいます。

aptコマンドが失敗する理由

実はドキュメントにも以下の様に記載はあるのですが、

Note : Node-REDチームはTermuxアプリケーションおよびその開発に何の関わりも持っていません。 現時点では動作していると言う以外に サポートを提供することはできません。

動作は保証されないような記載になっています。このあたりも怪しいのかなと思ってネットを検索すると、2021年頃からTermux上のaptpkgコマンドからエラーが発生するような情報がでていました。調べてみると、SDKの動作の変更と新しいGooglePlayポリシーによって、Termuxはストアでアップデートを受信しなくなり、代わりに、F-Droidからアプリケーションとアドオンをインストールする方針となったようです。

参考

github.com

Termux and its plugins are no longer updated on Google Play Store due to android 10 issues and have been deprecated. The last version released for Android >= 7 was v0.101. It is highly recommended to not install Termux apps from Play Store any more.

PlayストアからTermuxアプリをインストールしないことを強くお勧めします。

参考ページにも記載がありますがF-Droidもアプリストアのようなサービスになります。専用アプリもあり、そのアプリ経由でアプリのインストールも可能ですが、APKファイルをダウンロードしてインストールすることも可能です。

F-Droid - Free and Open Source Android App Repository

F-DroidからTermuxをインストールしていくことになりますが、F-Droidの専用アプリを使用せずAPKファイルでインストールします。

まずは事前にAndroid側でGoogle Chrome経由でアプリをインストールできる用に設定をします。

1.設定画面

f:id:ueponx:20220203224926p:plain

2.アプリと通知

f:id:ueponx:20220203225040p:plain

3.詳細設定

f:id:ueponx:20220203225221p:plain

4.特別なアプリアクセス

f:id:ueponx:20220203225319p:plain

5.不明なアプリのインストール

f:id:ueponx:20220203225505p:plain

6.使っているブラウザ(Chrome等)を選択

f:id:ueponx:20220203225618p:plain

6.「この提供元を許可する」をON

f:id:ueponx:20220203225810p:plain

最終的にGoogle Chromeでインストールが許可となっていれば設定完了です。 設定が不要になれば、このスイッチを「許可しない」にすれば元に戻ります。

f:id:ueponx:20220203230023p:plain

F-DroidからTermuxをインストール

あとはF-Droidにアクセスして、APKファイルをダウンロードしてダイアログ確認でインストールをすれば、アプリのインストール処理が行われます。

f-droid.org

f:id:ueponx:20220203230412p:plain

インストールするとアイコンが表示されるので、タッチしてTermuxを起動します。

f:id:ueponx:20220203231047p:plain

起動後は以下のようなターミナルが表示されます。あとはソフトウェアキーボードなどを使用してコマンドを入力していきます。

f:id:ueponx:20220203231049p:plain

あとはドキュメント通り以下のように入力していくことでNode-REDのインストールが行なえます。

$ apt update
$ apt upgrade
$ apt install coreutils nano nodejs
$ npm i -g --unsafe-perm node-red

途中エラーっぽい表示も表示されますが、大きな問題はないようです。

3. node-redを起動

インストールが完了したら、以下の様に実行しNode-REDを起動します。

$ node-red

4.Androidにインストール済のブラウザからNode-REDへアクセス

あとはGoogle Chromeなどからhttp://localhost:1880/ http://localhost:1880/

へアクセスすればブラウザ上にフローエディタが起動されます。

f:id:ueponx:20220203231657p:plain

さすがに解像度が低いため画面縦向きではワークスペースが狭いので横向きにします。

f:id:ueponx:20220203231756p:plain

動作を確かめる

あとは実験になりますが、簡単な実験をしてみます。 injectノードdebugノードを使用して、デプロイして表示が出るか確認してみました。

f:id:ueponx:20220203231800p:plain

うまく動作しているようです。どれぐらいの速度で動作してくれるのかはまだわかりませんが、Androidでも無事に処理を行ってくれそうです。

おわりに

今回はAndroidタブレットNode-REDをインストールしてみました。ドキュメントの情報で簡単にインストールができるかなと思っていたのですが、割と時間がかかってしまいました。

ただ、今回インストールしたTermuxLinuxターミナルのような動きをしてくれるので簡易なWebサーバのような動きをしてもらうようなことも可能なのかなと思いました。純粋にNode.jspythonも動作可能でしたので、色々面白いこともできるのではないでしょうか。

/* -----codeの行番号----- */