スマホだけでClaude Codeが動いた ― AndroidをTermuxでPC開発環境に変える方法

スマホだけでClaude Codeが動いた ― AndroidをTermuxでPC開発環境に変える方法

電車の中で急にコードを直したくなった。

でもノートPCは家に置いてきた…そんな経験、ないだろうか。

今回、AIコーディングツール「Claude Code」(プログラムの読み書きや実行をAIに任せられる、コマンドライン=文字入力で操作するタイプの開発ツール)を、手持ちのAndroidスマホだけで動かせるようにしてみた。

しかもPCと同じGitHubリポジトリ(コードの変更履歴を保存・共有する仕組み)を共有しながら、である。

この記事では、なぜそれが可能なのか、実際にどう構築したのか、そしてやってみて分かった注意点まで、非エンジニアの視点でまとめてみる。

iPhoneではできないのに、なぜAndroidではできたのか

まず前提として、Claude Code自体はWindowsやMac、Linuxなどのパソコン向けに作られたツールで、そのままAndroidにインストールすることはできない。

そこで使ったのが「Termux」というアプリ。

スマホの中に、文字だけで操作する黒い画面(ターミナルと呼ばれる)を開いて、そこにLinuxという別のOSの環境を丸ごと構築できるアプリだ。

いわば、スマホの中に小さなパソコンをもう一台仕込むようなイメージ。

この仮想環境の中でNode.js(プログラムを動かす基盤)やClaude Codeをインストールすれば、スマホの上でPCと同じ開発作業ができるようになる。

ちなみにこの構成、iPhoneでは作れないらしい。

外部の複数の情報源によれば、AppleはOSの制約(コード実行制限やパッケージの自由なインストール禁止など)によりTermuxのような仕組みそのものが動かせないとされている。

今回スマホでの開発が実現できたのは、Androidという土台があってこそだった。

Android端末上でTermuxのターミナルが起動し、スマホの中に小さなLinux環境が構築されている様子のイラスト

スマホで開発できると何が嬉しいのか

実はこのメリット、整理してみるまで自分でもうまく言語化できていなかった😅。

比較対象を「ブラウザのチャット型AI(ChatGPTなど)」と「クラウド上のサンドボックスで動くAIエージェント」の2つに分けて考えると分かりやすい。

チャット型AIと比べた利点は3つある。

1つ目は、コードを毎回貼り付け直さなくていいこと。

ローカル(手元の環境)で動くClaude Codeは実際のファイルを直接読み書きするので、再説明の手間がない。

2つ目は、提案されるだけじゃなくて実際に実行できること。

コマンドを動かして、実データに対してその場で検証できる。

3つ目は、作業を中断しても文脈がゼロに戻らないこと。

リポジトリ自体がAIにとっての「記憶」になるので、数日空けてもすぐ続きから再開できる。

クラウドサンドボックス型のAIエージェントと比べた利点も3つある。

既存の環境や秘密情報にそのままアクセスできること、追加のコンピュート課金が発生せずサブスクの定額内で完結すること、そしてプロジェクトの実体がただのフォルダとGitリポジトリだから、AIツールを乗り換えても移行作業が要らないこと(特定のサービスに縛られない)だ。

さらに共通の利点として、Gitの履歴を使えばAIの失敗をすぐ元に戻せる防御力があるし、秘密鍵や本番データベースの認証情報をクラウドに渡さずに済むという安心感もある。

ここで大事なのは、これらの利点自体はPC版のClaude Codeでもともと備わっているという点。

今回の話の本質は「その利点をスマホ単体でも享受できるようにした」ことにある。

つまり、開発の質を落とさずに、開発できる場所の制約だけを外せた、ということだ。

項目チャット型AIクラウドサンドボックス型AIローカル実行(Termux)
再説明の要否毎回コードを貼り直す必要あり不要(環境に接続済み)不要(実ファイルを直接操作)
実行環境なし(提案のみ)あり(クラウド上)あり(手元のスマホ内)
中断・再開のコスト文脈が消えやすいセッション次第で消えることもリポジトリが記憶代わりで低い
既存シークレットへのアクセス基本不可別途連携作業が必要そのままアクセス可能
追加課金の有無プランの範囲内コンピュート従量課金がかかることが多いサブスク定額内で完結
ベンダーロックインありややありなし(フォルダとGitのみ)
ロールバックのしやすさ低い中程度高い(Git履歴で即戻せる)
情報漏洩リスク貼り付け時のみクラウドに秘密情報が渡る可能性手元で完結し低い

具体的な構築手順(Termuxの導入方法、proot-distroでのLinux環境構築、エイリアス設定など)は、それだけで1本の記事になるボリュームがある。

今回は「なぜ・どういう仕組みで動くのか」の理解を優先したいので、手順のがっつりした解説は近いうちに別記事でやろうと思う。

ここでは、組んでみて見えてきたもう一段深い話を続ける。

PCとスマホを橋渡しする自動保存の仕組み

スマホ側とPC側それぞれのTermux・VS Code・Claude AIが、中央のGitHub(中央リポジトリ)とpush/pullでコードを同期し合っている構成図

PC側では、Claude Codeの「hooks」という機能(特定のタイミングで自動的に別のコマンドを実行させる仕組み)を使って、こんな自動保存の仕組みを作ってある。

まずClaude Code起動時に自動でgit pull(GitHub=クラウド上に置いてある最新のプロジェクトデータを取ってきて、手元に反映すること)を行う。

そしてClaudeがファイルを修正するたびに、自動でgit commit(「ここまで直しました」という変更履歴を記録すること)してから、そのままgit push(記録した変更をGitHubに送り届けて、クラウド側にも同じ内容を保存すること)する。

つまりPC側は、AIが手を加えるたびに、勝手に記録して勝手にクラウドへ送り出してくれる状態になっている。

GitHubはオンライン上のサービスなので、こうしてPC側で作業するたびにpushしておけば、プロジェクトのデータは常に最新の状態でクラウド上に保たれる。

しかも「オンラインの共有データ」だから、PCだけでなくスマホなど別の端末からも同じデータを見に行ける――これがこの仕組みの肝だ(上の図で言うと、真ん中のGitHubを挟んでPCとスマホがpush/pullでやり取りしている、あの構図そのもの)。

スマホ側もPC側と同じ考え方で組んである。

作業を始める前にGitHub(クラウド)から最新のデータをpull(取得)してきて、コードの修正が一区切りついたら、その変更をまとめてpush(送信・保存)する、という流れだ。

PC側との違いは自動化の度合いで、PCは「起動時に自動pull」「修正のたびに自動commit&push」までできているのに対して、スマホ側は正直まだそこまで仕上がっていない。

今のところ、スマホ側の自動pull/pushはうまく動いてくれていない…。

ここがちゃんと動くようになったら、またこの記事を更新しようと思う。

実際にやってみて分かった注意点

良いことばかりではなかった😔。

まずバッテリー消費がいつもより明らかに多かった。

次に、Termuxをバックグラウンドに回してしばらく放置すると、再び開いたときに操作不能なほどフリーズしていることが多くて、その場合はTermuxごと立ち上げ直す必要があった。

幸い、バックグラウンドで走らせていた処理自体は完了していることが多く、処理そのものが止まっているわけではなさそうだった。

この辺は無理やり仮想環境で動かしていることを考えれば仕方がないかもしれない。

この体験、自分だけの話じゃないみたいだ。

外部の情報でも、Termuxで何もしていないセッションを1つバックグラウンドに置いておくだけでバッテリー消費が実測で8割相当に達したという報告や、実際にモバイル開発を実践しているエンジニアが「バッテリー消費の激しさ」と「複数ファイルの差分確認がスマホの画面では見づらいので、最終的なコードレビューはPC画面で行う」という折衷案を取っているという報告が見つかった。

スマホでの開発は「その場で書き始める・投げっぱなしにしない」用途には向いているけど、じっくり見比べながら仕上げる作業には今のところPCの画面の広さに分がある、というのが率直な感触。

今回の話は、ガッツリ開発に使用するというよりは外出中に少し暇ができた時や、用事中の片手間でするといったものではあるので、バッテリー問題は特に問題はなさそう。

なお、TermuxをPlayストア版で使うかF-Droid版で使うかについては、外部の情報でも意見が割れていた。

F-Droid版を推奨する声が多い一方で、Playストア版も現在はアップデートされて問題が少なくなっているという記述も見られた。

今回はPlayストア版で目立った不具合なく構築できたけど、これから試す人は両方の選択肢があることを知っておくとよさそう。

注意点実際に体験した内容外部情報での裏付け・対策
バッテリー消費通常より明らかに早く減った何もしていないTermuxセッション1つでも実測で8割相当消費したとの報告あり
バックグラウンドのフリーズ放置後に再度開くと操作不能になることが多い(処理自体は完了済みのことが多い)フリーズ時はTermuxごと再起動するのが実質的な対処法として報告されている
Termuxの配布元(Playストア版/F-Droid版)今回はPlayストア版で目立った不具合なく構築できたF-Droid版を推奨する声が多い一方、Playストア版も改善が進んでいるとの記述もあり、意見が分かれている

バッテリー残量が減っていくスマートフォンと、フリーズして固まったターミナル画面を並べたイラスト

もう一つの流儀 ― リモート接続型という選択肢

今回組んだのは、スマホの中だけで開発が完結する「ローカル完結型」の構成。

一方で、Claude Codeには公式の「Remote Control」機能のように、PCやクラウド上で動かしているセッションにスマホの専用アプリから接続する「リモート接続型」という発想もある。

tmux(接続が切れてもセッションを維持し続ける仕組み)とTailscale(離れた端末同士を安全につなぐ仮想ネットワーク)を組み合わせて、PC側でClaude Codeを常駐させておき、スマホ側はTermuxやSSHクライアントアプリから操作端末として繋ぐだけ、という構成も存在する。

ちなみにこの方式なら、Termuxが使えないiPhoneでもBlinkやPromptといった別のSSHクライアントアプリで代替できるとされている。

どちらが優れているというより、目的の違いだと思う。

オフラインでも手元だけで完結させたいなら今回のローカル完結型、常時起動しているPCやサーバーの力をそのまま借りたいならリモート接続型、という使い分けになりそうだ。

このリモート接続型の場合は、pcを常時起動し、ネットワークにつながっている必要がある。

筆者の場合は、pcをそもそも持ち運んでいたり、pcを起動し続ける手間や電気代を考えてリモート接続型は取り入れなかった。

スマートフォンから2つの方向へ矢印が伸び、Termux内で完結する開発とPC・クラウドのセッションへのリモート接続という2つの流儀を対比したイラスト

まとめ

Androidスマホの中にLinux環境を作って、Claude Codeを動かし、GitHubを介してPCと行き来しながら開発する。

実際にやってみると、バッテリー消費やバックグラウンドのフリーズといった付き合い方のコツは必要だったものの、致命的な壁にはぶつからず、思いのほかあっさり動いてしまった😳。

スマホは「見るだけの端末」から「その場で手を動かせる端末」に変わる。

次回は、今回あえて省略した具体的な構築手順(Termuxの導入からエイリアス設定、hooksの書き換えまで)を、実際に手を動かせる形でがっつり解説する予定だ。

次に電車の中で急にコードを直したくなったときは、ノートPCを忘れても大丈夫かもしれない。

← 一覧へ戻る
ガチャポイ|あなたのガチャで、収益化。オリジナル筐体作成・オリジナル演出作成。無料で作成する。※収益化には会員登録が必要です