はじめに
このチュートリアルでは、revolution/laravel-console-starter を使ってカスタムartisanコマンドを持つLaravelアプリケーションを構築します。
このスターターキットを使うメリット:
- 迅速なセットアップ — 複雑な設定なしにコンソールアプリ開発をすぐに始められます
- Laravelエコシステム — タスクスケジューリング・データベース・通知などLaravelの豊富な機能を利用できます
- Artisanコマンド — Laravelの強力なArtisanシステムで独自コマンドを簡単に作成・管理できます
- テスト容易性 — Laravelのテストフレームワークでコマンドのテストを記述できます
前提条件
以下のソフトウェアをインストールしてください。- PHP
^8.3 - Composer(https://getcomposer.org/)
- Laravel Installer(
composer global require laravel/installer)
プロジェクトのセットアップ
1
新しいプロジェクトを作成する
ターミナルで以下のコマンドを実行します。
my-app ディレクトリが作成され、コンソールアプリの基本構造がセットアップされます。インストール時に以下が自動実行されます。.env.exampleから.envファイルの生成php artisan key:generateによるアプリケーションキーの設定
2
環境設定を確認する
デフォルトでは、メール送信はログ出力に設定されています(
MAIL_MAILER=log)。実際のメール送信が必要な場合は、.env ファイルでMailgunやPostmark、SESなどのサービスを設定してください。コンソールコマンドの作成
1
コマンドを生成する
make:command Artisanコマンドで新しいコマンドを作成します。YourCommandName— 作成するコマンドのクラス名(例:SendDailyReport)your:command— コマンドの呼び出し名(例:report:send-daily)
app/Console/Commands/YourCommandName.php が生成されます。2
コマンドを実装する
生成されたファイルを編集してロジックを実装します。以下はHello Worldコマンドの例です。
$signature でコマンドの呼び出し名を定義し、handle() メソッドにロジックを記述します。3
コマンドを実行する
storage/logs/laravel.log とコンソールにメッセージが出力されます。GitHub Actionsでのタスクスケジューリング
GitHub Actionsを使えば、サーバーのcronジョブなしにコマンドを定期実行できます。1
ワークフローファイルを確認する
スターターキットには
.github/workflows/cron.yml が事前設定済みで含まれています。2
コマンドを変更する
php artisan inspire を自分のコマンドに置き換えます。3
スケジュールを調整する
cron 式を変更して実行頻度を設定します。4
機密情報をシークレットで管理する
APIキーやパスワードなどの機密情報はGitHubリポジトリシークレットを使います。GitHubリポジトリの Settings > Secrets and variables > Actions でシークレットを追加し、ワークフローで参照します。
通知機能
コマンドの実行結果やエラーをメール・Slackなどで通知できます。1
通知クラスを作成する
app/Notifications/TaskCompleted.php が生成されます。2
通知チャネルを設定する
必要に応じて設定ファイルを公開します。
3
コマンドから通知を送信する
詳細はLaravel通知ドキュメントを参照してください。
実践的なアプリケーション例
例1: ウェブサイト死活監視とSlackアラート
ウェブサイトがオンラインかどうかを確認し、問題が検出された場合にSlackへアラートを送信するコマンドです。1
Slack通知チャンネルをインストールする
2
コマンドと通知を作成する
3
Slackを設定する
.env にSlack webhook URLを追加します。config/services.php を更新します。4
通知を実装する
app/Notifications/WebsiteDown.php を編集します。5
コマンドを実装する
app/Console/Commands/MonitorWebsites.php を編集します。6
GitHub Actionsでスケジュール設定する
.github/workflows/cron.yml を更新します。例2: 暗号資産ポートフォリオ更新とDiscord通知
CoinGecko APIから暗号資産の価格を取得し、Discordウェブフックで更新を送信するコマンドです。1
Discord通知チャンネルをインストールする
2
コマンドと通知を作成する
3
Discordを設定する
.env にDiscord webhook URLを追加します。config/services.php を更新します。4
コマンドを実装して実行する
詳細な実装についてはGitHubリポジトリのチュートリアルを参照してください。
例3: ウェブサイトコンテンツのスクレイピングとメール通知
ウェブサイトからコンテンツをスクレイピングし、結果をメールで送信するコマンドです。1
コマンドと通知を作成する
2
メールを設定する
.env ファイルにメール設定を追加します。3
コマンドを実装して実行する
次のステップ
これでrevolution/laravel-console-starter を使ったLaravelコンソールアプリケーションの基本を学びました。
さらに深く学ぶために:
- Laravelドキュメントを探索する — Laravel公式ドキュメントでコンソールアプリを強化できる機能を確認しましょう
- テストを実装する — Laravelのテストフレームワークでコマンドのテストを作成し、信頼性を確保しましょう
- パッケージ開発を検討する — 複数のプロジェクトで同様のコマンドを作成するなら、再利用可能なLaravelパッケージとして公開することを検討してください
- 最新情報を把握する — Laravel News や公式ブログをフォローしてベストプラクティスを常に把握しましょう