Laravel 12 で Gmail API を使ってユーザー投稿登録通知を送るまでの流れ

2025年11月12日

今回は、Laravel 12 で作った「アーティストマップ(仮)」アプリに、登録時に管理者へ Gmail 通知を送る機能を追加しました。XAMPP 環境、Windows での手順です。 細かい部分は後に追記していきます。


1. Laravel プロジェクトの準備

composer create-project laravel/laravel soloartistmap "12.*"

PHP 8.2 / Composer 2.8 で動作確認済み Tailwind + Vite は設定済み(@vite(['resources/css/app.css’, 'resources/js/app.js’]) で読み込み)

2. アーティストモデルとマイグレーション

protected $fillable = [
    'name', 'prefecture', 'genre', 'profile',
    'youtube_link', 'soundcloud_link', 'twitter_link',
    'is_approved'
];
public function scopeApproved($query) {
    return $query->where('is_approved', true);
}

is_approved で承認済みかを管理 都道府県・ジャンルも選択式にして柔軟性を確保

3. Gmail API を使う準備

① Google Cloud プロジェクト作成

Google Cloud Console で新規プロジェクト作成

Gmail API を有効化

② OAuth 同意画面設定

ユーザー種類:外部

テストユーザーに自分の Gmail を登録

データアクセスで gmail.send スコープを追加

③ OAuth クライアント作成

「クライアント ID」と「クライアントシークレット」を取得

.env に追加:

GOOGLE_CLIENT_ID=取得したクライアントID
GOOGLE_CLIENT_SECRET=取得したクライアントシークレット
GOOGLE_REDIRECT_URI=http://127.0.0.1:8000/google/callback

4. Google API クライアントの導入

composer require google/apiclient:^2.18
composer dump-autoload -o

5. GmailService クラス作成

app/Services/GmailService.php にサービスクラスを作成:

namespace App\Services;
use Google\Client;
use Google\Service\Gmail;
use Google\Service\Gmail\Message;
class GmailService {
    public function getClient() { /* OAuth 設定 */ }
    public function sendMail($to, $subject, $body) { /* メール送信処理 */ }
}

Laravel のサービスとして依存注入可能 登録時に呼び出して通知可能

6. OAuth 認証

ブラウザで /google/auth にアクセス → Google アカウントでログインすると

認証完了!これで Gmail API で送信できます

7. アーティスト登録通知の実装

ArtistController@store で GmailService を呼び出してメール送信:

$gmailService->sendMail(
    '管理者メール@gmail.com',
    '新しいアーティスト登録',
    "名前: {$artist->name}\n地域: {$artist->prefecture}"
);

これで登録と同時に管理者に通知が届く

まとめ

Gmail API を使えば アプリから安全にメール送信 可能

OAuth + テストユーザー設定で Gmail アカウントを保護

Composer の autoload 最適化や Windows 環境の vendor/ 削除がポイント

Laravel

Posted by bistro