Skip to main content

はじめに

laravel/doctor は、Laravelアプリケーションにおける一般的な設定・環境・インフラストラクチャの問題を診断する公式パッケージです。2026年7月28日にv0.1.0がリリースされました。 それぞれの診断(diagnostic)は単一のチェックです。例えば「Laravelがstorageディレクトリに書き込めるか」を検査し、複数のステータスのいずれかを報告します。安全かつ決定的に修復できる場合は自動修正も提供され、アセットビルド失敗のように自動修復できない問題には対応手順(remediation)が提示されます。

実行方法

インストール後、doctor Artisanコマンドが登録されます。
修正可能な問題が見つかると、Doctorは問題を報告したうえで修正の確認を求めます。
確認なしで修正を適用したい場合は --fix オプションを使います。
標準の修正は、.env の作成、APP_KEY の生成、本番環境でのデバッグモード無効化、.env.gitignore 追加、storage:link の作成、storageディレクトリの書き込み権限修復など、決定的なローカル修復をカバーします。
修正機能はCLIとagent出力形式でのみ利用可能です。JSONおよびGitHubレポート形式では、機械可読なレポートがアプリケーションを変更しないよう--fixは拒否されます。
--bail を使うと、失敗またはエラーになった最初の診断で実行を停止します。

診断ステータス

各診断は次のいずれかのステータスを返します。 デフォルトでは fail または error があると失敗ステータスで終了します。--fail-on=warn で警告でも失敗させたり、--fail-on=never で問題の報告のみに留めることもできます。

診断の選択

クラス名・グループ・パッケージ・パッケージのワイルドカードで診断を選択・除外できます。
設定ファイルを公開すれば、永続的な選択設定も可能です。

環境モード

sync キューはローカル開発では妥当なデフォルトですが、本番環境ではキュージョブがWebリクエスト内で同期実行されてしまうことを意味します。このような判断のため、Doctorはアプリケーションを local または production の2つのモードに解決します。 Laravel標準の localproductionstaging という環境名は自動認識されます。それ以外の名前を使う場合は設定ファイルでモードにグループ分けします。

標準診断

Doctorには以下を含む診断スイートが標準で搭載されています。
  • 環境.env の存在、APP_KEY、PHPバージョン、必要な拡張機能、タイムゾーン
  • Composer — 依存関係のインストール状態、オートロード最適化、composer.lock の自動修復
  • 設定 — 設定ファイルの読み込み・キャッシュ可否、有効なドライバーが必要とする設定値
  • データベース — 接続の到達性、SQLiteファイルの存在、保留中マイグレーションの自動適用
  • キャッシュ・キュー・スケジューラ・セッション — 設定済みドライバーの到達性、本番環境外の sync キュー検出
  • ストレージ — デフォルトディスクの到達性、必要ディレクトリの書き込み権限、storage:link の存在
  • セキュリティ — デバッグモードと環境の整合性、.env.gitignore 登録、Composer依存関係の監査

独自診断の作成

Laravel\Doctor\Diagnostic を継承し check() メソッドを実装するだけで独自の診断クラスを作成できます。make:diagnostic Artisanコマンドでスキャフォールドも可能です。
以下は APP_KEY の設定を確認し、未設定であれば自動生成する診断の例です。
選択肢のある修正が妥当な場合は、fixOptions() で選択肢を宣言できます。CLIはこれを選択リストとして表示し、選ばれた値が fix() に渡されます。
選択リストの末尾には常に修正を見送る選択肢が追加されます(デフォルトは Skip — leave unfixed)。現在の選択を保つ表現の方が分かりやすい場合は decline ラベルを指定できます。

診断ヘルパー

多くのアプリケーションやパッケージは同じような種類のチェックを繰り返し書くことになるため、Doctorは Laravel\Doctor\Support 名前空間で頻出パターン向けのヘルパーを提供しています。 Configured ヘルパーは設定値を防御的に読み取ります。診断は設定が壊れたアプリケーションも報告前に例外を投げずに検査できる必要があるため、これらのメソッドは設定リポジトリの型付きアクセサとは違い、想定外の型でも例外を投げません。
ActiveDrivers ヘルパーは、デフォルトのログチャンネルが stack であったりメーラーが failover であったりするラッパードライバーを、実際に使われている具体的なチャンネルやメーラーに解決します。
Details ヘルパーは withDetails() に添付する証拠情報を整形します。Details::bullets() は文字列のリストを箇条書きに、Details::failures() はキー付き失敗メッセージを、Details::processOutput() は完了したプロセスから最も有用な出力ストリームを選択します。
パッケージも同じAPIでサービスプロバイダーから診断を登録できます。
レポートには診断の提供元パッケージが表示されます。

プログラムからの実行

Artisanコマンドを使わずに Doctor::run() を呼び出すこともできます。
プログラム実行で修正も適用したい場合は fixUsing を設定します。コールバックは修正を提供する失敗診断を受け取り、false でスキップ、true で通常の修正を適用、または修正オプションの値を返してその選択で修正を適用します。修正が適用されると、Doctorはレポートに反映させるため診断を再実行します。

出力形式とAIエージェント対応

Doctorはデフォルトで読みやすいCLI出力を行いますが、JSONやGitHub Actionsアノテーション形式も選択できます。
Laravel Agent Detector を使ってClaude CodeやCursorのようなAIコーディングエージェント内での実行を検出すると、Laravel PAO と同じ規約に従ったエージェント最適化フォーマットがデフォルトになります。
fixable: true の問題は --fix の再実行で修正できます。エージェント外でこのフォーマットを試す場合は AI_AGENT=test php artisan doctor を実行します。

まとめ

laravel/doctor は、php artisan doctor の実行だけでアプリケーションの設定・環境・インフラの問題を素早く洗い出せるツールです。AIコーディングエージェントとの親和性も高く、Laravel PAOと同じ規約でエージェントが解釈しやすい出力を返すため、CI/CDやAIエージェントによる自動修復ワークフローへの組み込みも検討する価値があります。

laravel/doctor リポジトリ

ソースコードと最新情報はこちら。
最終更新日 2026年7月29日