ISBN: 978-4-8156-2529-0
これからはじめるLaravel実践入門
山田祥寛 著
| 著者 | 山田祥寛 |
|---|---|
| 出版社 | SBクリエイティブ |
| 価格 | 4,100円(税別) |
| 判形 | B5変版・2色 |
| ページ数 | 624ページ |
| 発売日 | 2026年4月1日 |
| シリーズ | これからはじめる実践入門 |
| 対象レベル | 中級 |
MVCの基本からReact連携によるモダン開発まで
LaravelによるWebアプリ開発の基礎から実践ノウハウまで、この1冊で着実に身につきます。書籍の後半では、LaravelとReact(Inertia.js)を組み合わせたモダンなフロントエンド開発や、認証・認可などの実践的なテーマも詳しく解説します。サンプルコードは、サポートページよりダウンロード可能で、試しながら理解できます。
更新履歴
- FAQ情報:2026年4月5日 更新
- 正誤訂正:2026年3月31日 更新
目次
- 導入編
- 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 をより深く学ぶための参考図書
正誤表
| 該当頁 | 該当箇所 | 修正刷 |
|---|---|---|
| 訂正箇所 | 訂正事項 | 更新日 |
| p.118 | リスト 4-2-6 下から2行目 | - |
| <div class="alert-danger"> | <div class="alert alert-danger"> | 2026/03/31 |
| p.337 | 本文 9行目 | - |
| InvalidArgumentException例外 | InvalidFormatException例外 | 2026/03/31 |
FAQ
ダウンロード
お問い合わせ
書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。
お問い合わせの前にFAQ・正誤表をご確認ください。すでに掲載済みの内容については個別回答が難しい場合があります。