|
|
【カテゴリ】
これからはじめるLaravel実践入門
 |
山田祥寛/著
SBクリエイティブ株式会社/発行
定価
4,510円
B5変版・
624ページ・
2色
ISBN 978-4-8156-2529-0
発刊日:
2026年4月01日
|
[お知らせ] 本書発売記念! Laravel 13対応 電子書籍(PDF)プレゼントキャンペーン
本書の特徴
MVCの基本からReact連携によるモダン開発まで
LaravelによるWebアプリ開発の基礎から実践ノウハウまで、この1冊で着実に身につきます。書籍の後半では、LaravelとReact(Inertia.js)を組み合わせたモダンなフロントエンド開発や、認証・認可などの実践的なテーマも詳しく解説します。
サンプルコードは、サポートページよりダウンロード可能で、試しながら理解できます。
|
Contents |
|
- 1 イントロダクション
-
1-1 Laravel とアプリケーションフレームワーク
1-1-1 フレームワークの歴史
1-1-2 Laravelの特徴
フルスタックのフレームワークである
Model−View−Controller パターンを採用
ドキュメントなどのリソースが充実
1-2 Laravel を利用するための環境設定
1-2-1 準備すべきソフトウェア
1-2-2 Laravel Herdのインストール
1-2-3 Visual Studio Codeのインストール
- 2 Laravel の基本
-
2-1 はじめての Laravel
2-1-1 補足:composer run devコマンドの実体
2-2 コントローラーの基本
2-2-1 コントローラークラスの作成
2-2-2 コントローラークラスの基本構文
2-2-3 ルーティングの基本
2-2-4 補足:Route::getメソッドの別記法
引数$actionを匿名関数で指定する
コントローラー配下のルートをまとめる
2-3 ビューの基本
2-3-1 ビュー変数とテンプレートの呼び出し
2-3-2 Bladeテンプレートの基本
{{… }}の役割
2-3-3 サンプルの実行
補足:テンプレートのコンパイル処理
2-4 モデルの基本
2-4-1 Eloquentとは?
2-4-2 データベース利用の準備
2-4-3 マイグレーションの作成/実行
2-4-4 シーダーの作成/実行
2-4-5 モデルクラスの作成
2-4-6 データ取得の基本
2-5 Laravel の設定情報
2-5-1 主な設定ファイルと構造
2-5-2 環境変数ファイル(.env)
2-5-3 アプリ固有の設定情報を追加/取得する
2-5-4 補足:設定情報をキャッシュする
2-6 VSCode + PHP Debug 拡張によるデバッグ
2-6-1 デバッグ機能の有効化
2-6-2 デバッグの実行
- 3 Laravel によるCRUD アプリ開発
-
3-1 リソースコントローラーとリソースルート
3-1-1 リソースコントローラーの作成
3-1-2 リソースルートの定義
リクエストパスに含まれる{book}の意味
3-2 一覧画面の作成
3-2-1 共通レイアウトの準備
3-2-2 一覧画面の実装
3-3 詳細画面の作成
3-3-1 主キーでレコードを検索する - showアクション
3-3-2 モデルの内容を単票表示する - show.blade.php
3-3-3 別解:パラメーター取得、データ検索の異なる記法
レコードが存在しない場合に404エラーを発生させる
アクションにモデルオブジェクトを直接引き渡す
3-4 新規登録画面の作成
3-4-1 入力フォームの実装
3-4-2 入力値の挿入処理
3-5 編集画面の作成
3-5-1 編集フォームの実装
3-5-2 補足:新規登録画面をサブビュー対応にする
3-6 削除機能の生成
3-6-1 [削除]ボタンを実装する
3-6-2 削除操作を実装する
- 4 ビュー開発
-
4-1 埋め込み構文 - {{ … }} 構文
4-1-1 文字列をHTMLとして埋め込む - {!!… !!}
ダブルエンコーディングを無効化する
4-1-2 {{… }}を無効化する - @構文
複数の{{… }}式をまとめて無効化する
4-1-3 テンプレートにコメントを加える - コメント構文
4-2 ディレクティブ(条件分岐)
4-2-1 式の真偽に応じて表示/非表示を切り替える - @if
3 個以上の分岐を表現する - @elseif
4-2-2 否定の条件で分岐する - @unless
4-2-3 変数の有無で表示を分岐する - @isset/@empty
4-2-4 環境によって表示を切り替える - @env
@env ディレクティブの別構文
4-2-5 式の値に応じて表示を切り替える - @switch
4-3 ディレクティブ(ループ)
4-3-1 配列の内容を順に出力する - @foreach
連想配列をループする
ループ変数を参照する
4-3-2 コレクションが空の場合の出力を決める - @forelse
4-3-3 その他の反復ディレクティブ
4-3-4 ループを即座に脱出する - @break
4-3-5 現在の周回をスキップする - @continue
4-4 ディレクティブ(属性、その他)
4-4-1 スタイルクラスを動的に設定する - @class
スタイルプロパティを動的に設定する - @style
4-4-3 任意のコードを実行する - @php
補足:@useディレクティブ
4-5 ディレクティブの自作
4-5-1 シンプルなディレクティブ
戻り値はなぜ<?php 〜?>
4-5-2 自作の条件分岐ディレクティブ
4-5-3 補足:ヘルパー関数
ヘルパー関数の準備
ヘルパー関数の利用
4-6 コンポーネント
4-6-1 コンポーネントの基本
コンポーネントの利用方法
コンポーネントの定義
4-6-2 未定義の属性を引き渡す - 属性バッグ
属性バッグの主なメソッド
4-6-3 要素配下のコンテンツを受け渡す - スロット
名前付きスロット
例:レイアウトに複数のセクションを設ける
コンポーネントクラスのpublicメンバー参照
応用:スロット経由でテンプレートを引き渡す
4-6-4 補足:複数のコンテンツを追加する - スタック
4-6-5 さまざまなコンポーネントの記法
匿名コンポーネント
匿名インデックスコンポーネント
親→子コンポーネントに属性を受け渡す - @aware
インラインコンポーネントビュー
動的コンポーネント
4-6-6 補足:サブビュー
@include Xxxxx ディレクティブ
コレクションビュー
4-7 ビューコンポーザー
4-7-1 ビューコンポーザーの基本
4-7-2 ビューコンポーザーのクラス化
4-7-3 補足:ビュークリエイター
- 5 モデル開発(クエリ)
-
5-1 複雑な条件で検索を実行する - クエリビルダー
5-1-1 クエリビルダーの基本
クエリビルダーの結果を取得する
5-1-2 基本的な条件式を設定する - whereメソッド
5-1-3 補足:組み立てられたクエリの確認
ddメソッド
補足:イベントリスナー
5-1-4 「=」比較以外の比較演算子を利用する - where/whereXxxxx メソッド
JSONデータ型の内容を検索する
条件式をAND演算子で連結する
条件式をOR 演算子で連結する
AND/OR 演算子を組み合わせる
否定の条件式を作成する
同じ条件式(演算)をまとめて適用する
5-1-6 取得したレコード群の合計/平均などを求める - 集計メソッド
その他の集計メソッド
存在するかどうかにだけ関心がある場合
5-1-7 レコードを並べ替える - orderByメソッド
ソート式を削除/上書きする - reorder メソッド
ランダムに並べ替える
レコードを日付順に並べる
5-1-8 特定範囲のレコードだけを取得する - offset/limitメソッド
例:簡易なページング機能を実装する
5-1-9 ページング付きの一覧画面を生成する - paginateメソッド
paginateメソッドの基本
ページャーのカスタマイズ
5-1-10 取得列を明示的に指定する - selectメソッド
取得列を「生の式」で指定する
補足:生の条件式を表す
重複した行を除去する
5-1-11 データを集計する - groupByメソッド
集計結果をもとにデータを絞り込む - havingメソッド
5-1-12 複数のクエリ結果を結合する - unionメソッド
5-2 より高度なデータの取得
5-2-1 条件付きでWHERE 句を着脱する - whenメソッド
5-2-2 ある問い合わせの結果に基づいてデータを検索する - サブクエリ
単一値を生成するサブクエリ
複数値を生成するサブクエリ
サブクエリでなんらかの結果が存在するかを確認する
5-2-3 よく利用する条件句を事前に準備する - ローカルスコープ
ローカルスコープの基本
5-2-4 既定で適用されるスコープを定義する - グローバルスコープ
グローバルスコープの基本
グローバルスコープの除外
グローバルスコープのクラス化
5-3 レコードの登録/更新/削除
5-3-1 データの新規登録
モデルの作成から保存までを一気に実行する
レコードのid値を取得する
レコードの重複エラーを無視する
レコードが重複する場合に更新する - upsertメソッド
存在しない場合にだけレコードを作成する - firstOrCreateメソッド
5-3-2 複数のレコードをまとめて更新する - updateメソッド
JSON列にデータを登録する
5-3-3 レコードを削除する
5-3-4 レコードを論理削除する
補足:論理削除したレコードの操作
5-3-5 不要になったデータを整理する - prunableメソッド
5-3-6 トランザクション処理を実装する - transactionメソッド
トランザクション処理の挙動を確認する
トランザクション分離レベルを指定する
5-3-7 補足:その他のデータ操作メソッド
- 6 モデル開発(リレーション)
-
6-1 リレーションシップと命名規則
6-1-1 参照元テーブルから参照先テーブルにアクセスする - belongsToメソッド
リレーション機能によるアクセス
6-1-2 1:nの関係を定義する - hasManyメソッド
6-1-3 1:1の関係を表現する - hasOneメソッド
リレーション機能によるアクセス
6-1-4 m:nの関係を表現する(1) - belongsToManyメソッド
6-2 リレーションのカスタマイズ
6-2-1 紐づけのキーを変更する
6-2-2 テーブルを跨いだ1:nの関係を表現する - hasManyThroughメソッド
モデルの定義
hasManyThrough関係を利用した例
6-2-3 関係先が存在しない場合の既定モデルを準備する - withDefaultメソッド
6-2-5 複数の関連モデルから特定のひとつを取得する(2)- ofManyメソッド
関連を取得する際の抽出条件を追加する
6-2-6 中間テーブルの情報を取得する - withPivotメソッド
6-2-7 中間テーブル列を利用したモデルのフィルタリング - wherePivotメソッド
6-2-8 中間テーブル列による関連モデルの並べ替え - orderByPivotメソッド
6-3 ポリモーフィック関係
6-3-1 ポリモーフィック関連のためのテーブル
6-3-2 ポリモーフィック関連のためのモデル
6-3-3 ポリモーフィック関係による参照
単一のメモを取得する
複数のメモを取得する
子モデルから親モデルにアクセスする
6-3-4 m:n関係におけるポリモーフィック関係
6-4 リレーションを介したクエリの構築
6-4-1 関連先のテーブルを絞り込む
or 条件の連結に注意
6-4-2 BelongsTo関係のモデルで検索する - whereBelongsToメソッド
6-4-3 関連するモデルが存在するかを判定する - hasメソッド
6-4-5 N+1クエリ問題を解決する - withメソッド
withメソッドの別構文
Eager Loadするモデルを宣言する
6-4-6 関係モデルによる集計を実行する - withXxxxx メソッド
withCountメソッドの別構文
そのほかの集計メソッド
6-5 関連モデルの登録/更新/削除
6-5-1 関連モデルの挿入 - saveメソッド
6-5-2 関係モデルを作成/保存する - createメソッド
6-5-3 関係モデルの更新 - pushメソッド
6-5-4 関係モデルの紐づけを更新する - associateメソッド
6-5-5 m:n関係での紐づけを追加/削除する - attach/detachメソッド
紐づけを同期する - syncメソッド
紐づけをオン/オフする - toggleメソッド
追加情報を更新する - updateExistingPivotメソッド
- 7 モデル開発(属性、マイグレーション、ファクトリー)
-
7-1 属性値の操作
7-1-1 属性の取得時に値を変換する - アクセサー
例:複数の属性をもとに値を生成する
7-1-2 属性値の設定時に値を整形する - ミューテーター
例:ミューテーターで検証機能を実装する
例:複数属性の一括更新
7-1-3 属性値の型を変換する - 属性キャスト
Stringable型
encrypted型
ArrayObject型
Enum型
7-1-4 例:キャスト型を自作する
補足:値オブジェクトをキャスト可能にする
7-2 マイグレーション
7-2-1 テーブルの作成
列定義メソッド(データ型)
列修飾メソッド(列属性)
テーブル/インデックス操作
7-2-2 マイグレーションファイルで利用できる主なメソッド
列を追加する
列を更新する
列を削除する
7-2-3 マイグレーションの実行
接続先データベースを変更する - databaseオプション
実行するマイグレーションのパスを設定する - pathオプション
詳細メッセージを抑制する - silentオプション
生成されるSQL 命令だけを確認する - pretendオプション
本番環境でマイグレーションを実行する - forceオプション
7-2-4 スキーマファイル
スキーマファイルの実行
7-3 モデルファクトリー
7-3-1 ファクトリーの基本
7-3-2 モデル属性のカスタマイズ
属性の書き換え(基本)
循環する値を指定する
循環する値をクロージャーで作成する
属性の変更ルールをメソッドにまとめる
7-3-3 リレーションを伴うデータ生成
7-3-4 リレーション関連のマジックメソッド
forXxxxx メソッド
- 8 コントローラー開発
-
8-1 レスポンス
8-1-1 Responseオブジェクトの基本
8-1-2 テンプレート指定時に応答ヘッダーを付与する
8-1-3 JSON形式の応答を生成する
補足:jsonメソッドの省略形
8-1-4 指定されたファイルをダウンロードさせる
注意:リクエストデータからファイルパスを指定しない
8-1-5 任意のデータを送出する
8-1-6 処理をリダイレクトする
リダイレクトに伴うステータスコードを制御する
補足:オープンリダイレクト脆弱性を防ぐ
8-2 リクエスト
8-2-1 ポストデータ/クエリ情報を取得する
汎用的な取得メソッド - inputメソッド
プロパティ構文でアクセスする - 動的プロパティ
データ型を明示して入力値を取得する - date、enumなど
8-2-2 リクエストヘッダーを取得する
補足:サーバー環境変数を取得する
8-2-3 ファイルをアップロードする
アップロードのエラー処理
8-2-4 ファイルをアップロードする(2) - データベースへの保存
8-3 状態管理
8-3-1 クッキーを読み書きする
8-3-2 セッションを利用する
セッションのしくみ
セッションの設定
セッションの基本
別解:Sessionオブジェクト経由でのアクセス
8-3-3 フラッシュ
フラッシュの基本
フラッシュ関連のメソッド
8-4 入力値検証
8-4-1 Laravel で利用できる検証機能
8-4-2 検証機能の基本
8-4-3 そのほかの検証ルール
日付ルール - after:date
dimensions:attr=value, …
enum検証
email 検証
8-4-4 検証の挙動を制御するルール
検証エラー時に以降の処理を中断する - bail
ある項目の値に応じて検証を実行する - exclude_if
8-4-5 検証ルールの自作
検証ルールの基本
自作ルールにパラメーターを引き渡す
複数の項目に跨って入力値を検証する
簡単なルールをクロージャーで表現する
8-4-6 入力値検証を分離する - フォームリクエスト
フォームリクエストの基本
8-4-7 フォームリクエストの拡張
エラーメッセージのカスタマイズ
検証エラー時の挙動を決めるパラメーター
検証処理のための前処理
- 9 Laravel アプリの構造
-
9-1 サービスと依存性注入
9-1-1 依存性注入とは?
9-1-2 依存性の解決
コンストラクターインジェクション
@injectディレクティブ
appヘルパー
callメソッド
9-1-3 自作サービスの登録
9-1-4 サービスのさまざまな登録方法
クロージャーによるインスタンス化
シングルトンなサービスを注入する
属性構文で紐づけを管理する
プリミティブ値を注入する
複数のサービスをまとめて登録する
サービスを遅延ロードする
複数の実装をまとめて注入する
9-1-5 補足:ファサード
ファサードのしくみ
9-2 ロギング
9-2-1 ログの基本
ログレベルによるフィルタリング
9-2-2 ログの出力先を変更する - チャンネル設定
既定のチャンネル設定
9-2-3 既定で用意されたチャンネル
非推奨警告に関するログ
例:Slackにログを出力する
9-2-4 ログメッセージの出力形式をカスタマイズする
Formatter の基本
例:コンソールへのログをカラー表示する
9-2-5 ログメッセージに情報を追加する「Processor」
Processor の挙動を変更する
Processor の自作
9-2-6 ログにコンテキスト情報を追加する
コンテキストの基本
共通のコンテキスト情報を設定する
9-2-7 独自のチャンネルを作成する
9-3 ルーティング
9-3-1 ルーティングの基本
HTTPメソッドによるルートの振り分け
ルート定義を確認する
補足:ルートの名前
9-3-2 ルートパラメーター
ルートパラメーターの基本
ルートパラメーターのさまざまな表現
9-3-3 リソースを伴うルート
生成するルートを限定する - only /exceptオプション
ルートの名前を変更する - namesオプション
ルートパラメーターの値を変更する - parametersオプション
ルートパラメーターの制約条件を付与する - wheresオプション
メソッドとして指定するパターン
階層を伴うリソースルート
リソースの「浅い」ネストを表現する - shallow オプション
9-3-4 ルート定義のグループ化
ルートに共通のパス接頭辞を付与する
ルート名に共通の接頭辞を加える
例:ルート群へのトラフィックを制限する
9-3-5 特殊なルート表現
アクションを経由しないルートを定義する
別のルートにリダイレクトする
シングルアクションコントローラー
フォールバックルート
9-4 ミドルウェア
9-4-1 ミドルウェアの基本
9-4-2 後処理のためのミドルウェア
一般的なミドルウェアの構文
9-4-3 ミドルウェアの登録方法
グローバルミドルウェア(標準)
ルートグループミドルウェア
ルートミドルウェア
コントローラーミドルウェア
コントローラーミドルウェア(クロージャー)
9-4-4 ミドルウェアの管理テクニック
ミドルウェアをグループ化する
標準で用意されたミドルウェアグループ
ミドルウェアに別名を付与する
ミドルウェアにパラメーターを追加する
- 10 クライアントサイド開発
-
10-1 フロントエンド開発の選択肢
10-1-1 JavaScriptレスが特長の「Livewire」
10-1-2 React/Vue.jsとのシームレスな連携を支える「Inertia.js」
10-2-1 Inertiaプロジェクトの作成
10-2 Inertia の基本
10-2-2 Inertiaアプリ起動の流れ
10-2-3 サーバーサイドに関わる設定
補足:ミドルウェアをアプリに登録する - app.php
10-2-4 クライアントサイドに関わる設定
フロントエンド側のビルド設定を定義する - vite.config.ts
JavaScriptコードの基点を定義する - app.tsx
ルートテンプレートを準備する - app.blade.php
10-2-5 トップページの実装を確認する
ルーティング(アクション)定義
トップページを描画する - welcome.tsx
10-3 Inertia で書籍管理アプリを実装する
10-3-1 書籍一覧画面
10-3-2 既存書籍の詳細/削除画面
10-3-3 新規書籍の登録画面
10-4 認証機能
10-4-1 認証の基本設定
10-4-2 認証に関わるルート情報
補足:メール認証を有効にする
10-4-3 ログイン機能
10-4-4 ログアウト機能
10-4-5 新規ユーザー登録画面
10-4-6 パスワードリセット画面
トークン要求フォーム
パスワードリセット画面
10-4-7 パスワードの再確認
パスワードの再確認を有効化
10-5 認可(ゲート/ポリシー)
10-5-1 ゲートの基本
10-5-2 ポリシーの基本
- 11 Laravel の高度な機能
-
11-1 電子メールを送信する - Mailable
11-1-1 メール機能を利用する準備
11-1-2 メール送信の基本
11-1-3 複数フォーマットでのメール配信
HTMLメール送信の基本
multipart/alternative 形式のメール
Markdown形式のメール
markdownメールのカスタマイズ
11-1-4 添付ファイル付きのメールを送信する
Attachment 生成のためのメソッド
画像ファイルのインライン添付
11-1-5 メールを非同期で送信する
11-2 時間のかかる処理を非同期に実行する - キュー
11-2-1 キューの設定
11-2-2 ジョブの登録から実行まで
11-2-3 失敗ジョブの制御
再試行/失敗に関わるパラメーター
再試行/例外に関わるメソッド
ModelNotFoundException 例外への対処
失敗ジョブの保存先
失敗ジョブが発生した時の処理を実装する
失敗ジョブを確認/再試行する
FailOnExceptionミドルウェアによる例外判定
11-2-4 応用的なジョブ管理 - 条件付き実行からトランザクション連携
条件付きでジョブを登録する
ジョブの実行を遅延する
ジョブの実行を遅延する(トランザクション連携)
ジョブを分類する
ジョブの一意性を保証する
ジョブの一意性を保証する(キー設定)
11-3 イベントに応じた処理を実装する - リスナー
11-3-1 なぜイベントか?
11-3-2 イベント/リスナーの基本
11-3-3 Laravelの標準イベント
11-3-4 さまざまなイベント/リスナーの設定方法
リスナーをクロージャーで定義する
複数のイベントをまとめて監視する - イベントサブスクライバー
リスナーの処理内容をキューに投入する
11-3-5 補足:Eloquentモデルのイベント
$dispatchesEventsプロパティ
bootedメソッド
オブザーバー
11-4 アプリの国際化対応
11-4-1 国際化対応の基本
11-4-2 ロケールを動的に設定する方法
ブラウザーの言語設定に応じてロケールを変更する
ルートパラメーター経由でロケールを設定する
11-4-3 例:laravel-langパッケージによる言語ファイルの準備
フィールド名の日本語化
独自のルールクラスを日本語化ファイルに対応する
11-4-4 言語ファイルのさまざまな記法
翻訳文字列をキーとする
単数/複数形の翻訳を区別する
- Column
-
識別子の記法
生成 AI による開発支援を提供する「Laravel Boost」
Herd から新規プロジェクトを作成する
Laravel Boost のインストール方法
メンテナンスモード(基本)
メンテナンスモード(動作オプション)
Laravel をより深く学ぶための参考図書
|
|