Skip to main content

はじめに

このチュートリアルでは、revolution/laravel-console-starter を使ってカスタムartisanコマンドを持つLaravelアプリケーションを構築します。 このスターターキットを使うメリット:
  • 迅速なセットアップ — 複雑な設定なしにコンソールアプリ開発をすぐに始められます
  • Laravelエコシステム — タスクスケジューリング・データベース・通知などLaravelの豊富な機能を利用できます
  • Artisanコマンド — Laravelの強力なArtisanシステムで独自コマンドを簡単に作成・管理できます
  • テスト容易性 — Laravelのテストフレームワークでコマンドのテストを記述できます

前提条件

以下のソフトウェアをインストールしてください。

プロジェクトのセットアップ

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 や公式ブログをフォローしてベストプラクティスを常に把握しましょう
最終更新日 2026年5月1日