【Laravel11】SOLO for Laravelを使ってみた

Laravel

Laravel Newsで紹介されていましたが、複数コマンドを一元管理できるTUI(Text-based User Interface)パッケージであるSOLO for Laravelを使ってみました。

Just a moment...
GitHub - soloterm/solo: Your all-in-one Laravel command to tame local development
Your all-in-one Laravel command to tame local development - soloterm/solo

※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

コメント

タイトルとURLをコピーしました