APIって何?Laravel Sanctumで学ぶAPI認証の基礎

こんにちは!🌱Webアプリ開発に興味を持ち始めたばかりのあなたへ。

この記事では、Laravelを使ってAPI認証の基本を学びながら、「APIってそもそも何?」という疑問にもやさしく答えていきます。

特にLaravel Sanctumを使った認証方法を中心に、図解や実例コードを交えて、初心者でも安心して読み進められるように構成しています。

スマホでも読みやすいように、デザインにも気を配っているので、通勤中やカフェでも気軽に読んでくださいね☕

それでは、LaravelとAPIの世界へ一歩踏み出してみましょう!🔐

APIってなに?🌐

APIとは「Application Programming Interface」の略で、簡単に言えば「アプリ同士が会話するためのルール」のことです。

例えば、あなたがスマホアプリで天気予報を見たとき、そのアプリは天気情報を提供するサーバーに「今日の天気を教えて!」とお願いしています。このお願いの仕方がAPIです。

スマホアプリ 天気API 天気データ

このように、APIは「データをやりとりするための窓口」のようなもの。Laravelでは、この窓口を作るのも、守るのも、どちらも簡単にできます✨

LaravelでAPIを作る準備🛠️

Laravelでは、APIを作るための機能が最初からたくさん用意されています。まずは、環境を整えて、APIルートを作るところから始めましょう。

📦 Laravelプロジェクトの作成

$ composer create-project laravel/laravel api-sample
$ cd api-sample
$ php artisan serve

これでローカルサーバーが起動し、http://localhost:8000 にアクセスできるようになります。

📁 APIルートの場所

Laravelでは、API用のルートは routes/api.php に記述します。Webルートとは分けて管理できるので、整理しやすいのが特徴です。

🌿 ルートの例

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::get('/hello', function () {
    return response()->json(
        ['message' => 'こんにちは、APIの世界へようこそ!']
    );
});

このルートを追加すると、/api/hello にアクセスしたときに、JSON形式でメッセージが返ってきます。

ブラウザ or アプリ /api/hello JSONレスポンス

Web APIの設計 (Programmer's SELECTION) [ Arnaud Lauret ]

価格:4180円
(2025/9/21 14:53時点)
感想(0件)

Laravel SanctumでAPI認証を守る🔐

APIは便利だけど、誰でも自由にアクセスできてしまうと危険⚠️。そこで登場するのが「認証」です。Laravelでは、Sanctumという軽量な認証システムを使って、APIを安全に守ることができます。

🧪 Sanctumのインストール

Laravel10では以下のコマンドが必要ですが、Laravel11以降では1つのコマンドでインストールできます。

# Laravel10
$ composer require laravel/sanctum
$ php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
$ php artisan migrate
# Laravel11以降(将来変更される可能性あり)
$ php artisan install:api

これでSanctumのテーブルが作成され、認証の準備が整います。

🔧 ミドルウェアの設定

通常は追加せずとも既に設定されていると思います。ない場合はapp/Http/Kernel.php に以下を追加します:

<?php
'api' => [
    \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
    'throttle:api',
    \Illuminate\Routing\Middleware\SubstituteBindings::class
], 

👤 ユーザー認証の流れ

Sanctumでは、ログインしてトークンを発行し、そのトークンを使ってAPIにアクセスするという流れになります。

📮 ログインAPIの例

<?php
use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash;
use App\Models\User;

Route::post('/login', function (Request $request) {
    $user = User::where('email', $request->email)->first();

    if (! $user || ! Hash::check($request->password, $user->password)) {
        return response()->json(['message' => '認証失敗'], 401);
    }

    return $user->createToken('api-token')->plainTextToken;
});

このAPIにメールアドレスとパスワードを送ると、トークンが返ってきます。このトークンを使って、他のAPIにアクセスできるようになります。

ログインフォーム /api/login トークン発行

トークンは「鍵」のようなもの。これを持っている人だけが、守られたAPIにアクセスできるようになります🔑

LaravelのAPIまわりの実装方法はバージョンによって微妙に異なりますので、必ずオフィシャルドキュメントを確認してください。

PHPフレームワークLaravel入門第2版 [ 掌田津耶乃 ]

価格:3300円
(2025/9/21 14:51時点)
感想(2件)

Laravelの教科書 バージョン10対応 [ 加藤 じゅんこ ]

価格:3300円
(2025/9/21 14:51時点)
感想(0件)

トークンで守られたAPIを作ってみよう🛡️

Sanctumでトークンを発行したら、次はそのトークンを使って「認証されたユーザーだけが使えるAPI」を作ってみましょう。

🔐 認証が必要なルートの定義

routes/api.php に以下のようなルートを追加します:

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->get('/profile', function (Request $request) {
        return response()->json([
            'name' => $request->user()->name,
            'email' => $request->user()->email
        ]);
    }
);

このルートは、トークンを持っているユーザーだけがアクセスできます。トークンがない場合は、401エラーが返されます。

📲 トークンの使い方

APIを呼び出すときは、HTTPヘッダーにトークンを含めます:

GET /api/profile Authorization: Bearer トークン文字列

これでLaravelは「この人はログイン済みだな」と判断して、APIの中身を返してくれます。

APIリクエスト Authorization: Bearer ユーザーデータ

これで「ログインした人だけが使えるAPI」が完成!セキュリティの第一歩として、とても大切な仕組みだよ🌱

動かして学ぶ!Laravel開発入門 (NEXT ONE) [ 山崎 大助 ]

価格:3300円
(2025/9/21 14:52時点)
感想(0件)

プロフェッショナルWebプログラミング Laravel

価格:3520円
(2025/9/21 14:52時点)
感想(0件)

ログアウトとトークンの削除🧹

ログインしてトークンを使えるようになったら、次は「ログアウト」も考えないといけません。Laravel Sanctumでは、トークンを削除することでログアウトが実現できます。

🚪 ログアウトAPIの例

以下のように、現在のトークンを削除するルートを作成します:

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->post('/logout', function (Request $request) {
    $request->user()->currentAccessToken()->delete();

    return response()->json(['message' => 'ログアウトしました']);
});

このAPIにアクセスすると、現在のトークンが削除され、以降は保護されたAPIにアクセスできなくなります。

🧼 すべてのトークンを削除する場合

もし「すべての端末からログアウトしたい」という場合は、以下のようにします:

$request->user()->tokens()->delete(); 

これで、そのユーザーが持っているすべてのトークンが削除されます。

ログアウトAPI トークン削除 ログアウト完了

トークンを削除することで、ログアウト処理もシンプルに実現できるんだね。これでAPIの基本的な認証の流れはひと通り完成!🎉

Laravelの「ルーティング」ってどう使う?図解でわかる基本のキ – ガチ…

Laravelの「ルーティング」ってどう使う?図解でわかる基本のキ – ガチ…

Laravelのルーティングをゼロから学ぶ!超基本の書き方から、Controllerへの紐付け、名前付きルート、ルートモデルバインディングまで丁寧に解説。もう迷わない。

Laravelのルーティングをゼロから学ぶ!超基本の書き方から、Controllerへの紐付け、名前付きルート、ルートモデルバインディングまで丁寧に解説。もう迷わない。

まとめ🌿

ここまで読んでくれてありがとう!LaravelとSanctumを使ったAPI認証の仕組み、少しずつ理解できてきたんじゃないかな?

最初は「APIって何?」というところから始まり、トークンの発行、保護されたルートの作成、ログアウト処理まで、ひと通りの流れを体験できたね。

  • APIとは? アプリ同士が会話するための仕組み
  • LaravelでAPIを作る routes/api.php にルートを定義
  • Sanctumで認証 トークンを使って安全に守る
  • ログイン・ログアウト トークンの発行と削除で管理
  • FAQで疑問解消 初心者がつまずきやすいポイントを確認

これらはLaravelのAPI開発のほんの入り口。でも、入り口をくぐったあなたはもうWebアプリ開発者の仲間入りだよ!🎉

もし「もっとやってみたい!」と思ったら、次は「ユーザー登録API」や「カテゴリ付きTodo API」などにも挑戦してみてね。Laravelの公式ドキュメントや、コミュニティの記事・動画もとっても頼りになるよ。

最後にひとこと。API開発は、まるで森の中の探検みたい。道に迷うこともあるけれど、地図(ドキュメント)と仲間(開発者コミュニティ)があれば、きっと前に進める。あなたのコードが、誰かの「便利」や「安心」につながる日を楽しみにしてるよ🍀

🌟 おつかれさまでした!次はAPIの応用編にも挑戦してみよう!🌟

LaravelでTodoアプリを作ってみよう!【超初心者向け】 – ガチエン…

LaravelでTodoアプリを作ってみよう!【超初心者向け】 – ガチエン…

Laravel初心者必見!この記事では環境構築からシンプルなTodoアプリの作成まで、図解やコード例つきでやさしく解説します。初めてのWebアプリ開発に挑戦したい方に最適な入門ガイドです。

Laravel初心者必見!この記事では環境構築からシンプルなTodoアプリの作成まで、図解やコード例つきでやさしく解説します。初めてのWebアプリ開発に挑戦したい方に最適な入門ガイドです。