こんにちは。
miiveの基盤チームでエンジニアをしている akito です。
みなさん、気持ちよく開発できていますでしょうか?
わたしはWezTermのおかげで気持ちよく開発できています。
コーディングエージェントが登場してから、Neovimを開きつつClaude Code(たまにCodexも)を開くことがデフォルトになっています。 そうなると毎回ペインを複数分割し、Claude Code, Codexを起動させるのが面倒になります。
はい、改善しましょう。
tmux使ってみるか〜と思いはしたものの、WezTermだけでできるんじゃね?と思い調べたところ簡単にできたのでご紹介します。
WezTermとは
WezTerm is a powerful cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
wezさんが開発しているRust製のターミナルエミュレータです。 以前はiTerm2を使用していたのですが、動作がもっさりしているのが気になりWezTermに移行しました。(多分わたしの使い方が悪い) なぜWezTermにしたのか。「ターミナル 軽い」などでググり、上位に出てきたからです。理由なんてあとから付いてくるものです。
いい感じの開発環境を一発で起動させる
では本題です。
私の環境でWezTermを起動したときはこんな感じです。

タブが4つ開きます。(見づらいですが左下にタブが並んでいます)
タブはそれぞれ左から
- タブ①
docker compose up,yarn devなどをペイン分割して実行し
ローカルサーバー、各種エミュレータを起動させる
- タブ①②③
- タブを分割し Neovim, Claude Code を起動
されています。
ターミナルを起動するだけで準備されるのはとても気持ちがいいです。やる気が漲ります。
設定ファイルはこんな感じです(一部抜粋)
local wezterm = require("wezterm") local mux = wezterm.mux local config = wezterm.config_builder() wezterm.on('gui-startup', function(cmd) local home = wezterm.home_dir -- ===== tab1: 開発サーバー ===== local tab, server_pane, window = mux.spawn_window { cwd = home .. '/server', } server_pane:send_text 'docker compose up\n' local app_pane = server_pane:split { direction = 'Right', size = 0.66, cwd = home .. '/app', } app_pane:send_text 'yarn dev\n' local admin_pane = app_pane:split { direction = 'Bottom', size = 0.5, cwd = home .. '/admin', } admin_pane:send_text 'yarn dev\n' window:gui_window():maximize() -- ===== tab2(各プロジェクト別タブ + claude) ===== local editor_tab1, editor_server_pane = window:spawn_tab { cwd = home .. '/server', } editor_tab1:set_title 'server' local claude = editor_server_pane:split { direction = 'Right', size = 0.33, cwd = home .. '/server', } wezterm.sleep_ms(500) editor_server_pane:send_text 'nvim\n' claude:send_text 'claude\n' -- 以降もtab2, tab3の設定を追記していく end) return config
細かく説明していきます。
まずはtab1から
-- まずはウィンドウ、ペインを作成 local tab, server_pane, window = mux.spawn_window { cwd = home .. '/server', } -- 実行したいコマンド server_pane:send_text 'docker compose up\n' -- ペインを分割 local app_pane = server_pane:split { direction = 'Right', size = 0.66, cwd = home .. '/app', } app_pane:send_text 'yarn dev\n' -- さらにペインを分割 local admin_pane = app_pane:split { direction = 'Bottom', size = 0.5, cwd = home .. '/admin', } admin_pane:send_text 'yarn dev\n'
つぎはtab2について(ほぼ同じですが)
-- タブを作成 local editor_tab1, editor_server_pane = window:spawn_tab { cwd = home .. '/server', } -- タブタイトルを設定 editor_tab1:set_title 'server' -- ペインを分割 local claude = editor_server_pane:split { direction = 'Right', size = 0.33, cwd = home .. '/server', } -- Neovim, Claude Code をそれぞれ起動 wezterm.sleep_ms(500) editor_server_pane:send_text 'nvim\n' claude:send_text 'claude\n'
設定ファイルを軽く書くだけでこんな事ができます。すばら。
ぜひ皆さんもお試しください。
おまけ
WezTerm には Copy Mode なるものがあります。
その名から想像がつくように、テキストをコピーするためのModeです。 キーボードから手を動かしたくない自分のような人間からすると神機能です。 vimライクにカーソル操作が可能なので例えば

Ctrl + Shift + X で Copy Mode を起動し、vFTy と入力するだけで「This is a pen.」がクリップボードに入ります。

最高です。
We're Hiring!!!
miiveでは一緒に福利厚生の未来を作ってくれる仲間を募集しています。ちょっとでも興味のある方は一度ぜひお話しましょう!
また、定期的にお酒と軽食を楽しみつつ、カードゲームやボードゲームで遊びながら、miiveメンバーと気軽に仕事や働き方の話ができる「miive bar🍷」を開催しています。
「いきなりカジュアル面談はちょっとハードルが高い…」という方はぜひ、miive barにご参加ください! miive.notion.site





















※施策管理表の「E2Eテスト自動化」は、QA観点での整備がまだ途中という意味で課題にしていますが、開発側ではすでに CI/CD 上に E2E テストが組み込まれています。
