Laravel11の環境構築と動作確認、認証機能を実装する
はじめに
WEBアプリ開発によく使われるPHPその代表的フレームワークであるLaravel。
今回はそのLaravelを使った簡単な認証、処理、表示を実装し、動作確認をしていきます!
環境
OS:MacBook Air (M2チップ)
バージョン:Sonoma 14.4.1
PHP:8.3.14
Laravel:11.44.2
Laravel のドキュメントについて
ドキュメントとは、プログラムの使い方や仕様を説明する文章のことです。
開発者やユーザーがコードを理解しやすくするために作成してくれています。
▶ 公式ドキュメント:https://laravel.com/docs/11.x ▶ ドキュメントの日本語訳:https://readouble.com/laravel/11.x/ja/
困ったことがあれば見てみてください
環境構築
PHPとComposerのセットアップ
Laravelの環境構築には PHP と Composer のセットアップが必要です。
まず、以下のコマンドでインストールされているか確認してください。
$ php --version
PHP 8.3.14 (cli) (built: Nov xx xxxx xx:xx:xx) (NTS)
$ composer --version
Composer version 2.8.5 xxxx-xx-xx xx:xx:xx
✅ 上記のようになっていればOKです
セットアップはこちら
▶ PHPのセットアップ手順
▶ Composerのセットアップ手順(公式ドキュメント)
セットアップが完了したら、再度上記のコマンドを実行して確認をしてください
Laravel11の環境構築
Laravelの環境構築の方法は主に2つあります
1. composer create-projectを使ったやり方(おすすめ)
最新バージョンでプロジェクトを生成
$ composer create-project laravel/laravel [project-name]
バージョンを指定してプロジェクトを生成(今回はこちら)
$ composer create-project “laravel/laravel=11” [project-name]
-> = の後にメジャーの値のみを指定するとそのバージョンの最新版がセットアップされます
2. インストーラーを使った方法
まず、インストーラーをダウンロード
$ composer global require laravel/installer
次に、インストーラーを使ってセットアップ
$ laravel new [project-name]
確認
$ php artisan --version
Laravel Framework 11.44.2
✅ これで環境構築が完了しました!
動作確認
💪では、動作確認をしてみましょう!
$ php artisan serve
INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the server
URLをCtrlとCを押しながらクリックし、トップページが表示されればOKです🎉
ファイルの紹介
自動的に色々なディレクトリが生成されていますよね?
そのディレクトリごとの簡単な解説をします。みてわかる人は跳んで次に進んでください
ディレクトリ名 | 機能 | 説明 |
---|---|---|
app | アプリケーションコード | Laravelアプリの主要なロジックを管理するディレクトリ |
bootstrap | アプリケーションの起動処理 | Laravelのフレームワークを起動し、設定やキャッシュを管理するディレクトリ |
config | 設定ファイル | Laravelの設定ファイルを管理するディレクトリ |
database | データベース管理 | データベースに関連するファイルを管理するディレクトリ |
public | Web, 公開ディクトリ | 公開アクセスが許可されたファイルを配置するディレクトリ |
resources | ビュー、テンプレート、言語ファイル管理 | ビューや言語ファイル、未コンパイルのアセットを管理するディレクトリ |
routes | ルーティング管理 | アプリケーションのルーティングを定義るすディレクトリ |
storage | キャッシュやログ管理 | アプリケーションのファイルやキャッシュを保存するディレクトリ |
tests | テストファイル | Laravelアプリケーションのテストコードを管理するディレクトリ |
vendor | 環境ファイル | Composerによってインストールされた外部パッケージやライブラリを管理 |
このような構成です
認証機能
では認証機能を実装します
🙋あれ?表示画面や処理をせずに先に認証機能をするの?
と思うかも知れませんが、
Breezeを使った認証機能の場合は、先にBreezeをインストールしておくことが重要です。
なぜ先にインストールするべきか?
->config/auth.php
などの設定が自動的に書き換えられるからです
開発が進んだ後にこの認証機能を実装し、設定が自動的に書き換わると...
考えたくもないですね 😇
🪪Breeze実装
では、Breezeを使って認証機能を実装していきます
基本的に以下の通りにすれば大丈夫なはずです▶ Breezeをインストール
今回はBladeテンプレートを使用します
$ composer require laravel/breeze --dev
$ php artisan breeze:install blade
その他オプション(必要なら)
$ php artisan breeze:install [第一引数] [--オプション]
第一引数
フロントエンド | 説明 |
---|---|
Blade | Bladeテンプレート |
React | Reactフロントエンド |
Vue | Vueフロントエンド |
API | APIのみ |
オプション
オプション | 説明 |
---|---|
--dark |
ダークモードUI有効 |
--ssr |
サーバーサイドレンダリング有効 |
--typescript |
TypeScriptサポート有効 |
--pest |
PHPUnitの代わりにPestテストを利用 |
--念の為--
$ php artisan migrate
INFO Nothing to migrate.
✅ これでだけでBreezeのインストールは完了です!
⭐️また, 認証時のエラー文や言語設定を日本語化させたい方はBreezejpを追加で設定します
Breezejpを適応
$ composer require askdkc/breezejp --dev
$ php artisan breezejp
.
.
.
Laravel Breeze用に日本語翻訳ファイルを準備します
config/app.phpのlocaleをjaにします
GitHubリポジトリにスターの御協力をお願いします🙏 (yes/no) [yes]:
(ブラウザが開いてこのGitHubリポが開きます。スター頂けると励みになります)
Thank you! / ありがとう💓
日本語ファイルのインストールが完了しました!
上記のコマンドを実行した後に、再度
$ php artisan serve
✅ をすると、トップページにLoginとRegisterが現れたと思います!
🖊️Registerで新規登録してみましょう
- Registerをクリックし、
- 情報を記述します(パスワードはデフォルトで8文字以上必要です)
- 登録
データベースに保存されているか確認する
🗂️今回はデフォルトで設定されているDBであるSqliteを使っています。
[project-name]/database/database.sqlite
にファイルがあります
中身を見てみましょう
・sqlite3のシェルを開く
$ sqlite3 database/database.sqlite
・テーブル一覧を表示
sqlite> .tables
・先ほど登録したユーザー情報を表示
sqlite> SELECT * FROM users;
1|test|test@example.com||$2y$12$MedIemeUkI3igLEYWMUEHu1eou5WbcsjE/FTDL2O8iEj40vKI564e||xxxx-xx-xx xx:xx:xx|xxxx-xx-xx xx:xx:xx
sqlite>
上記のコマンドで登録した情報が確認できたらOKです🎉
他のデータベースが使いたい方は各自で設定してください!💪
ページを作ってみよう
では認証機能もできたので、ページを作ってみましょう
今回は http://127.0.0.1:8000/hello
のページを追加していきます
📄viewファイルを作成
まず、見た目のviewファイルを作成します。
$ php artisan make:view hello
元コマンド
$ php artisan make:view [ファイル名]
[project-name]/resources/views
の中にhello.blade.phpが生成されます
中身を以下のように記述
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>
@if(filled($name) && filled($hobby)) //nameとhobbyの値がどちらも存在すれば
こんにちは、{{ $name }}さん!<br/>
{{ $hobby }}が好きなんですね!
@else //nameかhobbyがなければ
名前と趣味を入力してください。
@endif
<form> //送信ボタンが押されるとnameとhobbyが送信される
名前:<input type="text" name="name" value="{{ $name }}">
<br/>
趣味:<input type="text" name="hobby" value="{{ $hobby }}">
<input type="submit" value="送信する">
</form>
</body>
</html>
✅ これで見た目はできました!
🪢ルーティングを設定
次にルーティングを設定します
[project-name]/routes/
のweb.phpで
use App\Http\Controllers\HelloController;
HelloControllerクラスを使うと宣言
Route::get('hello', [HelloController::class, 'index'])
->middleware('auth') // authミドルウェアを追加
->name('hello');
認証済みのユーザーが/hello
というURLにアクセスしたときにHelloControllerクラスのindexメソッドを呼び出す
この二つを追加します
編集後のweb.php
<?php
use App\Http\Controllers\HelloController;
use App\Http\Controllers\ProfileController;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function () {
return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
Route::get('hello', [HelloController::class, 'index'])
->middleware('auth') // authミドルウェアを追加
->name('hello');
require __DIR__.'/auth.php';
✅ このようにすればOKです
🎛️コントローラーファイルを作成
最後に処理を行うコントローラーを作成します
$ php artisan make:controller HelloController
元コマンド
$ php artisan make:controller [コントローラー名]
[project-name]/app/Http/Controllers/
にHelloCOntroller.phpが生成されます
中身を以下のように記述
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index(Request $request)
{
$name = $request->input('name'); //$requestの中からnameプロパティを取得
$hobby = $request->input('hobby'); //$requestの中からhobbyプロパティを取得
// ビューにnameとhobbyを渡してHTMLを生成し、表示
return view('hello', ['name' => $name, 'hobby' => $hobby]);
}
}
✅ コントローラの準備が完了しました!
👣動作確認
http://127.0.0.1:8000/hello
に移動してください
画面内容
この画像のようになっていれば成功です🎉🎉🎉
フォームに値を入力してどう変わるか試してみてください!
🍛 お疲れ様でした〜
今回はLaravel11を使った認証機能やちょっとした画面を作りました
難しかったでしょうか?
ちなみに私は初めてLaravelを触ったときは難しく感じましたね...💧
ほんとに初心者向けの言語なのか?とも思いました
そんな話はさておき、今回の記事でLaravelプロジェクトを始めるきっかけになっていただけたら嬉しいです!
Discussion