Laravel Newsで紹介されていましたが、複数コマンドを一元管理できるTUI(Text-based User Interface)パッケージであるSOLO for Laravelを使ってみました。
※2025/04/01追記:Solo for Laravelのリポジトリは、 aarondfrancis/solo が廃止され soloterm/solo へ変更されました。使い方も変更されているので、新しく次の記事を書き直しました。
SOLO for Laravelで何ができるのか
Laravelプロジェクトで開発時に使用する任意のコマンドをSOLOで一元管理できます。
SOLO起動時の自動実行、任意のタイミングでの実行を指定でき、
さらには、コード内から管理するコマンドを追加することも可能です。
登録したコマンドはタブで分割され、各出力の確認、ホットキーによる実行・停止の管理ができます。
Laravelビルトインサーバー起動やマイグレーション、自動テスト等、よく使うコマンドを登録しておくと便利かもしれません。

パッケージの製作者はmacの環境で開発しているようです。
当記事執筆時点では、Windows環境での検証ができていないようで、協力を求めています。
前提条件
- Laravel11を使っていきます(Laravel10にも対応)
- PHP8.2以降インストール済
- Composerインストール済
- Ubuntu24.04(WSL2)上で作業しています
インストール
Laravelプロジェクト「solo-app」を新規作成します。
composer create-project laravel/laravel:^11 solo-app

プロジェクトフォルダに入ります。
cd solo-app
開発環境にSOLOをインストールします。
composer require aaronfrancis/solo --dev

SOLOのサービスプロバイダーをインストールします。
php artisan solo:install

SOLO起動
ArtisanコマンドでSOLOを起動します。
php artisan solo

ターミナル上で上のような画面が展開されます。
初期設定で登録されている次の4コマンドがタブで展開されます。
- Logs (tail -f -n 100 storage/logs/laravel.log)
- Vite (npm run dev)
- About (php artisan solo:about)
- Queue (php artisan queue:listen –tries=1)
これらのコマンドは、
app/Providers/SoloServiceProvider.php
で定義されています。
キーボード操作
キーボード操作は次の通りです。
| 操作 | HOTキー |
|---|---|
| 左のタブへ移動 | ←(左矢印) |
| 右のタブへ移動 | →(右矢印) |
| (コマンド)一時停止 | p(ピー) |
| (現タブ内の)出力消去 | c(シー) |
| (コマンド)開始 | s(エス) |
| (コマンド)再開 | r(アール) |
| (SOLO)終了 | q(キュー) 又は [Ctrl] + [c] |
| (出力内で)上へスクロール | ↑(上矢印) |
| (出力内で)下へスクロール | ↓(下矢印) |
SOLOで管理するコマンド
SOLOで管理するコマンドは
app/Providers/SoloServiceProvider.php
内の「addCommands()」または「addLazyCommands()」の引数として、配列内に「タブ名」と「コマンド」をキー・バリューペアで配置していきます。
また、「AaronFrancis\Solo\Commands\Command」インターフェースを渡すこともできますが、この場合はキー・バリューペアではない配列要素として渡します。
「addCommands()」で指定されたコマンドは、SOLO起動時に自動実行されます。
「addLazyCommands()」で指定されたコマンドは、SOLO起動後にユーザーが任意で実行します。
コマンドの追加
試しに、自動実行コマンドとして「php artisan serve」、任意実行コマンドとして「php artisan test」を追加してみます。
また、ログ表示以外は削除してみます。
▼「app/Providers/SoloServiceProvider.php」を編集
<?php
namespace App\Providers;
use AaronFrancis\Solo\Commands\EnhancedTailCommand;
use AaronFrancis\Solo\Facades\Solo;
use AaronFrancis\Solo\Providers\SoloApplicationServiceProvider;
class SoloServiceProvider extends SoloApplicationServiceProvider
{
public function register()
{
Solo::useTheme('dark')
// Commands that auto start.
->addCommands([
'HTTP' => 'php artisan serve',
EnhancedTailCommand::make('Logs', 'tail -f -n 100 ' . storage_path('logs/laravel.log')),
])
// Not auto-started
->addLazyCommands([
'Test' => 'php artisan test',
])
// FQCNs of trusted classes that can add commands.
->allowCommandsAddedFrom([
//
]);
}
public function boot()
{
//
}
}
動作確認
SOLOで管理するコマンドを更新した場合、SOLOを再起動後に反映されます。
前段で編集した内容の場合、次のようになります。

タブが「HTTP」「Logs」「Test」のみになりました。
「Logs」については、プロジェクト作成直後には「laravel.log」が無いのでコマンド停止していますが、「laravel.log」が生成された後は「s」でコマンドを開始させれば下のように表示されます。

「Test」については、「s」を押下すると自動テストが実行され、結果が出力されます。

テーマの変更
SOLOでは「dark」(デフォルト)と「light」の2テーマが提供されています。
「app/Providers/SoloServiceProvider.php」で定義します。
試しに「light」テーマを適用してみます。
▼「app/Providers/SoloServiceProvider.php」の「register()」を編集
※「useTheme(‘dark’)」を「useTheme(‘light’)」に変更
public function register()
{
Solo::useTheme('light')
// Commands that auto start.
->addCommands([
'HTTP' => 'php artisan serve',
EnhancedTailCommand::make('Logs', 'tail -f -n 100 ' . storage_path('logs/laravel.log')),
])
// Not auto-started
->addLazyCommands([
'Test' => 'php artisan test',
])
// FQCNs of trusted classes that can add commands.
->allowCommandsAddedFrom([
//
]);
}
筆者の場合、VSCodeの「モダンダーク」テーマを使用中なのでこのようになります。

「管理」>「設定」>「ワークベンチ」>「外観」>「Color Theme」
から「ライトモダン」に変更すると下のような配色になります。




おまけ
多くのコマンドを登録するとタブ表示が下のようになります。

右端で右に移動すると、左端にトグルします。
左端で左に移動すると、右端にトグルします。
タブ移動については、次のような機能が追加されると良いかもしれません。
- 左端へ移動
- 右端へ移動
- 前のページへ移動
- 次のページへ移動
今回は、コード内からのコマンド登録やテーマの追加等は省きます。
以上です。
- 0
- 0
- 0
- 0



コメント