良い命名規則
10 台規模のサーバーフリートに対して一番効くテコは、まともな名前を付けることです。server1、vps-2、random-vps のようなひどい名前は、半分寝ぼけた状態で見ると、スマホのリストをただの当てっこゲームにしてしまいます。良い名前なら、どのマシンが何をしていて、どこにあるか、ひと目でわかります。
私がいろいろ試したあとに落ち着いたパターン:
<role>-<env>-<number>-<region>
prod-web-01-sgp
prod-db-01-sgp
stage-web-01-sgp
dev-web-01-local
home-nas
home-pihole 役割を先頭に。最初に読む部分だからです。次に環境を入れて、疲れているときに prod と staging が混ざらないようにします。リージョンは一番変わらないので最後。ホームラボや個人マシンは構造的な命名をやめて単純化します——home-nas で十分。3 台しかないので 100 台あるわけではないからです。
残す価値のあるタグ
TermAI は接続ごとに複数タグを付けられます。気を抜くと付けすぎて——サーバーごとに 5 個ずつタグがついて全部ノイズになります。控えめにするのが効きます。
私が継続的に役に立っているタグ:
prod/staging/dev——最も重要なフィルターweb/db/worker——次に重要oncall——いまローテーションに入っているマシンに付け、外れたら外す。深夜 2 時のリストは短くあるべき。home——個人用と仕事用を分ける
付けるのをやめたタグ:リージョン(名前に既に入っている)、OS バージョン(リスト表示では無関係)、nginx のようなサービス固有タグ(シグナルが低い)。少ないほどよい。
視覚的構造のためのグループ
TermAI のグループは要するに名前付きフォルダで、ホスト一覧で折りたたみ展開できます。私はフラットに保っています:環境ごとに 1 グループ(Production / Staging / Dev / Home)。グループ内は役割でソート。
Production はデフォルトで折りたたみ。アプリを開いたときにいつも見えるのではなく、意識して展開したい。Home はデフォルトで展開——日常使うリストだから。
グループのネストは避ける。「この prod-db は Production → DB の下?それとも Production → Critical の下?」という認知コストは、追加の整理整頓で得られる価値より大きい。フラットなグループ + タグのほうが、階層的なグループより遠くまでスケールします。
検索は分類体系に勝る
サーバーが 8〜10 台を超えると、分類を考えるよりスクロールしたほうが速い。TermAI のホスト一覧上部の検索バーは、ラベル・ホスト・ユーザー名・タグを横断してマッチします。3 文字打てば、目的のサーバーだけが残ります。
戦術として、日常使うセットの中で 3 文字前缀で一意に特定できるようにサーバー名を付けます。pro = prod-web-01、nas = home-nas、pi = home-pihole。3 文字で曖昧さがなくなれば、どの接続も 2 タップ 1 スワイプで起動できます。
命名がうまくいっているサインは、リストを読まなくなって、検索バーをタッチタイプし始めること。
繰り返しコマンドのための Snippets
スマホから打つシェルコマンドは、デスクトップから打つものとは違います。デスクトップは探索と一発仕事。スマホは「毎回同じ 5 つ」。その 5 つを保存しましょう。
私がよく使う snippets:
journalctl -u nginx --since 1h -n 100——最近の nginx ログdf -h | head——ざっくりディスク確認docker compose ps——何が起動しているかdocker compose logs -f --tail 50 api——特定サービスのログを追うsudo systemctl restart caddy——「プロキシ蹴る」ワンボタン
TermAI の snippet はカテゴリで整理でき、特定のホストにピン留めもできます。スマホのキーボードは永遠の摩擦。この 5 つの打鍵を節約するだけで、モバイルセッションの時間がけっこう戻ってきます。
スマホに残すもの vs ラップトップに任せるもの
ラップトップ向きの作業はラップトップでやるべきです。逆らわない。スマホはトリアージと小修正向きで、200 行の Terraform を書くものではない。
私の線引き:
- 必ずスマホ:サービス再起動、ログ確認、プロセスを追う、
topを見る、プッシュ通知できた Y/n に返答する、自分で止まっているデプロイの承認。 - 時々スマホ:SFTP で設定ファイルの 1 行を編集、1 行のクエリを実行、リモート tarball を取得。
- 必ずラップトップ:大きなスキーマ変更、コードレビュー、新サービスのデプロイ、実行前に 100 行のスクロールバックを 3 回読み直したいような作業。
スマホでのセッションが 3 分を超えそうなら、それは合図——さっさと片付けるか、ラップトップにエスカレートするか。スマホは「やる」のは得意、「考える」のは苦手。
深夜 2 時のワークフロー
ここまでを組み合わせると、まさに TermAI を作るきっかけになったケースに対応できます:
- アラートが鳴る——スマホが振動し、通知にサーバー名と問題が表示される。
- TermAI を開いて検索バーをタップ——サーバー名の 3 文字を入力。目的のホストがハイライト。
- 接続——1 タップ。アプリを開いた時点で Tailscale トンネルはすでに通っている。
- Snippet——タイピングではなく、保存済みコマンド(logs / status / restart)をタップ。
- 出力を読み、修正を実行——たいてい再起動コマンド一本。複雑なら AI ヘルパーに解説してもらう。
- 確認して閉じる——同じ snippet をもう一度実行してサービスが戻ったことを確認、スマホをロック、寝る。
目標時間:スマホを取り出してから修正確認まで 90 秒以内。命名のしっかりしたフリートといくつかの snippets があれば達成可能です。モバイル SSH の意義は、まさに「アラート → 解決」の間を、ベッドで完結できるサイズに縮めることにあります。
クイックファクト
- 規模に合わせて整理:タグとグループで数十の接続も見通せる
- スニペット:よく使うコマンドをクイックバーに固定し、打ち直しをなくす
- マルチセッション:複数の稼働セッションを位置を失わずに切り替え
- ホストごとの AI:アシスタントは接続中のサーバー(OS、直近の出力、リアルタイムのリソース)に応じて提案
- 安定したアドレス:内蔵 Tailscale で各マシンがネットワークを問わず同一アドレス