> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Laravel Multiplex — ローカル開発プロセスをまとめて管理するTUI

> laravel/multiplexの初期調査。Laravel 13のphp artisan devが使う、複数プロセスのタブ表示・検索・自動再起動に対応したターミナルUIを解説します。

## はじめに

[`laravel/multiplex`](https://github.com/laravel/multiplex) は、複数のコマンドを同時に実行するためのターミナルUI(TUI)です。Laravel 13の`php artisan dev`から利用され、PHP開発サーバー、キューワーカー、ログ監視、Viteなど、ローカル開発に必要なプロセスを1つのターミナルで管理できます。

タブごとにプロセスの出力を表示でき、出力の検索とスクロールにも対応します。終了時には各プロセスの出力が通常のターミナルのスクロールバックへ書き戻されるため、TUIを終了した後もログを確認できます。

## インストールと直接実行

Laravelアプリケーションでは`php artisan dev`が必要な設定を行うため、通常はMultiplexを直接インストールする必要はありません。単独で使う場合は、Node.js 22.13以降を用意してnpmでインストールします。

```bash theme={null}
npm install -g @laravel/multiplex
```

コマンドは`label,command`形式で渡します。

```bash theme={null}
multiplex 'server,php artisan serve' 'queue,php artisan queue:listen' 'vite,npm run dev'
```

## TUIとインラインモード

標準入力と標準出力がTTYの場合はタブ形式のTUIが起動します。`s`でストリーム表示に切り替え、`/`で出力を検索し、`r`で選択中のプロセスを再起動できます。`q`で終了します。

TTYがないCIやパイプ処理では、インラインモードに自動的に切り替わります。各行にプロセスのラベルが付き、出力が到着した順に表示されます。明示的にインラインモードを使う場合は`-i`を指定します。

```bash theme={null}
multiplex -i 'build,npm run build' 'test,npm test'
```

インラインモードでは最後のプロセスが終了すると実行も終了し、コマンドの失敗を終了コードに反映します。JSON形式で処理結果を扱う場合は`--json`を使います。

```bash theme={null}
multiplex --json 'build,npm run build' 'test,npm test'
```

## 自動再起動と終了処理

クラッシュしたプロセスは1秒待ってから最大5回まで自動的に再起動されます。起動から1秒以内に終了したプロセスは、実行ファイルの不足やポート競合など、最初から起動できていない可能性があるため再試行されません。ビルドやマイグレーションのような一度だけ実行するコマンドでは`--no-restart`を指定します。

```bash theme={null}
multiplex --no-restart 'build,npm run build'
```

Multiplexは終了時やシグナル受信時に子プロセスのプロセスグループを終了させます。開発サーバーだけが残ってポートを占有する状態を防ぐため、複数プロセスをまとめて停止できます。

## 注意点

子プロセスには標準入力が渡されません。そのため、`php artisan tinker`やマイグレーションの確認プロンプトなど、入力を要求するコマンドはMultiplexから実行できません。対話的なコマンドは別のターミナルで実行してください。

MultiplexのプログラムAPIも提供されていますが、コマンドは`sh -c`で実行されます。設定ファイルやリクエストなど、信頼できない値をコマンド文字列に埋め込まないでください。

## 参考資料

* [Laravel公式ドキュメント: Artisan - The Dev Command](https://laravel.com/docs/13.x/artisan#the-dev-command)
* [laravel/multiplex README](https://github.com/laravel/multiplex)


## Related topics

- [Artisanコンソール](/jp/artisan.md)
- [Laravel Nightwatch 入門](/jp/blog/nightwatch-introduction.md)
- [Laravel Socialite(ソーシャル認証)](/jp/socialite.md)
- [ネイティブモード - プリセット - VOICEVOX for Laravel](/jp/packages/laravel-voicevox/native-presets.md)
- [フロントエンド](/jp/frontend.md)
