nun_game0

ターミナルだけで仕事が完結する時代が来ている

ターミナルワークフロー

最近、業務時間の8割以上をターミナルで過ごしている。コード書き、調査、レビュー、コミュニケーション。ほぼ全部がターミナルで完結する。

数年前までVS Codeを常時開いていた自分が、気づけばターミナルのウィンドウしか並んでいない。この変化がどう起きたのか、何が便利で何が不便なのかを整理してみる。

ターミナル環境の土台

まず、素のターミナルだけでは仕事にならない。快適に作業するための基盤がいくつかある。

tmuxがウィンドウ管理の中核。ペインを分割して、左でコードを編集しながら右でビルドログを流す。セッションを維持できるので、SSH先での作業が切断されても続きから再開できる。

zsh + starshipでシェルをカスタマイズしている。Gitブランチ名、Kubernetesコンテキスト、GCPプロジェクトがプロンプトに常時表示される。今どの環境で作業しているかが一目でわかるのは、事故防止の面でも大きい。

fzfはファジーファインダー。ファイル検索、コマンド履歴検索、Gitブランチの切り替え、あらゆる場面で使う。Ctrl+R で履歴をインクリメンタルに絞り込めるだけで、作業速度が体感で2倍になる。

**ripgrep(rg)**はコード検索。grepより圧倒的に速く、.gitignore を自動で尊重してくれる。数万ファイルのリポジトリでも一瞬で結果が返ってくる。

ターミナルで完結する作業リスト

具体的に何をターミナルでやっているか。

コーディング。Claude Codeで対話しながら実装。エディタを開くこともあるけど、簡単な修正ならClaude Codeに指示して終わり。複雑なリファクタリングも、ファイルの読み書きから差分確認、テスト実行まで一連の流れがターミナル内で完結する。

コードレビューgh pr diff でPRの差分を見て、Claude Codeにレビューさせる。ブラウザでGitHubを開かなくても完結する。指摘事項のコメントも gh pr review で書ける。

調査。ログの確認は kubectl logs、設定の確認は gcloud コマンド。クラウドコンソールをブラウザで開くより、CLIの方が速い。特にGKEのPod状態確認やログのフィルタリングは、CLIの方が圧倒的に柔軟で、パイプでjqに繋げばJSONログの解析もその場でできる。

コミュニケーション。SlackもMCP連携でターミナルから読み書きできる。全メッセージをターミナルで処理するわけじゃないけど、問い合わせの調査と返信の下書きまではターミナルで済む。

黒い画面に白い文字

隣から見ると、一日中黒い画面に白い文字が流れているだけ。何をしているか全くわからないと思う。

でもこの黒い画面の中で、設計判断をして、コードを書いて、テストを走らせて、レビューして、デプロイしている。GUIより情報密度が高くて、マウス操作がない分速い。

ターミナル画面

IDEからターミナルに移行して変わったこと

VS Codeを手放したわけではない。今でも複雑なデバッグやノートブックの編集ではIDEを開く。ただ、日常の作業の大部分はターミナルに移った。

速くなった点。起動が速い。IDEは起動だけで数秒かかるし、拡張機能の読み込みでさらに待たされる。ターミナルは開いた瞬間から作業開始できる。ファイル間の移動もfzfで一発。複数リポジトリをtmuxのウィンドウで並べておけば、コンテキストスイッチも一瞬で済む。

不便になった点。型情報のホバー表示やリファクタリング支援はIDEの方が強い。大規模なリネームや定義ジャンプを多用する作業では、正直IDEの方が楽。あとは、差分の視覚的な比較もIDEのビルトインdiffビューアの方が見やすい場面がある。

結局のところ、ターミナルとIDEのどちらか一方に絞る必要はなくて、作業内容に応じて使い分けるのが現実的な着地点だった。

実際の作業フロー:朝の定型作業

ある日の朝の作業を具体的に書いてみる。

  1. ターミナルを開いてtmuxセッションをアタッチ
  2. gh pr list --search "is:open review-requested:@me" でレビュー待ちのPRを確認
  3. gh pr diff <番号> で差分を読む。気になる箇所があればripgrepで関連コードを探す
  4. Claude Codeにレビュー依頼を投げて、指摘事項を確認
  5. gh pr review でApproveまたはコメント
  6. 自分の作業ブランチに切り替えて、前日の続きを再開
  7. kubectl get pods -n <namespace> でデプロイ状態を確認
  8. Slackの未読を確認して、対応が必要なものに返信

ここまでブラウザを一度も開いていない。だいたい30分くらいで完了する。

ブラウザを開く瞬間

ターミナルで完結しない作業もある。

GUIが必要な確認。GrafanaダッシュボードやCloudflareのアナリティクスは、グラフで見た方が直感的。数値の確認はCLIでできるけど、トレンドの把握はビジュアルの方が強い。

ドキュメント作成。長文のドキュメントはNotionやConfluenceで書く方が楽。マークダウンで書いてターミナルからアップロードすることもあるけど、レイアウトの調整はGUIが必要。

会議。Google MeetやZoomはさすがにブラウザ。ここだけはCLIでは代替できない。

CLIツールの組み合わせ

ターミナルワークフローを支えているツール群。

gh — GitHub CLI。PR作成、レビュー、マージまで全部できる。gh pr create でPRを作り、gh pr checks でCIの状態を確認し、gh pr merge でマージする。一連の流れが全部コマンド。

kubectl + gcloud — Kubernetes とGCPの操作。インフラエンジニアの主力。kubectlにはkrew経由でプラグインを追加して、kubectl neatkubectl ctx も使っている。

jq — JSONの整形とフィルタリング。APIレスポンスの確認に必須。kubectl get pods -o json | jq '.items[] | select(.status.phase != "Running")' のように、パイプで繋いで一行で複雑な抽出ができる。

fzf — ファジーファインダー。ファイル検索、履歴検索が爆速になる。

bat — catの代替。シンタックスハイライト付きでファイルを表示できる。行番号もデフォルトで出るので、コードの確認がしやすい。

eza — lsの代替。Gitステータスがファイル一覧に表示されるので、変更ファイルが一目でわかる。

CLIツール構成

効率化の本質

ターミナルが速いのは、操作がキーボードだけで完結するから。マウスに手を伸ばす時間、タブを切り替える時間、ページが読み込まれる時間。全部省略できる。

もうひとつ大きいのは、操作の再現性。コマンドは履歴に残るし、シェルスクリプトにまとめれば自動化できる。「先週やったあの手順」をhistoryから引っ張り出して再実行できるのは、GUIの操作では真似できない。

ただし、ターミナルに固執する必要はない。GUIの方が適している作業はGUIを使う。大事なのは「どのツールが最速か」を作業ごとに選ぶこと。

結果としてターミナルが多くなっているだけで、ターミナル原理主義ではない。

関連記事

SharePost

他の記事