1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Next.js + Laravel Breezeを使ったアプリケーションのセットアップ

Posted at

はじめに

本記事をご覧いただきありがとうございます。東京でバックエンドをメインでやっているoonoです。今回はフロントにNext.js, バックエンドにLaravelを使用したアプリケーションのセットアップ方法を自身の備忘録を兼ねて記載していきます。

誤っている情報があればご教示いただけますと幸いです

前提

本記事では以下の前提で作業を進めていきます

  • npmがインストール済み
  • composerがインストール済み
  • ローカルでの起動のため、サーバー環境での動作は範囲外
  • Next.js14系
  • Laravel11
  • mac(windows環境の方は本記事の方法ですとWSL2が必要になります)

ゴール

本記事内容のゴールはNext.js + Laravelで作成するアプリケーションにてログイン・ログアウト処理ができるようになることです。想定するアプリケーションが提供する認証機能は以下のような感じです。

  • ログイン、ログアウト(今回はここを扱います)
  • ユーザー新規作成
  • パスワード再設定
  • メール認証

フロントエンドのセットアップ

では早速アプリケーションの構築をしていきましょう!
通常であればnpxコマンドでプロジェクトを1から作成するところですが、今回はBreeze Nextという便利なリポジトリがあるのでこちらをcloneしましょう。

フロントエンド用のディレクトリを用意

ご自身の好きなディレクトリにクローンします。私は「sample-app」というフォルダを作成し、その中に「fe」というフォルダ名でクローンします。

mkdir sample-app && cd sample-app

git cloneコマンドでリポジトリのURLの後にスペース続きで任意の作成するフォルダ名を指定できます(指定しない場合はリポジトリ名)

git clone https://github.com/laravel/breeze-next.git fe

環境変数を指定

Next.jsでローカル開発する際は「.env.local」というファイルに必要な変数を記載していきます。今回必要なのはバックエンドapiのパスです。feフォルダ直下に.env.localを作成し、バックエンドURLを記載します

touch .env.local

バックエンドURLを指定します。

.env.local
NEXT_PUBLIC_BACKEND_URL=http://localhost

ローカル起動

フロントエンドの画面が表示されるか確認していきます。
まずはnpmコマンドにてモジュールをインストール

npm install

ローカルサーバー起動

npm run dev

以下の画面が表示されていれば正常に動作しています。Laravelで開発されている方にはお馴染みの画面ですね。
image.png
ログイン画面もすでに用意されていますが、バックエンドが無いのでまだ動きません。
image.png

バックエンド構築

では続いてLaravelでバックエンドを構築していきましょう。Laravelでは認証系の処理をうまいことやってくれるパッケージがいくつかありますが、今回はBreezeを使います。Breezeではreact or vueでのscaffoldが用意されているほか、apiを想定したscaffoldも用意されており、アプリケーションの要件に応じて使い分けれるのも嬉しいです。

breezeでreactかvueを使用する際、inertia.jsという仕組みを使ってlaravelと画面のやり取りをうまいこと制御するため、爆速開発できます!!ので、こっちもおすすめです!

アプリのディレクトリに移動してLaravelアプリケーションをインストールします。今回はsailでコンテナ環境を立ち上げていきます。

cd sample-app

DBコンテナ、メールコンテナのみを使用します。フォルダ名は「be」とします

curl -s "https://laravel.build/be?with=mysql,mailpit" | bash

ビルドに時間がかかるので、気長に待ちましょう。最後にPCのパスワードを求められるのでそれを入力すればインストール完了です!beフォルダでバックエンドサーバーを起動しましょう。

cd be && ./vendor/bin/sail up -d

Breezeのセットアップ

続いて、Breezeをインストールします。

./vendor/bin/sail composer require laravel/breeze --dev

開発に使用するフォルダ群をインストール

./vendor/bin/sail artisan breeze:install

以下のようにどのモードを使用するか訊かれるのでAPI onlyを選択します。
image.png
テストコードの作成はしませんが、テストモジュールはPHPUnitにしておきます。
image.png
最後に作成されたマイグレーションファイルを実行するか訊かれるのでyesを入力します。
image.png
マイグレーション実行が成功すれば一通りの土台が完成です。

テストユーザーの作成

ログインを確認するためにテストユーザーをシーディングで作成します。

./vendor/bin/sail artisan make:seeder UserSeeder

Factoryで作成します、各値はお好みで。

UserSeeder.php
namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;

class UserSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        User::factory()->create([
            'name' => 'テスト氏名',
            'email' => 'mail@example.com',
        ]);
    }
}

データ作成します。

./vendor/bin/sail artisan db:seed --class=UserSeeder

ログイン処理の確認

フロントエンドとバックエンドの構築ができたのでログインを試してみましょう。先ほど作成したデータの値を入力します。(シーディング時のパスワードのデフォルト値は「password」です)
image.png
はい、ログインできました。ログイン画面とその先のコンテンツの土台が準備されてるのはめちゃくちゃありがたいですね。開発工数の短縮になります。
image.png
最後にログアウトも確認しておきます。右上のメニューからログアウト。
image.png

問題なくログアウトもできました。
image.png

あとはこの土台に沿って機能を載せていくだけですね。あっという間でした!!

まとめ

最後までご覧いただきありがとうございます。冒頭で紹介した通り、このリポジトリではユーザーの新規登録などBreezeが提供する認証機能は準備されているので試してみてください。
今回はローカルでの内容でしたが、ぜひサーバーへのデプロイまでチャレンジしてみることをおすすめします(私は0vercel, herokuを採用することが多いです)。サーバーデプロイにはさらに周辺知識も必要になるのでそこら辺も記事に起こしてみようかなと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?