はじめに
このチュートリアルでは、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)
プロジェクトのセットアップ
新しいプロジェクトを作成する
ターミナルで以下のコマンドを実行します。
my-app ディレクトリが作成され、コンソールアプリの基本構造がセットアップされます。インストール時に以下が自動実行されます。.env.exampleから.envファイルの生成php artisan key:generateによるアプリケーションキーの設定
コンソールコマンドの作成
コマンドを生成する
make:command Artisanコマンドで新しいコマンドを作成します。YourCommandName— 作成するコマンドのクラス名(例:SendDailyReport)your:command— コマンドの呼び出し名(例:report:send-daily)
app/Console/Commands/YourCommandName.php が生成されます。コマンドを実装する
生成されたファイルを編集してロジックを実装します。以下はHello Worldコマンドの例です。
$signature でコマンドの呼び出し名を定義し、handle() メソッドにロジックを記述します。GitHub Actionsでのタスクスケジューリング
GitHub Actionsを使えば、サーバーのcronジョブなしにコマンドを定期実行できます。通知機能
コマンドの実行結果やエラーをメール・Slackなどで通知できます。詳細はLaravel通知ドキュメントを参照してください。
実践的なアプリケーション例
例1: ウェブサイト死活監視とSlackアラート
ウェブサイトがオンラインかどうかを確認し、問題が検出された場合にSlackへアラートを送信するコマンドです。例2: 暗号資産ポートフォリオ更新とDiscord通知
CoinGecko APIから暗号資産の価格を取得し、Discordウェブフックで更新を送信するコマンドです。コマンドを実装して実行する
詳細な実装についてはGitHubリポジトリのチュートリアルを参照してください。
例3: ウェブサイトコンテンツのスクレイピングとメール通知
ウェブサイトからコンテンツをスクレイピングし、結果をメールで送信するコマンドです。次のステップ
これでrevolution/laravel-console-starter を使ったLaravelコンソールアプリケーションの基本を学びました。
さらに深く学ぶために:
- Laravelドキュメントを探索する — Laravel公式ドキュメントでコンソールアプリを強化できる機能を確認しましょう
- テストを実装する — Laravelのテストフレームワークでコマンドのテストを作成し、信頼性を確保しましょう
- パッケージ開発を検討する — 複数のプロジェクトで同様のコマンドを作成するなら、再利用可能なLaravelパッケージとして公開することを検討してください
- 最新情報を把握する — Laravel News や公式ブログをフォローしてベストプラクティスを常に把握しましょう