Slide 1

Slide 1 text

terminal から出たくない頑固な男の戦い uho-wq

Slide 2

Slide 2 text

自己紹介 名前:uho-wq 🦍 25 卒 アプリ会社でtoC 向けの機能開発をしています バックエンドエンジニア (Go) AI Agent も開発してます (Python) 北区在住 ( 歩いて帰れる) 北区の私の推し 🧖 COCOFURO ☕ apollon 🚃 東京さくらトラム

Slide 3

Slide 3 text

早速ですが

Slide 4

Slide 4 text

できるだけTerminal から出たくない

Slide 5

Slide 5 text

言い換えると = コンテキストスイッチを最小にしたい

Slide 6

Slide 6 text

コンテキストスイッチとは 作業や思考の流れ(コンテキスト)から別の作業に切り替えることを指す

Slide 7

Slide 7 text

コンテキストスイッチを最小化するために どういう環境を構成すればいいか 今日はそういう話をします

Slide 8

Slide 8 text

なんで最小にしたいの? ChatGPT → Cursor で開発生産性が圧倒的に向上した なぜ? → コンテキストスイッチが減ったから ブラウザでAI に聞く → エディタに戻ってコード書く、のループがなくなった エディタの中でAI と対話できる = 思考が途切れない 💡 この体験をもっと突き詰めて生産性を最大化したい アプリの切り替え自体を最小にすればいいのでは?

Slide 9

Slide 9 text

先に結論 WezTerm と Chrome 開発全般 それ以外 結論、基本はこれしか開かないで良くなりました

Slide 10

Slide 10 text

他のアプリどこいった? Slack, Discord, Asana … → 全部 Chrome のタブで開く いちいちブックマーク開くの? Spotlight に変わるLaunchar ツール Raycast Quiclink に URL を登録 Raycast Extensions でマッピング ctrl + 0 → Slack ctrl + 9 → Asana

Slide 11

Slide 11 text

なぜ WezTerm ? WezTerm はターミナルエミュレータ Lua で設定を宣言的に管理 できる タブ消したり、透過率も調整できるのが嬉しい 休日は透過率を上げて裏でアニメ流したりする wezterem の機能自体はまだ使いこなせてない local wezterm = require 'wezterm' local config = wezterm.config_builder() config.font_size = 12.0 config.automatically_reload_config = true config.window_background_opacity = 0.85 config.macos_window_background_blur = 15 config.color_scheme = 'Tokyo Night' config.enable_tab_bar = false

Slide 12

Slide 12 text

これ以上アプリを増やさないためには Terminal を最強にするしかない

Slide 13

Slide 13 text

エディタ: Neovim IDE 批判とかはしないので安心してください

Slide 14

Slide 14 text

AI Agent: Claude Code tmux でpane 分割して Neovim と Claude Code を並べる tmux: ターミナル内で複数の仮想端末を管理するマルチプレクサ

Slide 15

Slide 15 text

claudecode.nvim CC をリバースエンジニアリングしたプラグイン CC が Neovim をエディタとして認識 してくれる エディタで選択した箇所を コンテキストとして送信

Slide 16

Slide 16 text

tmux load-buffer (vibe plugin) 1. 一時ファイル作成: vim.fn.tempname() で一時ファイルパスを取得 2. 内容を書き込み: vim.fn.writefile() で送りたいメッセージを一時ファイルに保存(複数行対応) 3. tmux load-buffer で一時ファイルの内容をtmux のバッファに読み込み

Slide 17

Slide 17 text

tmux レイアウト管理 tmux でpane のレイアウトを毎回再現するのは 面倒 → 💡 vde-layout で解決 YML ファイルで宣言的に管理 コマンド1 発で環境を再現 ## vde-layout.yml layout: - name: dev panes: - command: nvim size: 60% - command: claude size: 40% $ vde-layout web-dev

Slide 18

Slide 18 text

現時点こんな感じ

Slide 19

Slide 19 text

画面がせまくなってきたら tmux popup 必要なときだけ フローティングウィンドウ を表示 一時的な操作に最適

Slide 20

Slide 20 text

シェルの便利ツール群 「シェルってコマンド打つのとか、ディレクトリ移動めんどい」 zoxide - cd の代替 fzf - ファジーファインダー ghq + fzf - リポジトリ移動 yazi - ターミナルファイラー

Slide 21

Slide 21 text

Git 操作 lazygit リッチな TUI で git 操作 個人的にはcherry-pick が操作しやすい gh dash Issue / PR を ダッシュボード形式 で一覧表 示 GitHub CLI Issue や PR を作成・編集 → Git 操作もほぼTerminal 完結

Slide 22

Slide 22 text

Cursor Tab に勝るもの これは未だに見つかってない。 。 Cursor Tab は強い。 現状の選択肢 ツール 特徴 Supermaven 高速で便利な補完、Copilot の高速版、すこしおバカ sidekick.nvim Copilot の NES が使えるが レイテンシが気になる、Cursor Tab ほど柔軟ではない 🙏 いいのあれば教えてください

Slide 23

Slide 23 text

ここまできたらマウスも最小限にしたい ホームポジションから手を離したくない トラックパッドは親指で操作するとして、 基本操作をキーボード完結 ( かつホームポジションからできるだけ離れないよう) にしたい

Slide 24

Slide 24 text

代替ツール yabai + skhd yabai: タイリングウィンドウマネージャ skhd: ホットキーデーモン アプリ間移動をキーボードだけで Homerow 画面上の要素に ヒントキー を表示 クリック・スクロールをキーボードで Raycast アプリのキーマッピング Spotlight の代替 メモ / ショートカット / ポモドーロ / ウィン ドウ管理

Slide 25

Slide 25 text

環境差分問題 25 卒で新卒入社 → 社用 PC が配られた 困ること 私用 PC と社用 PC で 環境差分 が起こる どっちかしか使わなくなる やだ 最適解 → Nix Nix: 再現可能なビルドとパッケージ管理を実現する純粋関数型パッケージマネージャ

Slide 26

Slide 26 text

Nix nix-darwin — Mac の設定も宣言的に Mac のシステム設定を Nix で宣言 新しい PC でも darwin-rebuild switch で一発再現 ## CapsLock を Ctrl に system.keyboard.remapCapsLockControl = true; ## Dock を使用中のアプリに限定 system.defaults.dock.static-only = true;

Slide 27

Slide 27 text

devshell + nix-direnv プロジェクトごとの開発環境を自動切替 direnv allow したディレクトリに入った瞬間に devShell が作成 グローバルのツールは引き継がれるので Docker より快適 プロジェクト間の依存関係の衝突なし devShell: プロジェクトごとの開発環境を定義する Nix ツール direnv: ディレクトリに入ると自動で環境変数をロード ## flake.nix devShells = { go = pkgs.mkShell { packages = with pkgs; [ go gopls golangci-lint ]; }; };

Slide 28

Slide 28 text

dotfiles 管理 Homebrew → nixpkgs へ移行 パッケージ管理も Nix に統一 ( 完全移行はまだ道半ば) home-manager で dotfiles も宣言的に 設定ファイルを Nix で管理 or symlink dotfiles を Git で管理 → どの PC でも同じ環境 OS 設定 + パッケージ + dotfiles = すべて Nix で宣言的管理

Slide 29

Slide 29 text

まとめ 使用アプリを最小化して開発生産性を最大化する ❓️ 最大化されたのか わからん。ただ楽しい Nix まだ始めたばっかりなので 詳しい人 おしえてください 🙏 便利なプラグインとかアプリとかも教えて下さい🙏

Slide 30

Slide 30 text

ありがとうございました 🦍 uho-wq