開発している最中に、ミーティング・子供のお迎え・移動など様々な要因で中断しないといけないことがあります。そんな時、デスクから離れても使えるモバイル環境で指示を継続したいものです。モバイルから AI エージェントへの指示を継続できれば、修正の様子を確認したり目を離している時間に Lint / Test を走らせておいたりデプロイを検証することもできます。
本記事では、以下のようにスマートフォン (もしくはタブレット) からセキュアにターミナルへ接続し、 AI エージェントとの対話を継続する方法を紹介します。
この環境を構築するメリットは 3 点です。
- デスクでの開発作業が中断しても、モバイルで指示を継続できスキマ時間を効果的に使える
- リッチな CLI ツールの機能と表現力を失わず作業が継続できる
- セキュアなネットワークでモバイル端末を開発環境へ接続できる
開発環境を EC2 に据える場合、CDK でデプロイできるコードを公開しています。セットアップのお役に立てばと。
では、構築していきましょう!
シームレスな開発環境のアーキテクチャ
今回目指したのは据え置きでもモバイルでも遊べる某人気ゲームハードの体験でした。すなわち、デスクトップで開発しながらもサッと携帯でき、スキマ時間で開発を継続できる状態です。全体のアーキテクチャを次に示します。
開発環境として EC2 インスタンスを使用しています。ただ、後述する Tailscale を使用すればデスクトップ PC 側にもつなげると思います。私は手元のデスクトップで開発していると特に Node 関係の挙動とファイルサイズが重すぎて水族館のマンボウかってぐらいスローな動きかつ突然死するのも似ている始末なのでリモートのインスタンスを開発に使っています。
セキュアなネットワークの実現 : Tailscale
Tailscale は簡単にデバイス間の VPN を構築できるサービスです。例えば、自分のモバイル端末、 PC、開発用インスタンス間のメッシュ接続をセキュアに確立できます。AWS だと Transit Gateway か VPC Peering がイメージに近いですが、これらはネットワーク間の接続を実現するサービスで個別端末・インスタンス同士のピア接続はサポートしません。
VPN の実装には最新の WireGuard が使用されており安全かつ高速、それでいてモバイル含めたマルチプラットフォームで利用可能でしかも設定が簡単という非常に優れたサービスです (そんなうまい話が・・・と思いあれこれ調べましたが特に弱点がなかった)。
通常、AWS インスタンスへ安全にアクセスする場合 SSH のポートをふさいで AWS Systems Manager Session Manager を使用するのが定石でしたが、モバイル端末に aws cli が入れられるわけもなく安全性を維持した接続の実現手段に難儀していましたが、Tailscale により解決することが出来ました。
設定方法は、1) Tailscale のアカウントを作成する、2) 接続先環境で Tailscale をインストールしネットワークに参加する、の 2 点のみです。
Tailscale はモバイルアプリがあるのでインストールとアカウントの作成を行います。
次に、モバイルと接続する開発環境 (EC2) でセットアップを行います。Tailscale のインストールと SSH を有効化します。
# Install Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Ensure SSH is enabled and configured
sudo systemctl enable ssh
sudo systemctl start ssh
# Create SSH directory if it doesn't exist
mkdir -p ~/.ssh
chmod 700 ~/.ssh
インストール後、Tailscale のネットワークに参加します。tailscale up を実行すると、URL へアクセスし認証するよう求められるので認証を行います。
sudo tailscale up --hostname my-development-env
-
--hostnameをつけておくろ複数端末がある時見分けやすくなります -
--sshは、開発環境側で鍵を用意せず Tailscale へ任せる場合に指定します。Tailscale はネットワークに参加している Node を把握しているため、--ssh指定時は Tailscale node keys を用い Trailscale の SSH Server へ接続し、ACL に則りターゲット端末へ接続します (多分 : Tailscale SSH)- ACL は、デフォルトで認証を要求します。Termius を含めこの認証に対応できないと Authentication でエラーになるため、回避するにはブラウザからアクセス可能な Tailscale の管理画面で ACL / Action の設定を
acceptにします。これはセキュリティの堅牢さを若干下げるため気になる場合は KeyPair を使った方が良いです
- ACL は、デフォルトで認証を要求します。Termius を含めこの認証に対応できないと Authentication でエラーになるため、回避するにはブラウザからアクセス可能な Tailscale の管理画面で ACL / Action の設定を
参加後、tailscale ip で自身の ip を確認します。
tailscale ip -4
こちらで表示される 100.x.x.x といった割り当てられた ip へ接続すれば OK です。接続するのに下記のモバイルアプリケーションを使用します。
モバイルのターミナル環境 : Termius
モバイルから ssh できてターミナルを扱えるアプリはいくつかあるのですが、今回はメジャーな Termius を使いました。冒頭の画面は Termius のものです。
インストール後、設定したホスト名で ssh 接続を行います。キーを使用する場合は接続時にキーを指定します (端末から転送などしてモバイルに持っていく)。
上手く接続できれば、開発環境のターミナルに接続できるはずです。あとは Claude Code でも Kiro でもいつもと同じように利用できます。モバイルだと逐一の確認が手間なので、モバイル用のエージェントを定義しておいて一定確認なしで動くようにしておいてもよいと思います。
おわりに
今回は AI エージェントとの対話を止めないためのモバイル環境を AWS / Tailscale / Termius で構築しました。AI エージェントに対する人間のコントロールが必要な局面に応じて使用する環境も変化する印象で、下図のように PC でガッツリ作業、モバイルで指示だし/修正、エージェントにある程度お任せし自走してもらう 3 種類ぐらいの使い分けはあるかなと感じています。
検証している時に AWS Security Agent を使ってましたが、これは人間のコントロールが弱いパターンです。今回はコントロールが強⇒中のパターンでしたが、弱⇒中のパターンでエージェントの自律的な作業に少しだけ介入するにもモバイルは使い勝手が良いと思います。
AI エージェントライフの参考になれば幸いです!



