Web通知をLaravelとPusherチャンネルを使って作成する方法について、以下に完全かつ包括的な記事を提供します。
はじめに
Web通知は、ユーザーにリアルタイムで重要な情報を送信するための強力なツールです。例えば、メッセージングアプリケーション、ニュースサイト、またはEコマースサイトなどで、ユーザーに即座に通知を送る場合に利用されます。Laravelはその豊富な機能セットと簡単な設定方法で、Pusherと統合することで、簡単にリアルタイムの通知システムを構築することができます。

必要なもの
- Laravel – バージョン7以上
- Pusherアカウント – Pusherはリアルタイム通知のためのサービスを提供しています。
- Node.js と npm – JavaScriptのパッケージ管理ツール
ステップ 1: Pusherアカウントの設定
まず、Pusherのアカウントを作成します。以下の手順に従ってください。
- Pusherの公式サイトにアクセスし、アカウントを作成します。
- ダッシュボードにログイン後、「Create App」を選択し、新しいアプリケーションを作成します。
- アプリケーションが作成されると、
APP_ID
、APP_KEY
、APP_SECRET
、APP_CLUSTER
が表示されます。この情報は後でLaravelの設定で使用します。
ステップ 2: Laravelプロジェクトの準備
Laravelプロジェクトを準備します。
bashcomposer create-project --prefer-dist laravel/laravel web-notifications
プロジェクトが作成されたら、ディレクトリに移動します。
bashcd web-notifications
ステップ 3: Pusherパッケージのインストール
LaravelにはPusherと連携するための公式パッケージが用意されています。これをインストールします。
bashcomposer require pusher/pusher-php-server
ステップ 4: .env ファイルの設定
Pusherの設定情報を .env
ファイルに追加します。これにより、LaravelがPusherと接続できるようになります。
envBROADCAST_DRIVER=pusher PUSHER_APP_ID=あなたのAPP_ID PUSHER_APP_KEY=あなたのAPP_KEY PUSHER_APP_SECRET=あなたのAPP_SECRET PUSHER_APP_CLUSTER=あなたのAPP_CLUSTER
これらの情報はPusherダッシュボードから取得できます。
ステップ 5: config/broadcasting.php
の設定
config/broadcasting.php
ファイルを開き、以下のようにPusherの設定を更新します。
php'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
],
],
ステップ 6: 通知イベントの作成
通知イベントを作成します。Laravelでは、php artisan make:event
コマンドを使用してイベントを作成できます。
bashphp artisan make:event NotificationSent
これで、app/Events/NotificationSent.php
ファイルが作成されます。このファイルを編集して、Pusherを通じて通知を送信できるように設定します。
phpnamespace App\Events;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\BroadcastEvent;
class NotificationSent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn()
{
return new Channel('notification-channel');
}
public function broadcastAs()
{
return 'notification.sent';
}
}
ステップ 7: ブロードキャストチャネルの設定
次に、routes/channels.php
ファイルを開き、通知チャネルを設定します。
phpBroadcast::channel('notification-channel', function ($user) {
return true; // 認証の処理を追加することもできます
});
ステップ 8: クライアントサイドの設定
JavaScriptでPusherを使用するために、resources/js/bootstrap.js
ファイルを設定します。
javascriptimport Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'あなたのAPP_KEY',
cluster: 'あなたのAPP_CLUSTER',
forceTLS: true
});
これで、クライアントサイドでもリアルタイム通知を受け取る準備が整いました。
次に、resources/js/app.js
ファイルに、通知を受け取るコードを追加します。
javascriptEcho.channel('notification-channel')
.listen('NotificationSent', (event) => {
alert(event.message);
});
ステップ 9: 通知のトリガー
通知を送信するためには、イベントをトリガーする必要があります。例えば、コントローラー内で以下のように通知を送信します。
phpuse App\Events\NotificationSent;
public function sendNotification()
{
event(new NotificationSent('新しい通知があります!'));
}
ステップ 10: フロントエンドでの通知表示
上記の設定を行った後、ブラウザでリアルタイム通知が表示されるはずです。ユーザーが通知を受け取ると、アラートが表示されます。
ステップ 11: サーバーのセットアップ
最後に、サーバーのセットアップを行います。特に、Node.jsとLaravel Echo Serverを使って、WebSocket接続を確立する場合には、以下のように設定します。
-
Laravel Echo Serverのインストール
bashnpm install -g laravel-echo-server
-
Laravel Echo Serverの設定
bashlaravel-echo-server init
設定が完了したら、サーバーを起動します。
bashlaravel-echo-server start
これで、リアルタイムで通知を送受信できるようになります。
結論
LaravelとPusherを使用することで、リアルタイム通知システムを簡単に実装できます。PusherはWebSocket技術を利用して、サーバーとクライアント間で高速なデータ送受信を行うため、通知の遅延が非常に少なく、ユーザーエクスペリエンスが向上します。上記の手順に従って、素早く効果的な通知システムを構築できることがわかります。