収録問題 60問 / 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管理から設定へ流すのが基本です。公開リポジトリやログへの漏えいを避けます。
Laravelで「このURLにアクセスされたら、この処理を実行する」という対応を定義する場所として基本的なのはどれですか?
答え: routes/web.php
routes/web.php はWeb画面向けのルート定義でよく使われます。URLとControllerやクロージャなどの処理を結び付けます。
LaravelでControllerの主な役割として適切なのはどれですか?
答え: リクエストを受け取り、必要な処理を呼び出してレスポンスを返す
Controllerはリクエスト処理の入口として、ModelやServiceを呼び出し、ViewやJSONなどのレスポンスを返す役割を持ちます。
Laravelで画面HTMLを組み立てるテンプレートエンジンとして基本的に使われるものはどれですか?
答え: Blade
BladeはLaravel標準のテンプレートエンジンです。レイアウト継承や条件分岐、ループなどを使ってHTMLを組み立てます。
LaravelのEloquent Modelが主に表すものはどれですか?
答え: データベースのテーブルやレコードをアプリ内で扱うためのクラス
Eloquent Modelは、テーブルやレコードをオブジェクトとして扱うためのクラスです。検索、保存、リレーション定義などに使います。
Laravelでテーブル作成やカラム追加など、DB構造の変更履歴をコードとして管理する仕組みはどれですか?
答え: Migration
MigrationはDBスキーマ変更をコードとして管理する仕組みです。チーム開発や環境差分の再現に役立ちます。
LaravelのログインAPIに対する総当たりを抑えるため、一定時間内の試行回数を制限したい。適切な仕組みはどれですか?
答え: RateLimiterまたはthrottleミドルウェア
Laravelのレート制限機能は、IPや利用者などをキーに試行回数を制御できます。認証失敗の応答を統一し、MFAや監視も組み合わせます。
メール内の退会リンクについて、URLパラメータの改ざんを検出し、有効期限も設定したい。適切なのはどれですか?
答え: 一時署名付きURLとsignedミドルウェア
Laravelの一時署名付きURLはURLへ署名と期限を付け、signedミドルウェアで改ざんや期限切れを検証できます。署名URLだけで本人確認要件をすべて満たすとは限りません。
Laravelで外部サービスの秘密情報をDBへ保存し、必要時に復号したい。パスワード保存とは別の用途として適切なのはどれですか?
答え: Laravelの暗号化機能やencryptedキャストを使い、APP_KEYを安全に管理する
復号が必要な秘密情報にはLaravelの暗号化機能を使えます。APP_KEYの漏えい対策とローテーション計画が重要です。利用者パスワードは復号せずHashで検証します。
Laravel本番環境で例外詳細、環境変数、スタックトレースの露出を避けるため、最低限確認すべき設定はどれですか?
答え: APP_DEBUG=false
本番ではAPP_DEBUG=falseにし、詳細は保護されたログや監視基盤で確認します。.envやログをWeb公開せず、デプロイ時に設定を検証することも重要です。
HTTPSで動くLaravelアプリのセッションCookieをJavaScriptから読み取らせず、平文HTTPでも送信させたくない。確認すべき設定の組み合わせはどれですか?
答え: http_onlyを有効にし、secureを有効にする
HttpOnlyはJavaScriptからのCookie参照を制限し、SecureはHTTPS通信時だけCookieを送信させます。CSRF対策にはSameSiteなども要件に合わせて検討します。
LaravelでHTTPエンドポイントの応答ステータスや表示内容を確認するテストとして適切なものはどれですか?
答え: Featureテストで get や post を実行し、assertStatus や assertSee を使う
Featureテストでは、LaravelアプリケーションにHTTPリクエストを送り、レスポンス、認証、DB状態などを実際の利用に近い形で検証できます。
LaravelのFeatureテストで、テスト後にDB状態を戻しやすくするためによく使うトレイトはどれですか?
答え: RefreshDatabase
RefreshDatabase はテスト実行時にマイグレーションやトランザクションを利用してDB状態を整え、テスト間のデータ汚染を防ぎやすくします。
本番デプロイ後に .env の値を変更したが、Laravelが古い設定を参照している。まず確認すべき操作はどれですか?
答え: 設定キャッシュをクリアまたは再生成する
Laravelで config:cache を使っている場合、設定はキャッシュから読まれます。.env 変更後は config:clear や再キャッシュが必要です。
Laravelで重い集計結果を一定時間だけ再利用し、期限切れ後に再計算したい。適切な機能はどれですか?
答え: Cache::remember
Cache::remember はキー、期限、クロージャを指定し、キャッシュがあれば再利用し、なければ計算して保存できます。高コストな集計の負荷軽減に役立ちます。
注文確定後にメール送信や在庫連携など複数の後続処理を疎結合に実行したい。Laravelで適切な設計はどれですか?
答え: イベントを発火し、Listenerで後続処理を分ける
LaravelのイベントとListenerを使うと、注文確定という事実と後続処理を分離できます。必要に応じてListenerをQueueへ載せることもできます。
Laravelで、投稿を更新できるのは投稿者本人だけにしたい。認可ロジックを整理する場所として適切なものはどれですか?
答え: Policy
Policyはモデルに対する操作権限を整理する仕組みです。ControllerやBladeから authorize や @can で利用できます。
Laravelで、複雑なバリデーションルールと認可をControllerから分離したい。適切な仕組みはどれですか?
答え: Form Request
Form Requestは、入力バリデーションとリクエスト単位の認可を専用クラスへ分離できます。Controllerを薄く保ち、テストもしやすくなります。
Laravelでアップロードファイルを直接 public/ 配下へ置かず、抽象化された保存先へ保存したい。適切な機能はどれですか?
答え: Storageファサードとfilesystem disk
LaravelのFilesystemはlocal、public、S3などのdiskを設定し、Storage 経由で保存先を抽象化できます。公開可否やURL生成も設計しやすくなります。
Laravel本番デプロイで、ユーザー影響を抑えつつキューワーカーへ新しいコードを反映したい。適切な操作はどれですか?
答え: php artisan queue:restart を実行し、ワーカーを順次再起動させる
Laravelのキューワーカーは常駐プロセスなので、デプロイ後も古いコードを保持することがあります。queue:restart は現在のジョブ完了後に安全に再起動させます。
注文登録と在庫減算を両方成功した場合だけ確定し、途中で例外が出たら双方を取り消したい。適切なLaravelの機能はどれですか?
答え: DB::transaction()内で両方の更新を行う
DB::transaction()はクロージャが正常終了すればcommitし、例外時はrollbackします。関連するDB更新を原子的に扱う基本手段です。
同じ在庫行を複数リクエストが同時更新し、在庫数を上書きし合う問題を抑えたい。トランザクション内で検討するものはどれですか?
答え: 対象行をlockForUpdate()で取得する
lockForUpdate()はトランザクション中に対象行へ排他ロックを要求し、競合更新を直列化しやすくします。トランザクションを短く保ち、デッドロック再試行も検討します。
Eloquentでレコードを物理削除せず、削除日時を記録して通常検索から除外し、必要なら復元したい。適切な機能はどれですか?
答え: SoftDeletesトレイトとdeleted_atカラム
SoftDeletesは削除時にdeleted_atを設定し、通常クエリから除外します。withTrashed()やonlyTrashed()で参照し、restore()で復元できます。
DBのis_adminが0/1で保存されているが、モデル利用側では常にbooleanとして扱いたい。適切なEloquent設定はどれですか?
答え: モデルのcastsでis_adminをbooleanへ指定する
Eloquentのattribute castingを使うと、取得・設定時の型変換をモデルへ集約できます。boolean、datetime、arrayなどを一貫した型で扱えます。
複数箇所で使う「公開中の記事だけ」というEloquent条件をモデルへ再利用可能にまとめたい。適切な仕組みはどれですか?
答え: ローカルクエリスコープ
ローカルスコープはモデル上に共通クエリ条件を定義し、Article::published()のように組み合わせて利用できます。
数百万件のレコードをメモリへ一括読込せず処理し、処理中の更新による読み飛ばしも抑えたい。主キー順処理として適切なのはどれですか?
答え: chunkById()
chunkById()はIDを基準に小分けで取得します。大量処理のメモリ消費を抑え、offset方式で更新対象を処理するときの読み飛ばしを避けやすくします。
APIレスポンスでEloquentモデルの内部カラムを直接露出せず、項目名や関連データの表現を一元管理したい。適切な機能はどれですか?
答え: API Resource(JsonResource)
API ResourceはモデルやコレクションをJSON表現へ変換する責務を分離します。条件付き属性や、ロード済み関連だけの出力も整理できます。
更新頻度の高い大規模一覧APIで、深いページでもoffset増大を避けたい。安定した一意順序を用意できる場合の候補はどれですか?
答え: cursorPaginate()
cursor paginationは前回位置をカーソルで表し、offset走査を避けやすい方式です。一意で安定したorderByが必要で、任意ページ番号への直接移動などには向きません。
Controllerが支払処理のinterfaceへ依存し、本番とテストで実装を差し替えたい。interfaceと実装の対応を登録する場所として自然なのはどれですか?
答え: Service Providerでサービスコンテナへbindする
Service Providerでinterfaceを実装へbindすると、サービスコンテナが依存解決できます。環境やテストでbindingを差し替えやすくなります。
サービスコンテナから依存を自動解決させ、Controller内で直接newする処理を減らしたい。基本的な方法はどれですか?
答え: Controllerのコンストラクタやメソッドで依存型をtype-hintする
型宣言された依存をコンストラクタやControllerメソッドで受け取ると、コンテナが解決します。明示的な依存になり、mockやfakeへ差し替えやすくなります。
5分ごとの集計タスクが前回分の実行中に次回起動し、二重処理になるのを防ぎたい。Laravel Schedulerで適切な指定はどれですか?
答え: withoutOverlapping()
withoutOverlapping()はキャッシュロックを使って同じスケジュール処理の重複起動を抑えます。異常終了時のロック期限や複数サーバー構成も考慮します。
外部APIの一時障害でqueued jobが即時連続再試行し、相手をさらに圧迫している。ジョブ側で検討する設定はどれですか?
答え: 試行上限とbackoffを設定する
ジョブの試行回数とbackoffを設定すると、永続的な失敗を無限再試行せず、一時障害では間隔を空けられます。処理の冪等性も必要です。
最大試行回数を超えたqueued jobを調査し、原因修正後に再投入したい。基本的な運用はどれですか?
答え: failed jobを確認し、queue:retryで対象を再試行する
失敗ジョブの保存先と監視を構成し、例外・payload・試行履歴を確認します。原因を直して安全性を確認した後、対象IDをqueue:retryで再投入できます。
同じ業務通知をメールとDB保存へ送り、利用者設定によってチャネルを切り替えたい。Laravelで適切な仕組みはどれですか?
答え: Notificationクラスのvia()でチャネルを返す
Laravel Notificationsはvia()でmail、databaseなどの配信チャネルを選び、チャネルごとの表現を同じ通知クラスへ整理できます。必要ならqueue化できます。
Laravel HTTP Clientで外部API呼び出しが無期限に待機せず、一時的な通信失敗を一定間隔で再試行したい。候補となる組み合わせはどれですか?
答え: Http::timeout(...)->retry(...)->get(...)
timeoutで待機上限、retryで回数と間隔を制御できます。再試行対象、冪等性、総待機時間を要件に合わせて設計します。
非公開S3オブジェクトを、ログイン利用者へ10分間だけダウンロード許可したい。保存diskが対応している場合の候補はどれですか?
答え: Storage::disk(...)->temporaryUrl(...)
temporary URLは有効期限付き署名URLを生成し、ストレージ認証情報を渡さず限定アクセスを提供します。生成前にアプリ側の認可も確認します。
注文APIのFeatureテストで、実際のqueue workerを動かさず、正しいJobが投入されたことだけを検証したい。適切な方法はどれですか?
答え: Queue::fake()とQueue::assertPushed()を使う
Queue fakeは実配送を置き換え、指定Jobが期待した条件でdispatchされたかをassertできます。外部副作用を避けて振る舞いを検証できます。
複数サーバーから同じ請求処理が同時実行されるのを、共有キャッシュを使って短時間排他したい。検討するものはどれですか?
答え: Cache::lock()によるatomic lock
共有atomic lock対応ドライバーを使うCache::lock()は、複数プロセス・サーバー間の排他に利用できます。期限、所有権、例外時解放を設計します。
SanctumのPersonal Access Tokenへorders:read能力だけを付けた。API側の安全な認可方針はどれですか?
答え: token abilityを確認し、Policy等で対象注文への権限も確認する
token abilityはAPI操作範囲を限定しますが、対象リソースをその利用者が扱えるかという認可も別途必要です。最小権限のabilityとPolicy等を組み合わせます。
本番デプロイ中はメンテナンス画面を表示しつつ、動作確認担当だけ秘密URLでアクセスできるようにしたい。候補はどれですか?
答え: php artisan down --secret=...
down --secretはメンテナンスモードを有効化し、秘密パス経由でバイパスCookieを発行できます。秘密値の管理と、作業後のphp artisan upを運用手順へ含めます。