ブログ
カフェからのリモートコーディング:開発者向けガイド
Mac は自宅。あなたはカフェでスマートフォンだけ。安全かつ生産的にコーディングを続ける方法。
このカテゴリのプロダクト/開発アップデートを確認できます。
カテゴリを見る繰り返し出てくる開発者のシナリオがあります: Mac が自宅やオフィスで稼働中、Claude Code がタスクに取り組んでいて、自分はスマートフォンだけ持って別の場所にいる。カフェかもしれないし、空港ラウンジかもしれないし、公園のベンチかもしれません。
このガイドでは、こうした環境からのリモートコーディングの実践的な注意点を解説します。理想的な「デジタルノマド」の売り文句ではなく、安定的かつ安全に機能させるための実際のロジスティクスです。
出発前に必要な準備
リモートコーディングには外出前の準備が必要です。スマートフォンからインフラを構築することはできません。
Mac 側(出発前):
- サーバーが稼働中 — Tactic Remote の Mac アプリを起動してサーバーをアクティブに
- Cloudflare Tunnel を有効化 — LAN モードは同一ネットワークでのみ動作するため、リモートからはトンネルアクセスが必要
- API キーを設定 — Cloudflare Tunnel 接続に必要
- スリープ防止がアクティブ — Tactic Remote はサーバー稼働中の Mac スリープを防止しますが、電源スケジュールで Mac がシャットダウンしないことを確認
- トンネル接続をテスト — スマートフォンを携帯回線に切り替えてトンネル URL 経由で接続できることを確認
iPhone 側:
- Tactic Remote をインストールし接続設定を保存
- Cloudflare 接続モードを設定(トンネル URL + API キー)
- Claude がタスクを完了したときに通知を受けられるよう通知を有効化
重要なポイント: 自宅にいるうちにすべてテストしてください。 スマートフォンだけでカフェから接続の問題をデバッグするのは辛い作業です。
カフェ WiFi で実際に起きる問題
公共 WiFi はリモート開発に3つの具体的な問題を引き起こします:
1. キャプティブポータルが WebSocket 接続をブロック
ほとんどのカフェ WiFi は、トラフィックが流れる前にキャプティブポータルページで利用規約への同意が必要です。この状態では WebSocket 接続がサイレントに失敗します — スマートフォンは WiFi に接続されていると認識していますが、WebSocket のハンドシェイクは完了しません。
対処法: まず Safari を開いて通常のウェブページが読み込めることを確認。その後 Tactic Remote を開く。接続が失敗する場合は WiFi をオフにして再度オンに — キャプティブポータルの状態がスタックすることがあります。
2. ネットワーク切替で接続が切れる
スマートフォンが WiFi と携帯回線の間で切り替わったり、同じ施設内の異なる WiFi アクセスポイント間で切り替わることがあります。切替のたびに WebSocket 接続が切断されます。
Tactic Remote の対応: 指数バックオフによる自動再接続(最大5回、リトライ間隔最大15秒)。アプリが再接続を検出すると、多段階の状態復元でターミナルの表示を回復します。一瞬「再接続中...」の状態が表示された後、ターミナル出力が再表示されます。
ユーザーの対処: 再接続に時間がかかりすぎる場合は、手動で携帯回線に切り替えてください。Cloudflare Tunnel はどのインターネット接続でも動作するため、不安定なカフェ WiFi よりも携帯回線の方が実際には安定しています。
3. 帯域幅とレイテンシの変動
ターミナルストリーミングは軽量 — ビデオ通話よりもはるかに少ないデータ量です。しかしレイテンシはインターフェースの反応性に影響します。良好な WiFi ではキーストロークが即座に反映されますが、混雑したネットワークでは顕著な遅延があります。
実用的な影響: 「投げて忘れる」ワークフロー(タスク送信→通知待ち)にはレイテンシは無関係です。リアルタイム操作 — プロンプト送信、ライブ出力の確認、アクションの承認 — にのみ影響します。ネットワークが悪い場合は操作をバッチ的に: 出力を確認、何を言うか考える、完全なプロンプトを入力、送信。キーストロークごとに操作しようとしないでください。
「投げて忘れる」ワークフロー
カフェでの最も生産的なリモートコーディングパターンは、Claude をリアルタイムで監視することではありません。これです:
- 明確に定義されたタスクを送信
- スマートフォンをしまってコーヒーを楽しむ
- Claude が完了したら通知を受ける
- 結果をレビューして次のタスクを送信
これが機能するのは、Claude Code が明確で範囲が限定されたプロンプトで最良の仕事をするからです:
- 「auth モジュールの失敗テストを修正して」(範囲が限定、成功基準が明確)
- 「src/routes/ の全 REST エンドポイントに入力バリデーションを追加」(具体的なスコープ)
- 「UserService にコンストラクタインジェクションを導入して」(明確なアーキテクチャ意図)
「コードベースを改善して」のような曖昧なプロンプトはデスクでも良くありませんが、スマートフォンからではさらに悪くなります。タスクの途中で軌道修正しにくいからです。
モバイル向けタスクサイズの指針
便利なヒューリスティック: スマートフォンから送る各タスクは、あなたの入力なしで完了できるものにすべきです。 Claude が明確化の質問をする必要がある場合は、回答できる状態にいたい。タスクが自己完結型なら、見ていなくても Claude が実行できます。
放置してOKなタスク:
- 明確な再現手順のあるバグ修正
- 既存コードへのテスト追加
- 適用する特定パターンのリファクタリング
- 対応すべきコードレビューコメント
対面が必要なタスク:
- Claude が確信を持てないアーキテクチャ上の決定
- 各ステップがあなたの好みに依存する複数ステップの機能
- Claude が未見の外部サービスに関する作業
公共ネットワークでのセキュリティ
コーディングコマンドが公共 WiFi を経由する場合、セキュリティが重要です。
既に保護されているもの
Cloudflare Tunnel 経由の Tactic Remote が提供するもの:
- TLS 暗号化 — WebSocket 接続は
wss://を使用するため、スマートフォンと Cloudflare 間のトラフィックは暗号化 - API キー認証 — トンネル接続に必要で、不正アクセスを防止
- 公開ポートなし — Mac はインターネットに対してポートを開かない。Cloudflare が Mac からアウトバウンドでトンネルを開始
つまり、同じカフェ WiFi 上の他の人は:
- ターミナル出力を見ることができない(暗号化済み)
- Mac にコマンドを送ることができない(API キーが必要)
- Mac がコーディングサーバーを実行していることすら検出できない(インバウンドポートなし)
それでも注意すべき点
- 画面の覗き見 — 肩越しにターミナル出力が見える可能性があります。API キー、データベース認証情報、機密コードが含まれているかもしれません。機密データを扱う場合はスマートフォンのプライバシースクリーンを使用してください。
- API キーの保管 — Tactic Remote の接続設定には API キーが含まれています。ロック解除されたスマートフォンに誰かがアクセスすれば抽出可能です。iOS の Face ID / パスコードを使用してください。
- 共有クリップボード — Mac とスマートフォン間でユニバーサルクリップボードを使用している場合はコピー&ペーストに注意。Mac のクリップボード上の機密情報がスマートフォンに表示される可能性があります。
バッテリーと接続の計画
長時間のリモートセッションで重要な実用的ロジスティクス:
バッテリー: Tactic Remote はバッテリー消費が少ない — WebSocket 接続はほとんどの時間アイドル状態で、時折データバーストがあるだけです。ビデオ会議やマップなどのアプリと比べてバッテリーへの影響は最小限。スマートフォンの画面が主な消耗源なので、タスク間は画面をオフにして通知に頼りましょう。
携帯回線のフォールバック: カフェ WiFi が不安定な場合、携帯回線の方が安定していることが多いです。Cloudflare Tunnel はどのインターネット接続でも動作します。4G/5G のレイテンシは混雑した公共 WiFi より通常良好です。
オフライン期間: 接続が完全に失われても、Mac は動作し続けます。Claude Code は tmux セッション内で現在のタスクを続行します。再接続すればセッション状態はそのまま残っています。作業は失われません — 接続が戻るまで監視や操作ができないだけです。
実際のカフェセッション
実際の様子はこうです:
14:15 — 到着、コーヒーを注文 スマートフォンを WiFi に接続、Safari を開いてキャプティブポータルをクリア、Tactic Remote を開く。Cloudflare Tunnel で5秒で接続。
14:17 — タスク開始
プロジェクトの既存セッションを開く。入力:「user-auth ブランチの CI が失敗している。失敗テストを確認して修正して。」
14:18 - 14:45 — コーヒーを飲みながら記事を読む スマートフォンが1回振動:「Claude からの通知」— Claude が3つの失敗テストを発見、すべて変更された API シグネチャに関連。import を修正しアサーションを更新。
14:46 — レビューと続行 セッションを開き、Claude の出力をスクロール。変更は正しい。入力:「全テストスイートを実行してすべてパスするか確認して。」
14:47 - 15:10 — コーヒーをもう一杯、メールに返信 スマートフォンが振動:「タスク完了」。全47テストがパス。
15:11 — 最後のタスク 入力:「修正を 'fix: update auth tests for new API signature' のメッセージでコミットしてプッシュして。」
15:12 — 完了 Claude がプッシュを確認。スマートフォンで GitHub を開いて CI がグリーンなことを確認。アプリを閉じる。
合計アクティブコーディング時間: 約5分。実際の成果: 本物のバグ修正、コミットしてプッシュ完了。カフェはただの場所 — 作業は Mac 上で行われました。
この方法がうまくいかない場面
率直に言って:
- 複雑なデバッグ — コードのステップ実行、変数の状態確認、長いスタックトレースの読解。ツールに関係なくスマートフォン画面では困難。
- デザインレビュー — UI の変更確認、レイアウトの比較。大きな画面が必要。
- 複数ファイルの調査 — 大きな PR の理解や馴染みのないコードの読解。ラップトップ向き。
- 初期プロジェクトセットアップ — 設定の作成、環境構築、依存関係のインストール。デスクで行うべき。
カフェでのワークフローは明確に定義されたタスクの委任と結果のレビューに最適です。集中的なデスクワークの代替ではなく、その延長です。
Tactic Remote を試す
スマートフォンからコーディングエージェントを操作
Mac、Windows、Linux 上の Claude Code や Codex などに接続。iPhone や iPad で進捗を確認し、次の指示を送れます。