スマホで開発環境構築

全くの私事ですが、最近Googleから発売されたPixel3aを購入しました。
実はスマートフォンに簡易的な開発環境を構築することができるのはご存知でしょうか。

手元にPCが無い!けどソースコードを見たい、書きたい、コンパイルしたいという
変態ニッチなケースに対して、一部ですがアプリを紹介したいと思います。

※「開発者モード」を除き、いずれも個人的に利用したものになります。仕事で使えるかについては、セキュリティなどの社内の決まりをよく確認しましょう。

 
開発者モード

Androidには、開発者モードがあります。
有効にすると、以下のような開発者向けの表示や設定ができます。
・USBデバッグ(開発用PCからアプリインストールやログ取得ができるようになる)
・通信設定(WiFi詳細ログ、モバイルデータ通信を常にON)
BlueTooth設定
・タップ位置の表示
・画面描画の詳細表示(画面更新時に点滅、アニメーション設定)
・GPUレンダリング設定
・アプリ設定(アクティビティ保持OFF)

やり方は設定画面の「ビルド番号」を連打するだけです(自己責任で)。

qiita.com

sp7pc.com


AIDE

play.google.com

Android上でAndroidアプリが作れる開発者向け統合環境アプリです。

利点
JavaコンソールアプリやAndroidアプリが作成可能
・コード補完が優秀
・GitやDropBoxにあるソースと連携可能
・UIのレイアウトエディタなども具備

弱点
Xperiaと相性が悪く、端末によってはコンパイルできなくなることもあります
・昨今Android開発で推奨されるKotolinは非対応
アノテーションプロセッサが対応していないので、RealmやLombokが使えない


Pydroid

play.google.com

Android上でのPython統合開発環境

利点
・エディタ内蔵。シンタックスハイライトもお手の物。
・パッケージ管理ソフトも内蔵。pipもUIを通して実行できる。

弱点
・インストールに失敗するライブラリもある(Pydroidが対応していない?)


CodeAnywhere

play.google.com

オンライン開発環境CodeAnywhereへアクセスするアプリです。
無料枠であれば、一時的に開発用コンテナ(Dockerからの仮想マシン)を借りて
Webサーバを立ち上げることができます(恒久的に立ち上げる場合は有料)

利点
・上記に挙げたような疑似環境ではなく、ちゃんとLinux環境で動作させることができる

弱点
スマホで作業するには画面が狭い、リモートなので重たい
・オンライン開発環境なので、モバイルデータ通信の容量に注意
・無料枠で開発するならばコンテナの生存期間が短く、再起動にも時間がかかる


Termux

play.google.com

Android上でLinux環境を構築できます。
Android上のシェルにアクセスして、BusyBoxのコマンドを提供しているつくりのようです。
node.jsやpythonの環境を作ることができました。

利点
・apt-getやpkgコマンドが利用可能なので、必要なコマンドを追加可能
・SDカードなどでコマンドを叩くことができる

弱点
・SDカードの制約でシンボリックリンク(ハードリンクも)が作成できない。
 (内部でシンボリックリンクを使ったプログラムは使用できない)
・pkg/aptのarchitechtureはarm,archlinuxになっているようで、
 X86でしか提供されていないライブラリはインストールできなかったです
 (libsassはインストールできなかった(ソースからも試みたが駄目だった))


GoogleRemoteDesktop

chrome.google.com

Googleアカウントを通してPCにリモートログインできるモバイルアプリです。
ChromeChromeプラグインさえあれば容易に環境構築できます。

(あまりに簡単にリモート環境が構築できてしまうので、利用する際はセキュリティなどによく注意しましょう)

利点
・比較的容易にリモート環境を構築できます
・ちょっとPCの画面を確認したいときなどに便利

弱点
スマホで作業するには画面が狭い
・通信遅延がある(もさもさする)
・オンラインなので、モバイルデータ通信の容量に注意


Termius

termius.com

スマホssh通信ができるアプリです。
PCにsshログインしてvimエディタで作業できます。

 利点
・ちゃんと環境さえ整えておけば情報系技術者であれば、これでだいたいなんでもできます。

弱点
CUIオンリーなので、UIを使った開発はあきらめざるを得ない
 (VisualStudioCodeとかeclipseとかAndroidStudioとか使えない)
・viコマンドを覚える学習コストもかかる

 

Realmやアノテーション技術を使ったライブラリが出そろう前までは「AIDE」をずっと使っていました。非常に優秀な開発アプリだったので、今後のアップデートに期待です。

いまは、スマホで完結するような簡単な作業やスクリプト程度であれば「Termux」、
「Terminus」でsshログインで作業をし、UIがあるアプリなどで作業をする場合があれば「GoogleRemoteDesktop」を使うという使い分けをしています。

PCで開発するのが一番早いですけど、あくまで臨時環境のはなしでした。