Devel
Drupal開発者向けの包括的な開発・デバッグツールスイートで、変数の検査、Entityのデバッグ、設定の編集、コンテンツ生成、開発者向け管理ページなどの機能を提供します。
devel
インストール
composer require 'drupal/devel:^5.5'
概要
Develモジュールは、Drupal開発者やサイト構築者に不可欠なツールキットで、幅広いデバッグおよび開発ユーティリティを提供します。変数の検査、デバッグ出力の表示、バックトレース情報の確認、SQLクエリの直接ブラウザ上での確認などの機能があります。
主な機能として、Entityの内部プロパティを検査するためのデバッグタブの追加、アクティブな設定値を変更するための設定エディタ、State APIを管理するためのState変数エディタ、コンテナサービス、ルート、イベント、要素、テーマレジストリデータを表示するための包括的な情報ページがあります。
モジュールはDrupalツールバーと統合され、キャッシュクリア、cron実行、メニュー再構築などの開発者ツールへのクイックアクセスを提供します。また、開発中のデバッグを容易にするために、送信メールをファイルにリダイレクトするメールシステムも含まれています。
付属のDevel Generateサブモジュールは、Node、ユーザー、タクソノミーターム、メニュー、メディア、カスタムBlockを含むテストコンテンツの一括作成を可能にし、開発およびステージング環境に現実的なサンプルデータを投入するのに非常に便利です。
Features
- 変数検査用デバッグ関数: dpm()、dvm()、dpq()、ddebug_backtrace()、ddm()
- すべてのEntityタイプに自動追加されるEntityデバッグタブで内部プロパティを表示
- アクティブな設定オブジェクトの表示、編集、削除が可能な設定エディタ
- Drupal State API変数の表示・変更が可能なStateエディタ
- 登録されたすべてのサービスとパラメータを表示するコンテナサービスインスペクター
- 登録されたすべてのルートと詳細を表示するルート情報ページ
- ディスパッチャ内のすべてのイベントリスナーを一覧表示するイベント情報ページ
- すべてのrender element定義を表示する要素情報ページ
- 利用可能なレイアウトを表示するレイアウト情報ページ(layout_discoveryが有効な場合)
- テーマフック定義を確認するためのテーマレジストリビューア
- 現在のセッションデータを表示するセッションビューア
- テスト中に他のユーザーになりすますためのユーザー切り替えBlockとページ
- キャッシュクリア、cron、メニュー再構築へのクイックアクセスを備えたツールバー統合
- 送信メールを送信せずにファイルに保存するメールロギングシステム
- Twigテンプレートデバッグ関数: devel_dump()、devel_message()、devel_breakpoint()
- 設定可能なバックトレース表示を備えたカスタムエラーハンドラ
- 権限ページとモジュールページでのマシン名の表示
- 'debug'タグを使用したhook_query_TAG_alter経由のクエリデバッグ
- 変数出力を強化するSymfony VarDumper統合
Use Cases
コード内での変数デバッグ
コード内の任意の場所でdpm($variable)を使用して、変数の内容をメッセージエリアに出力します。これはhook、コントローラ、フォーム、およびDrupalコードが実行されるあらゆる場所で機能します。データベースクエリの場合は、dpq($query)を使用して引数が代入された完全なSQLを表示します。バックトレースの場合は、ddebug_backtrace()を使用してコールスタックを表示します。
Twigテンプレートでのデバッグ
Twigテンプレートで{{ devel_dump(variable) }}または{{ dpm(variable) }}を使用して変数を出力します。引数なしで{{ devel_dump() }}を使用すると、利用可能なすべてのコンテキスト変数を表示できます。{{ devel_breakpoint() }}を使用してXDebugデバッグ用のブレークポイントを設定します。
Entityの内部データ検査
任意のEntity(Node、ユーザー、タームなど)にアクセスし、「Devel」タブをクリックして内部プロパティ、Field値、メソッドを表示します。正規URLのないEntityの場合は、/devel/{entity_type}/{entity_id}パスを使用します。
異なるユーザーとしてのテスト
ユーザー切り替えBlockをリージョンに配置するか、/devel/switch-userにアクセスして、ログアウトせずに権限とアクセス制御をテストするためにユーザーアカウント間をすばやく切り替えます。
メール機能のデバッグ
settings.phpでDevel Mail Logをメールシステムとして設定し、すべての送信メールを一時ディレクトリ内のファイルにリダイレクトします。これにより、開発中に実際にメッセージを送信せずにメールの内容を確認できます。
開発環境へのデータ投入
Devel Generateを使用して、開発サイトに現実的なコンテンツをすばやく投入します。「drush genc 500 --bundles=article,page」のような単一のコマンドで、数百のNode、ユーザー、ターム、メニューを生成できます。
コンテナサービスの探索
/devel/container/serviceにアクセスして、登録されているすべてのサービス、そのクラス、依存関係、タグを表示します。任意のサービスをクリックして詳細情報を表示します。「drush dcs plugin.manager」を使用してプレフィックスに一致するサービスを一覧表示します。
ルート情報の検索
/devel/routesにアクセスして、パス、コントローラ、アクセス要件、オプションを含む登録されているすべてのルートを表示します。現在のルート情報リンクを使用して、現在のページを処理しているルートの詳細を確認します。
hookとイベントのデバッグ
「drush fn-hook cron」を使用してhook_cronのすべての実装を表示し、エディタで開きます。「drush fn-event kernel.request」を使用してイベントのすべてのリスナーを表示します。
開発中の設定管理
/devel/configの設定エディタを使用して、アクティブな設定オブジェクトを直接表示・編集します。これはYAMLファイルのエクスポート/インポートなしに設定変更をテストするのに便利です。
Tips
- クイックデバッグにはdpm($variable)を使用 - 入力を返すのでチェーン可能: return dpm($result);
- Entityクエリに$query->addTag('debug')を追加すると、dpq()を使用してSQLを自動出力
- デバッグログファイル(ddm())はリクエスト間で保持され、AJAX、cron、バックグラウンドプロセスのデバッグに便利
- アクティブなテーマ開発中は'rebuild_theme'を設定し、通常の開発ではパフォーマンス向上のために無効化
- 大量のコンテンツ生成にはDrushコマンドを使用 - WebUIより高速でバッチ処理をサポート
- ユーザー切り替えBlockは、管理外ページでもサイドバーに配置してテスト中のクイックアクセスが可能
- 本番サイトでは、機密データが公開される可能性があるため、信頼できる開発者のみに'access devel information'権限を付与
- コードを書かずに状態値に依存する機能をすばやくテストするためにStateエディタを使用
- Container Infoページはサービスがどのように接続されているかを理解するのに非常に役立つ
- コアNavigationモジュールとのシームレスな統合のためにdrupal/navigation_extra_toolsをインストール
Technical Details
Admin Pages 21
/admin/config/development/devel
変数ダンパーの選択、エラーハンドラ、表示オプションを含むDevelモジュールのメイン設定を構成します。
/admin/config/development/devel/toolbar
develツールバートレイで常に表示されるメニュー項目を設定します。
/devel/config/{filter}
システム内のアクティブな設定オブジェクトを閲覧、フィルタ、編集します。YAML形式で設定値を直接変更できます。
/devel/state
Drupal State API変数を表示・編集します。すべてのState変数とその現在の値を表示し、編集リンクを提供します。
/devel/reinstall
選択したモジュールをアンインストールして再インストールします。これによりモジュールのテーブルと設定が削除され、hook_uninstall()とhook_install()が実行され、スキーマバージョンが最新の更新に設定されます。
/devel/container/service
クラス、引数、タグを含む詳細情報とともに、Symfonyサービスコンテナに登録されているすべてのサービスを表示します。
/devel/container/parameter
Symfonyサービスコンテナに登録されているすべてのパラメータを表示します。
/devel/routes
.routing.ymlファイルとルートサブスクライバから収集されたパス、コントローラ、要件、オプションを含む、サイトに登録されているすべてのルートを表示します。
/devel/events
Symfonyイベントディスパッチャに登録されているすべてのイベントとそのリスナーを表示します。
/devel/elements
プロパティとデフォルト値を含む、システムで利用可能なすべてのrender elementタイプを表示します。
/devel/entity/info
ハンドラ、キー、リンクを含む、すべてのEntityタイプに関する情報を表示します。
/devel/field/info
Fieldストレージ、Fieldインスタンス、バンドル、Fieldタイプ、フォーマッタ、ウィジェットに関する情報を表示します。
/devel/theme/registry
すべてのテーマフック定義を含む完全なテーマレジストリを表示します。
/devel/session
現在のユーザーのPHPセッション変数の内容を表示します。
/devel/layouts
Layout API経由で利用可能なすべてのレイアウトを表示します(layout_discoveryモジュールが必要)。
/devel/switch-user
テスト目的で他のユーザーアカウントを検索して切り替えるためのフォームを提供します。
/admin/config/development/generate/content
設定可能なコンテンツタイプ、作成者、コメント、その他のオプションを使用してテストNodeを一括生成します。
/admin/config/development/generate/user
設定可能なロールとオプションを使用してテストユーザーアカウントを一括生成します。
/admin/config/development/generate/term
設定可能なボキャブラリ、深さ、翻訳オプションを使用してタクソノミータームを一括生成します。
/admin/config/development/generate/menu
設定可能な深さとリンクタイプを使用してメニューとメニューリンクを一括生成します。
/admin/config/development/generate/media
設定可能なメディアタイプとオプションを使用してメディアEntityを一括生成します。
権限 3
Hooks 2
hook_devel_dumper_info_alter
他のモジュールによって宣言されたdevelダンパープラグイン情報を変更します。
hook_devel_generate_info_alter
DevelGenerateプラグインの既存のプロパティを変更します。
Drush Commands 12
drush devel:hook <hook>
指定されたhookの実装を一覧表示し、オプションでエディタで開きます。
drush devel:event <event>
指定されたイベントのリスナーを一覧表示し、オプションでエディタで開きます。
drush devel:services [prefix]
利用可能なコンテナサービスのリストを取得します。オプションでプレフィックスでフィルタできます。
drush devel:uuid
UUID(Universally Unique Identifier)を生成します。
drush devel:reinstall <modules>
指定されたモジュールをアンインストールして再インストールします。
drush devel-generate:content [num] [max_comments]
オプションのコメント付きでテストコンテンツ(Node)を生成します。
drush devel-generate:users [num]
テストユーザーアカウントを生成します。
drush devel-generate:terms [num]
タクソノミータームを生成します。
drush devel-generate:vocabs [num]
タクソノミーボキャブラリを生成します。
drush devel-generate:menus [num_menus] [num_links]
メニューとメニューリンクを生成します。
drush devel-generate:media [num]
メディアEntityを生成します。
drush devel-generate:block-content [num]
カスタムBlockコンテンツEntityを生成します。
Troubleshooting 7
「Access developer information」権限があることを確認してください。また、/admin/config/development/loggingのエラー報告設定でエラーの表示が許可されていることを確認してください。
Twigデバッグ関数はtwig.config.debugがTRUEである必要があります。development.services.ymlでこれを有効にし、コンテナを再構築してください。デバッグモードがオフの場合、関数は何も返しません。
「Switch users」権限があることを確認してください。Blockは最近アクティブなユーザーを表示します - ユーザーが少ない場合は、Block設定でリストサイズを増やしてください。
Field値の生成はFieldItemInterface::generateSampleValue()を使用します。Fieldタイプがこのメソッドを適切に実装していない場合、値は生成されません。--skip-fieldsを使用して問題のあるFieldを除外してください。
複数のエラーハンドラが選択されている可能性があります。「Standard Drupal」ハンドラとバックトレースハンドラの両方がメッセージを表示できます。必要なハンドラのみを選択してください。
settings.phpでメールシステムを設定していることを確認してください: $config['system.mail']['interface']['default'] = 'devel_mail_log'; また、debug_mail_directoryが書き込み可能であることを確認してください。
テーマレジストリは非常に大きくなる場合があります。これは正常です - ページはすべてのテーマフック情報をダンプするため、複雑なサイトでは相当な量になります。
Security Notes 7
- 「access devel information」権限は、設定、State、セッションデータ、コンテナサービスを含む機密の内部データへのアクセスを許可します。信頼できる開発者にのみ付与してください。
- 「switch users」権限は、管理者を含む任意のユーザーになりすますことを許可します。これは開発/ステージングサイトまたは非常に信頼できるユーザーにのみ付与すべきです。
- 絶対に必要でない限り、本番サイトでDevelモジュールを有効にしないでください。必要な場合は、権限を厳しく制限してください。
- 設定エディタとStateエディタはシステム設定の直接変更を許可します - 誤用するとサイトが壊れる可能性があります。
- デバッグ出力(dpmなど)は、本番環境にデプロイされたコードに誤って残されると機密データを公開する可能性があります。
- メールロギング機能はメールをファイルに書き込みます - ディレクトリが公開アクセス可能でないことを確認してください。
- Devel Generate操作は「kill」オプション使用時にコンテンツを削除します - 実際のコンテンツがあるサイトでは注意して使用してください。