ハクソク

世界を動かす技術を、日本語で。

クラウドコード・オン・ザ・ゴー

概要

このセットアップは、iPhoneTermius を使い、Claude CodeエージェントをクラウドVM上で並列実行する方法の紹介。 Tailscaleによるセキュアなアクセス、push通知での非同期開発を実現。 VMのコスト管理セキュリティも重視。 tmuxmoshでセッション永続化。 スマホ一台で本格的な開発が可能。

スマホだけで並列Claude Codeエージェント運用

  • iPhone上のTermiusアプリで、SSHmoshを利用したクラウド開発環境
  • Tailscale VPN経由でVultr VMへ安全にアクセス
  • Claude Codeエージェントを最大6つ並列稼働
  • PreToolUse hookを使い、Claudeからの入力要求をPoke webhook経由でスマホ通知
  • タスク開始→スマホをしまう→Claudeからの通知→入力→継続、という非同期開発ループ

インフラ構成

  • Vultr VM(Silicon Valleyリージョン、vhf-8c-32gb、$0.29/時、作業時のみ課金)
    • Tailscale専用接続、パブリックSSHなし
    • cloud firewallでTailscaleのみ許可、nftablesfail2banで多層防御
    • vm-start/vm-stopスクリプトでVM管理、iOSショートカットでAPI直接操作も可能

モバイル端末での開発体験

  • TermiusSSHmoshを利用
    • moshはWiFi/セルラー切替やスリープでも接続維持
    • git認証時のみ通常SSH使用
  • tmuxでセッション永続化
    • ログイン時に自動でtmuxへアタッチ(.zshrc設定)
    • 各Claudeエージェントをtmuxウィンドウで分離運用
    • スマホキーボードでも快適なウィンドウ操作

プッシュ通知による非同期開発

  • Claude CodeAskUserQuestionトリガーでpoke-notify.shが実行され、Poke webhookへPOST
  • スマホに通知が届き、質問内容を即確認・返答可能
  • ターミナルを常時監視せずに済み、外出先や隙間時間で開発継続

セキュリティ・コスト管理

  • Claude Codeはパーミッシブモード、VMは完全隔離
  • 本番システムや重要情報にはアクセス不可
  • VMコストは$0.29/時、上限も明確で暴走時も損失限定

並列開発ワークフロー

  • git worktreeで複数機能開発を並行実施
    • 各ブランチは独立したディレクトリ・tmuxウィンドウ・Claudeエージェントで管理
    • ポート割当はブランチ名のハッシュ値から自動決定、競合なし
  • 6エージェント・6機能・1台のスマホで効率的な開発

この仕組みが実現すること

  • カフェ待ち時間移動中でもPRレビューやリファクタリングが可能
  • タスクを開始し、他の作業や休憩中に通知で対応、開発が生活の隙間に溶け込む
  • Claude CodeVultrTailscaleTermiusmoshtmuxPokeの連携で実現

構成要素一覧

| ツール | 目的 | | ------------- | ----------------------------------------- | | Vultr | クラウドVM(従量課金) | | Tailscale | プライベートネットワーク・安全なアクセス | | Termius | iOS/Android SSHクライアント | | mosh | ネットワーク変化に強いシェル | | tmux | セッション永続化 | | Poke | webhook経由のプッシュ通知 | | Claude Code | 実際の開発作業 |

Claude Codeエージェント環境の構築

  • Claude CodeにVultr APIキーghコマンドの権限を与え、指示するだけでこの開発環境が1セッションで構築可能
  • 以後、スマホだけで本格的なクラウド開発が可能

Hackerたちの意見

これはかなり洗練されたセットアップだね。特にTailscaleを使ってるところが気に入ってる。私はもっとシンプルだけど柔軟性がない代替手段を使ってるけどね。ClaudeのiPhoneアプリを使って、"Everything"っていう環境を作って、ウェブ用のClaude Code(AnthropicのCodex Cloud版)を動かしてる。これだと全ネットワークアクセスができるんだ。ただ、プライベートなソースコードやAPIキー、その他の秘密が含まれる環境変数を扱う場合は、ちょっと危険かも。でも、私のプロジェクトはほとんどオープンソースか個人的なもので、ソースコードが漏れてもあんまり気にしない。Anthropicは私のために、アプリを通じて開始したセッションを処理するために、約21GBのVMをオンデマンドで動かしてくれるんだ。VMの時間に追加料金がかからないのもいいね。私はよく2〜3個の別々のClaude Codeのウェブセッションを同時に動かしてることが多くて、スマホからのプロンプトで始めることもあるし、犬の散歩中に始めることもある。すごくうまく機能してるよ!
Claude Codeウェブはプランニングモードがないから好きじゃないな。結果がClaude Code CLIと比べてあまり良くないことが多い。今のセットアップは、Tailscale + Terminus(iPad) + 自宅のマシン(コードベース)だよ。次は複数の機能を同時に作業する方法を考えないと。
superconductor.devをチェックしてみて(私が作ってるんだ)、ライブアプリプレビューや、ドッカーインドッカー機能、1つのモバイルアプリで複数のエージェントなどが欲しいなら。
「ウェブサンドボックス」タイプのセットアップから価値を得ている人がいるのには驚いた。ソースコードにアクセスできないのに、みんな本当にそんなにLLMに自信を持っているの? ソースコードをチェックしたり、ローカルのインスタンスとやり取りする能力を完全に手放すなんて。理想的ではあるけど、今そんなに自信があるとは思わなかった。
パンドラの箱が開いちゃったね。ホワイトカラーの労働者が24/7働く世界に向かってる。皿を洗ってる時も、犬を散歩させてる時も、スーパーに運転してる時も、子供を学校から迎えに行く時も関係ない。常にスマホを持ってて、LLMと話し続けて、疑わしい機能を提供したり、意味のない製品を作ったりして、子供たちが成長する環境を壊してしまう。私はヘビーユーザーのLLMだけど、毎日プロフェッショナルにもプライベートにも非常に役立ってる。ただ、これが長期的にどうなるか考えると、認知的不協和を感じて本当に辛い。
LLMは人間をうまく飼いならしたね。
メールが普及した時も同じことを言ってたのかな?それともSlackの時?
それは、クソみたいなマネージャーのせいじゃない?Claude Code "On-the-Go"があってもなくても、24/7働かせる方法を見つけると思うよ。
ソフトウェアの労働組織について、LLMの導入初期にこんなに少ない議論があるのは信じられないよ。ソフトウェアエンジニアたちは、これらのシステムの開発をコントロールしながら労働を組織する代わりに、給料や雇用が減ることに完全に諦めているみたい。どうしてそうなるのか全然わからない。人々はこの技術がすごく変革的だと思っていて、だからこそ急いで取り組むのが最も道徳的だと考えているのかな? でも、そんな証拠はあまり見当たらないし、未来の約束に過ぎないと思う(特に利益とコストの比率に関して)。この技術を使うときは、興味があまりないテーマについてのエデュテインメント的な好奇心からなんだ。便利で魅力的だけど、実際には必要ではない。今のところ、この技術が本当に変革的だとは思えないし、みんながこれらのツールを使って自分の生産性を正確に測ることができていないと思う。でも、この技術がずっとこのままでいるとは思えないし、必ず人を置き換えたり、アメリカで唯一経済的に健全な層であるホワイトカラーの労働条件を悪化させることになるだろうね。
> ホワイトカラーの労働者は24/7働くことになる。行く先には「ホワイトカラーの労働者」はもういない。ホワイトカラーのClaudeエージェントだけだ。
僕はリモートで働いてる社員で、残業なんて絶対にしないんだ。個人的なプロジェクトにはClaudeコードを使ってて、カフェやちょっとした隙間時間に触ってる。自分の生活の境界をしっかり作ることができれば、どんなネガティブなトレンドにも振り回されずに済むよ。
この技術は解放的であるべきで、みんなが同じ生活水準を保ちながら、もっと少ない時間で働けるようにしてくれるはず。私たちはインターネットの全体を作り上げることで、その発展に貢献してきたんだから、これがなければ立ち上げもできなかった。期待できないのは、資本の所有者だけの利益のために整えられたシステムの中で生きているからで、これが変えられない状態だと信じ込まされているからなんだ。
これは完全に幻想だね。もしLLMがここまで進化したら、ほぼすべての業界で革命が起きるはずだし、社会も根本的に変わるだろう。でも、LLMはまだそこまで行ってないから、パンドラの箱があるかどうかも怪しいし、ましてや開けたわけでもないと思う。
答えは境界だよ。もし仕事時間外に急ぎじゃないメールが来たら、仕事時間中に返事する。これって全然変わらないよ。燃え尽きた労働者は生産性が低いから、みんなにとってウィンウィンだね。
> 皿を洗ってる時も、犬の散歩中も、スーパーに向かう車の中でも、子供を学校から迎えに行く時も関係ない。いつでもスマホでLLMと話してるし、疑わしい機能を提供して、意味のない製品を作ってる。そうすることで、子供たちが育つ環境を壊してるんだ。継続的デリバリーについても似たような批判を聞いたことがある。ある側面では、変更を出すのに何ヶ月も待たされた人たちが、今では比較的早く出せるようになった。一方で、誰かが真夜中に変更を押すことになる。10年経った今、実際に変更がそのまま本番に行くような、スケールでの継続的デリバリーをやってる会社で働いたことはない。要するに、人間が関わるのが一番だし、常に自動化のコストと参入障壁のバランスを取ることが大事なんだと思う。もしこれが実際に広がって、もっと多くのエンジニアに受け入れられるようになったら、似たような道を辿るだろうね。長い言い方をすると、君がチキンリトルだとは思わないけど、まだ袋に息を吹き込むのは早いよ。
スマホで長いメッセージを打つのが好きじゃないから、このワークフローはクールに聞こえるけど私には合わないな。今のセットアップは、CCが私の入力を必要とする時に動くClaude Codeのフックを持ってて、それが私のHome Assistantを使ってスマホにプッシュ通知を送るんだ。そしたら、パソコンに戻って作業を続ける。このやり方はまあまあうまくいってるけど、小さなメッセージやレビューコメントには隙間がある。AnthropicがClaudeモバイルアプリがClaude Code(デスクトップアプリじゃなくて)をミラーリングして、変更の差分を見たりコマンドを送ったりできる機能を出してくれるのを待ってる。これを使って、外出中に短いコマンドやプロンプトで会話を進められたら、パソコンに戻った時に重要なフィードバックに集中して、すぐにキーボードでメモできるんだ。
同じような仕組みを探してたんだけど、完璧ではないけどtmux+ttydを使うことができるよ。ttydを使うと、ターミナルをhttp経由で共有できるんだ。これでスマホのブラウザ(と音声認識)を使えるよ。
長いメッセージをスマホで打つのが嫌だから、どのAIプロバイダーでも高品質な文字起こしをしてくれるキーボードを使ってるよ。デバイス上のSiriやGoogleの音声認識よりずっと良いよ。 https://github.com/DevEmperor/Dictate
今のスマホは確かにイマイチだけど、もしかしたらこの状況がきっかけで、ちゃんとしたキーボード付きのPDAが復活するかも?それか、https://gpdstore.net が作ってるようなサブコンパクトなノートパソコンとか。ポケットに入るくらい小さいし(大きめのポケットが必要だけど)、実際に使えるキーボードもあるし、折りたためるデュアルスクリーンのデバイスもあるんだよ。
理にかなってるね。最近、会社のために似たようなものを作ったばかりだよ :) SSH経由でClaudeコードに画像をペーストできるようにする調整を加えたんだ。仕組みはこうだよ:PTYインターセプション:SSHプロセスをラップする擬似端末(PTY)を作成して、キーボードとリモートシェルの間に「中間者」として座らせる。ブラケットペースト検出:stdinを監視して「ブラケットペースト」シーケンス(Cmd+Vやファイルのドラッグ&ドロップ時に端末が送る制御コード)を検出する。「フック」:ペーストが発生すると、実行を一時停止してテキストをローカルのmacOSファイルパスでスキャンする。自動同期:ローカルパスが見つかると、そのファイルをリモートサーバーに即座に同期(提供されたSSHキーを使用)する。透過的フォワーディング:同期が完了すると、元のテキストをシェルに転送する。ローカルのFinderからリモートSSHセッションにファイルをドラッグ&ドロップすると、そのファイルがコマンドラインにパスが表示される前に自動的にサーバーにアップロードされる。コピー&ペーストやスクリーンショットでも動作するよ。
それはいいね。でも、Claudeが何かを間違えたり、何かをできなかったり、プロジェクトに追加した千行のコードをレビューしなきゃならないときはどうなるの? 完全にテストや品質管理なしの雰囲気で作ったサイドプロジェクトじゃない限りね。これで何が作れるのかちょっと興味がある。なんか、雑でメンテナンス不可能なコードの山を作る方法に見えるんだけど。
似たようなことに取り組んでるよ: https://github.com/shepherdjerred/monorepo/tree/main/package... 基本的には、どこかのマシンでサーバーを立てる感じ。セッションはDockerコンテナ、K8sポッド、またはZellij(tmuxに似たアプリ)を使って作成される。できることは: - Docker attachを使ってセッションに直接接続(TUI経由で内蔵)。普通のClaudeコードの体験ができるけど、マルチプレックスされてる。スイッチャー/UIはClaudeの状態やPR(プッシュ、マージの競合、CIの状態、レビューの状態など)を表示する。 - ウェブUIを通じてセッションを管理。ブラウザから直接Claudeコードに接続できる。通常のClaudeコードのターミナルやネイティブチャットビューにアクセスできる。 - アプリを通じてセッションを管理。ネイティブチャットビューにアクセスできる。Gitワークツリーとプロキシを使って隔離を実現しているから、コンテナにはゼロのクレデンシャルしかアクセスできない(コンテナ内にClaudeコードのクレデンシャルすらない)。これで、すべての権限モードをバイパスしてより安全に使える。これは、ClaudeコードのWeb版よりも私にはうまくいく。Claudeが動いている環境をコントロールできるからね。好きなDockerイメージを与えたり、ローカルネットワークに接続させたりできる。まだ作業中だけど(コアの部分はできてるけど、まだ洗練されてない)、OPが考えていることに似た目標を持つ、よりフレンドリーなUXを提供できることを期待してるよ。
すごく良さそうだね、試してみるよ。
僕はオフィスのデスクに超速いMacBook Proがあって、tmuxやtailscale、git worktreesを使ってる。著者と同じような通知設定も作ったよ。tailscaleとsshのおかげで、これで外出先でもスマホからvibecodeできるんだ。タスクを走らせておくのはいいけど、デスクに座ってるときにできるような高品質な仕事は、移動中にはできないんだよね。フルSaaSの仕事をするには、やっぱりデスクに座って集中しないと質の高い仕事はできない。プロンプトの結果を試したり、たくさんメモを取ったり、それをエージェントにフィードバックしたり、完成するまで出さないようにしてる。変更をフィーチャーフラグで管理したり、すべてのコードを細かくレビューしたり、考えうるすべてのメトリクスやログ(VictoriaMetrics)を追加したり、ユーザー行動のログ(Amplitude/Posthog)を取ったりして、生活がかかってるかのように監視するんだ。だって、それは製品だし、自分の仕事に誇りを持ってるからね。これらすべてにはたくさんの画面スペースとキーボードが必要なんだ。だから、変わることがあっても、結局は同じことなんだろうね。
> ポートの割り当てはハッシュベースで、ブランチ名から決定的で、衝突はない: > hash_val = sum(ord(c) for c in branch_name) > django_port = 8001 + (hash_val % 99) > 六つのエージェント、六つの機能、一つの電話。衝突がないってどういうこと?六つのブランチと99のポートスロットがあったら、最適なハッシュを仮定しても衝突の確率は約14%だよ(これは明らかに最適じゃないけど)。
代わりに、exe.devでVMを立ち上げるのもアリかもしれないね。どうやら、モバイルアクセスはそのままで使えるみたいだよ。[1] 自分はノートパソコンからしか使ってないから試したことはないけど、ターミナルウィンドウでClaude Codeを使うより、ブラウザタブでコーディングエージェントとチャットする方が好きだな。
JulesとGitHub Copilotエージェントがあれば、似たようなワークフローが少ない設定でできるよ。Claude Code for Webは試したことないけど、似たような感じだと思う。