S∆SS.

S∆SS Studio Notes · リモート · Nº 03

リモート — 03 構築する方法

ここからは実務だ。Mac miniを起こしておき、Tailscaleで二台をつなぎ、Termiusで窓を開き、tmuxで網を張る。各節の表を上から下へたどれば、一つのリモート体制が完成する。大半は設定アプリとアプリのクリックで済み、コマンドラインが必要なのは最後の数か所だけ。設定の名前はバージョンによって少し違うことがあるので、近い項目を探せばよい。

§ 00 · 組み立てる順序

順序がある。まず機械を眠らせない。眠る機械にはつながらないので最初だ。次に二台を同じ部屋につなぐ(Tailscale)。その部屋に話しかける窓を開く(SSH・Termius)。最後に接続が切れても死なない網を張る(tmux)。

以下の四節がその順序だ。各節には表が一つあり、一行が一段階になる。上から下へ進め。前の章で「なぜ」を読んだなら、残るのはその「なぜ」を手で組み立てることだけだ。

一つ先に言っておく。大半は画面の設定とアプリのクリックで終わる。コマンドライン、つまりターミナルが本当に必要なのは、最後のtmuxくらいだ。それも一、二行で、何をするかを横に書いてある。慣れていなくても恐れるな。何が起きるか分かって打つ一行は、分からず押す十回のクリックより安全だ。

§ 01 · 第一――Mac miniを起こしておく

眠る機械にはつながらない。だからまず眠りを防ぐ。よい知らせが一つ。この段階ではコマンドラインもターミナルも不要だ。画面の「設定」でいくつかのスイッチを入れ、無料アプリを一つ入れれば終わる。次の表をそのまま上から下へ進めばよい。

まず一つだけ覚えよう。「画面が消えること」と「本体が眠ること」は別だ。防ぎたいのは本体の眠りであって画面のオフではない。画面は消えてよい。節電するだけで、遠隔作業は続く。

手順 · スリープを止める
段階やること方法
1設定を開く画面左上のリンゴのアイコンを押し、メニューで「システム設定」を選ぶ。左側で「省エネルギー」を探して押す。なければウィンドウ上部の検索欄に「エネルギー」と入れて探す。(このMacはデスクトップ型なので「バッテリー」ではなく「省エネルギー」だ。)
2本体の眠りを止める――今日の核「ディスプレイがオフのときに自動でスリープさせない」をオンにする。スイッチを押して青にする。この一つがすべての核だ。オンなら画面が消えても本体は眠らない。他は分からなくても、このスイッチだけは必ず入れる。
3ネットワークで起こす同じ画面で「ネットワークアクセスによるスリープ解除」もオンにする。万一本体が眠っても、外から接続が来れば自ら起きる安全装置だ。
4画面を消すまでの時間を決める(任意)何分後に画面を消すかは「ロック画面」、または同じ省エネルギー画面で決める。場所はバージョンで少し違う。三十分ほどでよい。繰り返すが、画面を消すことと本体のスリープは別なので、好きに設定すればよい。
5Amphetamineを入れる――もう一層設定だけでは不安なら安全網を足す。App Storeを開き「Amphetamine」を検索して無料でインストールする。起動すると右上のメニューバーに錠剤形のアイコンが出る。押して「Keep Awake Indefinitely(無期限に起動状態を維持)」を選ぶと、その瞬間から本体は眠らない。もう一度押せば切れる。環境設定で「ログイン時に起動」をオンにしておけば、停電による再起動後も復帰する。私が実際に使っている睡眠防止装置がこれだ。
+コマンドラインが楽なら(任意、知らなくてもよい)上のスイッチとAmphetamineで十分だ。ただしターミナルに慣れた人向けの選択肢を残す。同じ設定はpmsetでも指定できる(sleep 0 · womp 1)。特定の作業が動く間だけ眠りを抑えるcaffeinateという道具もある。初心者はこの行を飛ばしても問題ない。

§ 02 · 第二――Tailscaleでつなぐ

二台を同じ部屋に置く。プライベートネットワークのTailscaleがそれを担う。三行で二台が互いを呼べるようになる。

手順 · Tailscaleの3段階
段階やること方法
1Mac miniにインストールしてログインtailscale.com/downloadまたはApp StoreでTailscaleを入れ、GoogleやGitHubなどのアカウントでログインする。この機械が自分のプライベートネットワーク(tailnet)に現れる。
2iPadにインストールしてログインApp StoreでTailscaleを入れ、同じアカウントでログインしてスイッチをオンにする。⚠️ Exit Node(出口ノード)には触るな。オンにすると日常の通信まで迂回して遅くなる。目的は機器同士だけをつなぐことだ。
3Mac miniのアドレスを確認二台が同じtailnetに出たら、Mac miniの100.で始まるアドレスか名前(…​.ts.net)を確認しておく。次の段階でこのアドレスへつなぐ。ネットワークが変わっても同じだ。

§ 03 · 第三――SSHとTermiusで窓を開く

今度は部屋に話しかける窓だ。Mac mini側の扉を開け、iPadのTermiusからつなぐ。最も簡単なのはMacのログインパスワードを使う方法で、私もそうしている。慣れたら鍵方式に変え、パスワードなしでつなぐこともできるが、最初は不要だ。

先に一つ線を引く。「窓を開くこと」と「接続後にgitでコミット、プッシュ、プルできること」は別の問題だ。Termiusでgitコマンドが止まるなら、窓ではなく、GitHubが自分を認識できない認証の問題だ。別のSSH鍵やトークンが関係する。GitHub認証は遠隔接続と性質が違うので、この文章の外で別に扱う。ここでは窓を開くところまでにする。

手順 · 窓を開く4段階
段階やること方法
1Mac miniの扉を開く(設定アプリ)これもコマンドラインは不要。リンゴのアイコン →「システム設定」→ 左側の「一般」→ 右側の「共有」。一覧で「リモートログイン」を探し、スイッチをオン、青にする。これが外からこの機械へつなぐ扉を開く。オンにしなければ、どの窓からもつながらない。(横の「ⓘ」を押すと接続に使うユーザー名も確認できる。)
2Termiusにホストを登録してつなぐiPadのTermius → New Host。アドレスはMac miniのTailscaleアドレス、ユーザーはMacのアカウント名、パスワードはそのMacのログインパスワード。保存して接続すると、Mac miniのコマンドラインがiPadに開く。最も簡単で、この機械もこうしてつないでいる。
3(任意)よりよい方法は試運転の後Termiusではパスワードだけで簡単につながる。まずはそれで十分だ。鍵方式など、より進んだ接続はその後の話。先にリモート体制全体を作り、一度試運転してから進めることを勧める。基盤が実際に動くと確認する前に高度な設定から触ると、原因を切り分けにくくなる。順序はいつも「まず動かし、その後で整える」だ。
4韓国語入力が抜けるならCJKオプション接続したのに韓国語入力が抜ける場合は、Termiusの設定でCJKや入力関連のオプションを探してオンにする。それでも化けるなら向こうの機械のロケールも直す必要がある。後の「ブロガーが教えないこと」のエラー表1番が、この二層を扱う。

§ 04 · 第四――tmuxで網を張る

最後。接続が切れても作業が死なないよう、窓と作業の間にtmuxの網を張る。かけておけば、地下鉄で信号が切れても、仕事はMac miniの中で動き続ける。

手順 · tmuxの4段階
段階やること方法
1インストールするMac miniになければbrew install tmux。Homebrew(brew)がなければ、brew.shで先にHomebrewを入れてから同じ命令。すでにあれば飛ばす。
2セッションを作るtmux new -As 名前 は「名前」というセッションを作り、すでにあれば接続する。プロジェクトごとに一つ置けば、仕事を分けてつなげる。一つ覚えておくこと。いくつセッションを作っても、すべてを支えるtmuxの「主人」は機械に一人だけだ。普段は知らなくてもよいが、網全体がおかしくなった時は部屋を開き直すのでなく、この主人を替える必要がある。04章の八つ目の罠が、まさにその場合だ。
3離れて、つなぎ直す作業を走らせたまま出るならprefixの後にd(デタッチ)。後でtmux attach -t 名前 でつなぎ直せば、作業していた場所がそのまま出る。離れている間もセッションは眠らず動く。
4ショートカットの衝突をなくすtmuxの標準ショートカット(Ctrl-B)が内部で動くAIツールと衝突するなら、ホームフォルダーの~/.tmux.confにprefixをCtrl-Aへ変える設定を入れる。マウススクロールや長いログの保持も同じファイルで一行ずつ設定する。

§ 05 · 総覧――手で打つのはこれだけ

先の四節が組み立てる順序なら、この節は付録だ。このシリーズ全体で手入力する命令は、以下の八つですべて。残りは画面設定とアプリのクリックで終わる。覚える必要はない。詰まったらこの表に戻ればよい。先の言葉をもう一度書く。何が起きるか分かって打つ一行は、分からず押す十回のクリックより安全だ。

コマンド総覧 · 何を · いつ
命令何をするかいつ · どこで
brew install tmux網(tmux)を入れる。Homebrew(brew)がなければbrew.shで先に入れ、その後で同じ命令。Mac miniで一度だけ。03章 §04 第1段階。
tmux new -As 名前「名前」というセッションを作り、すでにあれば接続する。プロジェクトごとに一つ置けば仕事を分けられる。接続のたびに最初に。03章 §04 第2段階。
prefixの後にdセッションを生かしたまま手だけ離す(デタッチ)。その間も仕事は機械の中で動く。prefixは標準でCtrl-B。下の五行目で変えたならCtrl-A。作業を走らせたまま出る時。03章 §04 第3段階。
tmux attach -t 名前離れていたセッションにつなぎ直す。作業していた場所がそのまま出る。再接続した時。03章 §04 第3段階。
~/.tmux.confにprefixを一行tmux標準のCtrl-Bが中のAIツールと衝突するならCtrl-Aへ移す。マウススクロールや長いログの保持も同じファイルに一行ずつ。ショートカットが衝突した時に一度。03章 §04 第4段階 · 04章の罠2。
tmux kill-server網の主人を丸ごと取り替える。部屋(セッション)を開き直すのとは違う。主人は機械に一人だけなので、網全体が病んだ時はこれしか効かない。注意:開いていた全セッションが閉じるので、先に作業を確認する。網全体がおかしい時だけ。04章の罠3・8。
pmset · caffeinate(任意、知らなくてもよい)コマンドラインで眠りを防ぐ方法。画面設定とAmphetamineで十分なので、初心者は飛ばしてよい。ターミナルに慣れた人だけ。03章 §01 最後の行。
/usr/libexec命令ではなく覚えておく場所。権限一覧にsshd-keygen-wrapperを直接追加する時、ファイル選択画面で[移動 → フォルダへ移動](Command+Shift+G)を使ってこのフォルダーを開き、中のファイルを選ぶ。権限がリセットされた時。04章の罠7。

記事を読む: sass.studio.