PHP

Laravel

【Laravel】Laravelアプリを本番環境にデプロイする流れ

こんにちは、かつコーチです。前回は、GitHub Actionsでテストを自動化するCIの仕組みを解説しました。テストが安心して通せるようになったら、次はいよいよ「本番環境にアプリを届ける」というステップに進みます。ここから数回にわたって、...
Laravel

【Laravel】GitHub ActionsでLaravelのテストをCI連携する

こんにちは、かつコーチです。前回まで、FactoryとRefreshDatabaseを使ってテストデータを整える方法を解説してきました。ローカル環境で php artisan test を実行すれば、テストが通るかどうかは確認できます。です...
Laravel

【Laravel】FactoryとRefreshDatabaseでテストデータを整える

こんにちは、かつコーチです。前回はUnit Testで、DBに依存しない単体ロジックのテスト方法を解説しました。今回は、DBを使うテストを書くうえで欠かせない「Factory」と「RefreshDatabase」を解説します。これでテスト編...
Laravel

【Laravel】Unit Testでモデル・サービスクラスをテストする

こんにちは、かつコーチです。前回はFeature Testで、コントローラを含めた機能全体の動作を検証する方法を解説しました。今回は、モデルやサービスクラスといった「単体のロジック」を検証するUnit Testを解説します。Unit Tes...
Laravel

【Laravel】Feature Testでコントローラの動作をテストする

こんにちは、かつコーチです。前回はPHPUnitの基本と、テストの書き方の土台を解説しました。今回は、Laravel独自の仕組みであるFeature Testを使って、コントローラやルーティングを含めた「機能全体」をテストする方法を解説しま...
Laravel

【Laravel】PHPUnitの基本:Laravelでテストを書く準備

こんにちは、かつコーチです。前回はロール・権限管理の実装パターンを解説し、認証・セキュリティ編を締めくくりました。今回からは新章、「テスト」編に入ります。初回となる今回は、Laravelのテストの土台になっているPHPUnitの基本を扱いま...
Laravel

【Laravel】ロール・権限管理の実装パターン

こんにちは、かつコーチです。前回はパスワードハッシュ化(bcrypt)の仕組みを解説しました。ログイン機能ができると、次にぶつかるのが「管理者だけがこの画面を見られるようにしたい」という要望です。今回はLaravelにおけるロール・権限管理...
Laravel

【Laravel】パスワードハッシュ化(bcrypt)の仕組み

こんにちは、かつコーチです。ここまでSanctumによるAPI認証、Policy・Gateによる認可、CSRF対策、XSS対策と、Laravelのセキュリティ機能を順番に見てきました。今回はその締めくくりとして、認証の土台となるパスワードの...
Laravel

【Laravel】XSS対策:Bladeのエスケープ処理を理解する

こんにちは、かつコーチです。前回はCSRF対策について解説しました。今回は、もう一つの代表的なWeb脆弱性であるXSS(クロスサイトスクリプティング)と、Laravelの標準テンプレートエンジンBladeがどう対策しているかを見ていきます。...
Laravel

【Laravel】CSRF対策の仕組みとLaravelでの実装

こんにちは、かつコーチです。前回はPolicy・Gateを使った認可の仕組みを扱いました。今回は、Webアプリのセキュリティで必ず押さえておきたいCSRF(クロスサイトリクエストフォージェリ)対策について解説します。Laravelは標準でC...
Laravel

【Laravel】Policy・Gateで認可(権限チェック)を実装する

こんにちは、かつコーチです。前回はSanctumを使ったAPI認証を紹介しました。「誰なのか」を確認するのが認証だとすると、今回のテーマは「その人に何ができるのか」を確認する認可です。Laravelでは、この認可のロジックをPolicyとG...
Laravel

【Laravel】Laravel SanctumでAPI認証を実装する

こんにちは、かつコーチです。前回はBreeze・Jetstream・Fortify・Sanctumの違いを整理して、「どの認証機能を選べばいいか」の判断軸を紹介しました。今回はその中でも、SPA連携やモバイルアプリのバックエンドでよく使われ...
Laravel

【Laravel】Laravel Breeze・Jetstream・Fortify・Sanctumの違いを整理する:認証機能はどれを選ぶべき?

こんにちは、かつコーチです。前回はEloquentのキャスト・アクセサ・ミューテタの使い分けを解説しました。今回からは新しいテーマ、「認証・セキュリティ」に入っていきます。Laravelで会員登録・ログイン機能を作ろうとすると、必ずぶつかる...
Laravel

【Laravel】Laravel11の機能を解説

こんにちは、かつコーチです。2024年2月にLarave11がリリースされました。今回はそのLaravel11の機能について解説します。Laravel 11 は、これまでのバージョンから大きな進化を遂げています。特に、ファイル数の削減や、コ...
Laravel

【Laravel】Livewire3.0の機能を解説

こんにちは、かつコーチです。2023年8月にLivewire3.0がリリースされました。Livewire 3.0は、以前のバージョンから大きな進化を遂げ、多くの新機能と改善点が導入されました。このバージョンは、パフォーマンスの向上や開発者の...
PHP

【PHP】テスト

こんにちは、かつコーチです。プログラミングにおいて開発をしてすぐリリースとなるのではなく、開発したものが正しく動作するのかチェックする必要があります。そのために「テスト」というのは大変重要になってきます。PHPにおけるテストについての包括的...
Laravel

【Laravel】Eloquentのキャスト・アクセサ・ミューテタの使い分け

こんにちは、かつコーチです。前回はソフトデリートによる安全な削除の仕組みを解説しました。今回は、Eloquentモデルの値を「取得するとき」「保存するとき」に自動加工できる3つの機能、キャスト・アクセサ・ミューテタを扱います。似たような役割...
CakePHP

【Laravel】ソフトデリート(SoftDeletes)の使い方

こんにちは、かつコーチです。前回はトランザクションでデータ整合性を守る方法を解説しました。今回は、削除処理を「取り消せる形」にしておくための機能、SoftDeletes(ソフトデリート)を扱います。「うっかり削除してしまった」というミスは、...
Laravel

【Laravel】トランザクション(DB::transaction)でデータ整合性を守る

こんにちは、かつコーチです。前回はページネーションの実装方法を解説しました。今回は、複数のテーブルを更新する処理で必ず意識しておきたい「トランザクション」を扱います。「一部だけ更新が成功して、一部だけ失敗する」という状態は、データベースの整...
Laravel

【Laravel】LengthAwarePaginatorでページネーションを実装する

こんにちは、かつコーチです。前回はN+1問題とeager loadingについて解説しました。今回は、一覧画面を作るときに必ずと言っていいほど必要になる「ページネーション」を扱います。Laravelにはpaginate()という便利なメソッ...