📱

外出先のiPhoneから自宅MacのClaude Codeを操作する方法|Tailscale × NeoServer × tmux

に公開

はじめに

本記事では、外出先から自宅のMacにリモート接続し、Claude Codeを安全かつ快適に実行する手順を解説します。TailscaleやNeoServer、tmuxなどのツールを活用し、iPhoneだけでどこからでも作業を継続できる環境を構築します。

想定読者

  • Macユーザー
  • Claude CodeをiPhoneからリモートで使いたい方

取り組んだ背景

Claude Codeが登場してAIコーディングを楽しんでいる人も増えてきましたね。私もそのひとりで、AIによるコーディング支援だけではなく、AIエージェントによるバイブコーディング(Vibe Coding)にも取り組んでいます。これまではVisual Studio CodeやCursorを使っていましたが、Claude Codeを使うとターミナルでもバイブコーディングができるようになりました。Claude Sonnet 4の登場によりさらに上位の体験が楽しめます。
私はリモートワークが主体で平日は運動不足になりがちだったためジムに通い始めました。ジムの休憩所にはWi-Fiがあるため運動後はそこで勉強やプライベートな開発をすることがあるのですが、いつもMacを持ち歩いているわけではありません。そんな中、自宅Macで実行中だったClaude Codeのタスク結果が気になったのです。
Claude Codeは指示を与えるとタスクを自分で考えて実行してくれます。しばらく完了を待って、結果を確認する、そして必要に応じて次の指示を出す、ということを繰り返すのがClaude Codeでの開発です。
次第にClaude Codeが実行中の時は自分は別のことをしていた方が効率的だと感じるようになりました。たとえばジムで運動して、ときどきClaude Codeの結果を確認して次の指示を出す、ということができたらどんなに素晴らしいだろうと考えるようになったのです。

できること

この構成で以下を実現できます。

  • 外出先から自宅Macに安全に接続し、Claude Codeを実行できる
  • 家で作業していても、外出時にiPhoneだけ持てば作業を継続できる

構成イメージ

まずは全体のざっくりしたイメージを図で示します。

  • 自宅: MacBook Air(Claude Code実行環境)
  • 外出先: iPhone(操作端末)
  • ネットワーク: Tailscale(VPN)
  • リモート操作: NeoServer(SSHクライアント)、tmux

手順

ここからは、実際のセットアップ手順を順番に見ていきます。なお、Claude Codeのインストールは完了しているものとします。

1. MacBookの準備

まずはMacBook側の準備から始めましょう。

  • MacBookを電源に接続し、スリープしないように設定します。
    • システム設定 > バッテリー > 「電源アダプタ使用時はディスプレイがオフの時に自動でスリープさせない」を有効化

2. Tailscaleのインストールと設定

今回はVPN環境を作るためにTailscaleを導入します。

Tailscaleの主な利点は、複雑なVPN設定が不要で、安全なリモートアクセスが簡単に実現できる点です。また、MagicDNS機能により、IPアドレスではなくホスト名でデバイスにアクセスできるため、より直感的な操作が可能です。

次の通り設定をします。

  • TailscaleをMacとiPhoneの両方にインストールします。公式サイトやApp Storeからインストールできます。
  • 両端末で同じアカウントにログインし、VPN接続を確立します。

これで外出中でもiPhoneから自宅Macに安全に接続できるようになりました。

3. NeoServerでSSH鍵を生成・配置

iPhoneからMacにSSHで接続するためにNeoServerを使います。Termiusも非常にすぐれたアプリですが、Claude Codeの画面で日本語入力できない事象があったので、今回はNeoServerを使います。

なお、iPhoneから安全に接続するためのSSH鍵を使用します。

次の通り設定をします。

  • iPhoneにNeoServerをインストールします。
  • Macをサーバーとして追加します。この時のホスト名はTailscaleを開いてMacのMagicDNSをコピペします。
  • 接続ユーザー名とパスワードを設定します。ここでは一度パスワード設定が必要です。
  • 秘密鍵(SSH鍵)を生成します。「サーバーに公開鍵を追加」に書かれているコマンドをコピーします。
  • ターミナルタブからMacを選んで接続します。この時点ではパスワード接続です。
  • 前途のコピーしたコマンドを貼り付けて実行します。これでSSH鍵を使用した接続ができます。
  • 一度切断します。キーボードの上にあるMacの名前の右にある×ボタンを押します。
  • サーバー設定を再度開き、パスワードではなく秘密鍵を選択します。これで次回の接続からSSH鍵を使用します。
  • (オプション)セキュリティ向上のため、パスワード認証を無効化します。

パスワード認証の無効化は次のように行います。

# パスワード認証を無効化するには、以下の内容を新規ファイルに書き込みます
sudo sh -c 'echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/999-nopasswordauth.conf'
sudo sh -c 'echo "KbdInteractiveAuthentication no" >> /etc/ssh/sshd_config.d/999-nopasswordauth.conf'
sudo sh -c 'echo "ChallengeResponseAuthentication no" >> /etc/ssh/sshd_config.d/999-nopasswordauth.conf'
# サービス再起動
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd

4. tmuxでClaude Codeを起動

今回はtmuxを使うことで自宅での作業を外出先で引き継げるようにします。

次の通り設定をします。

  • Macにtmuxをインストールします。brew install tmuxでインストールできます。
  • Macでターミナルを開き、tmuxセッションを作成します。
  • Claude Codeをtmux内で起動しておきます。

Claude Codeをtmux内で起動するには次のようにします。

# tmuxセッション作成
tmux new -s claude
# Claude Codeを起動
claude

5. 外出先からiPhoneで接続

いよいよiPhoneからリモート接続してみましょう!

  • NeoServerで自宅MacにSSH接続します。
  • tmux attach -t claudeでセッションに再接続します。

MacBookで表示していた端末がiPhoneに表示されたと思います。これで外出先から自宅MacのClaude Codeを操作できます。

まとめ

さて、これで外出先から自宅MacのClaude Codeの作業の続きができるようになりました。
これを設定した日は早速ジムで使ってみました。まずはiPhoneでClade Codeの画面を開き、指示を出します。そしてすかさず筋トレを開始します。1セット終えたらiPhoneを取り出して処理結果を確認します。まだ処理中ならそっと閉じ、完了していれば慌てて次の指示を出します。そんなことをしながら運動を続けました。
運動を終えたら休憩所に本とiPhoneを持っていきます。この時はWebアプリを作っていたのでPlaywright MCPを使ってUIテストもさせつつまた実装を指示します。そしてClade Codeが作業を実行していることを確認したらゆっくりと本を開き、優雅に読書タイムです。数ページ読み進めてからClaude Codeの様子を確認します。どうやら作業が完了していたようです。また次の指示をします。処理時間はかなり早いです。作業を任せますが、次からは意識は完全には本に戻りません。ちらちらとiPhoneの画面を見てしまいます。本を2行読んだらiPhoneを開きます。処理中なのを確認してホッとして読書に戻ります。でもやはり、処理が終わっているのではないかとどうしても気になってしまいます。次第に本を閉じる間隔が短くなっていきます。こうして何往復かするうちに私は完全に本を閉じてiPhoneの画面を凝視していました。

最後に本を閉じてから随分経って、私はようやくiPhoneの画面から顔を上げました。どうやら私はClaude Codeに取り憑かれていたようです。壁にかかった時計が目に入り、一時間経っていたことに気づきました。これなら家に帰って作業していればよかったのではないかと気づくのにそう時間はかかりませんでした。

Discussion