タブレット一台から部屋の隅のMac miniまで、リモートは三重の糸で編まれる。プライベートネットワーク(Tailscale)、命令を打つ窓(Termius)、接続が切れても作業を保持する網(tmux)。素早く作るなら、この三つをこの順に入れればよい。道具は替えても、役割は変わらない。最後に、この三つがすべて詰まる日に備え、予備の通路をもう一つ置く。
§ 00 · 第一の糸――同じ部屋につなぐ
遠くの機械につなぐには、まずその機械と自分のタブレットを、同じ部屋にあるようにしなければならない。この役割を担うのがプライベートネットワークで、私の道具はTailscaleだ。別々の場所にある自分の機器だけを静かにつなぎ、一つの空間にあるようにする。
一つ誤解を解こう。これは、すべての通信を他人のサーバーへ迂回させて所在地を隠す、よく知られたVPNとは違う。このプライベートネットワークでは、自分の機器同士へ向かう通信だけがその線を通り、Safari、メッセンジャー、YouTubeなどの日常の通信は普段の経路をそのまま通る。だから日常のアプリが遅くなったり、おかしくなったりしない。糸は細く、必要なものだけをつなぐ。
気にすることは、VPN表示を嫌う一部の金融アプリくらいだ。実際に通信が迂回されているかにかかわらず、機器の「VPNオン」を検出するだけで起動を止めるアプリがある。銀行を使う時だけ一時的に切れば済む。
| 区分 | よく知られたVPN | このプライベートネットワーク(Tailscale) |
|---|---|---|
| 役割 | すべての通信を他人のサーバーへ迂回させ、所在地を隠す | 自分の機器同士の通信だけを専用の線でつなぐ |
| 日常のアプリ(Safari・YouTube) | 一緒に迂回されるので遅くなる場合がある | 普段の経路のまま。遅くならない |
| 注意点 | — | VPN表示を嫌う一部の金融アプリを使う時だけ、VPNを一時的に切ればよい |
§ 01 · 第二の糸――命令を打つ窓
二台が同じ部屋に置かれたら、その部屋に話しかける窓が要る。タブレットから遠くの機械のコマンドラインを開くプログラム。それが窓で、私はTermiusを使う。その窓を流れる接続の名はSSH。他人がのぞけない暗号化された通路だ。窓から命令を打つと、部屋の向こうの機械で実行される。
窓はいくつもあり、どれを使ってもよい。ただし窓が守る条件は一つ。安全な通路であること。他人がのぞけない暗号化された接続でつなぐ必要がある。その接続は毎回パスワードを打つより、鍵一つで開け閉めするほうが安全で便利だ。鍵は手元の機械に植え、錠は向こうに置く。
窓にはそれぞれ癖がある。画面に出たアドレスを妙に切って見せる窓も、韓国語入力をうまく渡せない窓もある。この癖が最もよく初心者を転ばせる。その話は後のエラー編で扱う。
| 名前 | 何か | どこにあるか |
|---|---|---|
| リモートログイン(扉) | 外からこの機械につないでよいという許可のスイッチ | 遠くの機械のシステム設定。03章でオンにする |
| SSH(通路) | 他人がのぞけない暗号化された接続そのもの | 二台の機械の間。目には見えない |
| Termius(窓) | SSHの通路を開き、命令を打てるようにするアプリ | 手の中のタブレット |
§ 02 · 第三の糸――切れても死なない網
窓だけでは足りない。窓は弱い。地下鉄で信号が途切れたり、タブレットが眠ったり、ネットワークが変わったりすると閉じる。そして閉じた瞬間、その窓で動いていた作業まで死ぬとしたら。長いビルドをかけて地下鉄に乗り、一駅で最初からやり直すことになる。
だから第三の糸がある。窓と作業の間に網を張る。この網の名はtmux。作業は窓ではなく網にぶら下がる。窓が閉じても、網は遠くの機械の中に残り、作業を支えて動かし続ける。再接続したら、その網に「再接続」するだけで、作業していた場所がそのまま現れる。
これがリモート開発の安心装置だ。私はこのtmuxの網のおかげで、何度も接続が切れたのに、一度も作業を失わなかった。切れるのは窓だけで、網は機械の中で眠らない。常駐システムが眠らないように、網も眠らない。
§ 03 · 非常通路――一つでは足りない
先の三本の糸、Tailscale、Termius、tmuxは、実は一種類の道だ。文字で命令を交わすコマンドライン。私はそこに性格の違う道をもう一本置く。遠くの機械の画面を丸ごとタブレットに映す、遠隔接続プログラムだ。
正直、この画面の道は遅く、指先の操作感も不便だ。コマンドラインが軽快な自転車なら、こちらは鈍重なトラックだ。それでも入れておく。理由は一つ。一つの経路が壊れただけで仕事が止まること自体が、基盤の失敗だからだ。
多くの開発者がデプロイ手順を開発、社内、本番に分け、データベースを二重にし、クラウドに予備イメージをいくつ置くか悩むのは、暇だから見せるデジタルの力技ではない。一つが死んでも全体が止まらないようにするためだ。同じ話である。通路が一つしかなければ、それが切れた瞬間に仕事全体が止まる。
私の悩みもその延長にある。コマンドラインが詰まる日は来る。今日経験していないだけだ。その日に画面の道が、鈍重なトラックでも生きていれば、仕事は止まらない。だから予備の通路を置く。リモートを知る者は、道が通っているうちに二本目を掘る。
記事を読む: sass.studio.