収録問題 21問 / 10問ランダム出題
ランダムに出題・即時フィードバック・間違えた問題の復習機能付き
Laravelで、GET /users/{user} を UserController@show に結び付けたい。最も自然な定義はどれですか?
答え:Route::get('/users/{user}', [UserController::class, 'show']);
Route::get はGETリクエストのルート定義に使います。配列形式でControllerクラスとメソッドを指定できます。
Laravelで、ルートパラメータ {user} から自動的に User モデルを受け取りたい。主に使われる仕組みはどれですか?
答え:ルートモデルバインディング
ルートモデルバインディングにより、ルートパラメータから対応するEloquentモデルをController引数へ注入できます。
LaravelのControllerで、リクエスト入力を直接 $_POST から読むより望ましい方法はどれですか?
答え:Requestオブジェクトを引数で受け取り、検証して使う
LaravelではRequestオブジェクトを使うと、入力取得、認可、バリデーションなどをフレームワークの流儀で扱えます。
入力検証が複雑で複数Controllerから再利用したい。Laravelで分離先として自然なのはどれですか?
答え:Form Request クラス
Form Requestは認可やバリデーションルールを専用クラスへ分離できます。Controllerを薄く保つのに役立ちます。
Laravelでユーザーと投稿の1対多関係を表すとき、Userモデル側に定義する代表的なリレーションはどれですか?
答え:hasMany(Post::class)
ユーザーが複数投稿を持つ側なので、Userモデルには hasMany を定義します。投稿側からユーザーを見る場合は belongsTo です。
一覧画面で投稿と投稿者を表示するとN+1クエリが発生している。Laravelでまず検討する対策はどれですか?
答え:with('user') でEager Loadingする
関連モデルを事前取得するEager Loadingにより、ループ中の追加クエリを減らせます。
LaravelでMass Assignmentを安全に扱うため、モデルに設定する代表的なプロパティはどれですか?
答え:$fillable
$fillable は一括代入を許可する属性を明示します。意図しないカラム更新を防ぐために重要です。
LaravelでDBスキーマ変更をチームで共有し、履歴として管理するために使うものはどれですか?
答え:Migration
Migrationはテーブル作成やカラム追加などのDBスキーマ変更をコードとして管理する仕組みです。
外部キー制約付きのテーブルを削除するマイグレーションで、順序に注意が必要な理由はどれですか?
答え:参照されているテーブルを先に消すと制約違反になる場合があるため
外部キー制約がある場合、参照関係に応じて制約を外す、または子テーブルから削除するなどの順序設計が必要です。
Laravelで、email が必須かつメール形式であることを検証したい。代表的なルールはどれですか?
答え:'email' => ['required', 'email']
required は必須、email はメール形式の検証に使います。複雑な入力ではForm Requestへ分離すると管理しやすくなります。
Laravelで入力検証に失敗したとき、通常のWebリクエストで期待される基本動作はどれですか?
答え:前のページへリダイレクトし、エラー情報をセッションに保持する
Webリクエストでは、検証失敗時に前画面へ戻し、エラーメッセージや古い入力を表示する流れが一般的です。
Laravelで、特定ルートをログイン済みユーザーだけに制限したい。代表的に使うものはどれですか?
答え:auth middleware
auth ミドルウェアは、未認証ユーザーをログイン画面へ誘導するなど、認証が必要なルートを守るために使います。
LaravelでCSRF保護が主に必要になる場面はどれですか?
答え:状態を変更するフォーム送信やPOST/PUT/DELETEリクエスト
CSRFは利用者の認証状態を悪用して意図しない状態変更を行わせる攻撃です。状態変更リクエストでトークン検証が重要です。
メール送信や画像処理など、HTTPレスポンスを遅くしたくない重い処理を後回しにしたい。Laravelで使う代表的な仕組みはどれですか?
答え:Queue Job
Queue Jobを使うと、重い処理をキューへ投入し、workerで非同期に処理できます。
Laravelのqueue workerを本番運用する際、デプロイ後に再起動が必要になりやすい理由はどれですか?
答え:workerは長時間動き続け、新しいコードを自動で読み直さない場合があるため
queue workerは常駐プロセスなので、デプロイ後に新しいコードや設定を反映するため再起動運用が必要になります。
Bladeでユーザー入力をHTMLに表示するとき、通常の {{ $name }} が安全寄りとされる理由はどれですか?
答え:HTMLエスケープされた出力になるため
Bladeの {{ }} は標準でエスケープされます。信頼できないHTMLをそのまま出す {!! !!} は慎重に扱います。
共通ヘッダーやフォーム部品を複数画面で再利用したい。Bladeで候補になるものはどれですか?
答え:Bladeコンポーネント
Bladeコンポーネントは表示部品を再利用し、テンプレートの重複を減らすために使えます。
Laravelで、ログインユーザーが特定の投稿を更新できるか判断するロジックを整理したい。適切な置き場所はどれですか?
答え:Policy
Policyはモデルに対する認可ロジックを整理するために使います。ControllerやBladeに散らばる条件を減らせます。
認証済みユーザーの情報をControllerで取得したい。Laravelで代表的な方法はどれですか?
答え:$request->user()
$request->user() は現在の認証済みユーザーを取得する代表的な方法です。認可処理ではPolicyやGateと組み合わせます。
Laravel本番で .env を変更したのに設定が反映されない。まず疑うべきものはどれですか?
答え:config cache
本番では config:cache を使うことがあります。設定キャッシュがある場合、.env 変更後にキャッシュ再生成が必要です。
Laravelで機密値をコードへ直書きせず、環境ごとに切り替えたい。基本方針として適切なのはどれですか?
答え:.envや外部Secret管理を使い、config経由で参照する
機密値はコード管理から分離し、環境変数やSecret管理から設定へ流すのが基本です。公開リポジトリやログへの漏えいを避けます。