今回は、DrupalのDevelモジュールについて紹介します。
DrupalのDevelモジュールは、Drupalウェブサイトの開発およびデバッグプロセスを支援するための非常に便利なツールセットです。Develモジュールを使用すると、デバッグ情報の表示、パフォーマンスプロファイリング、データベースクエリのログ記録など、さまざまな開発タスクを効率的に実行できるようになります。
本記事は、Develモジュールでできることの紹介と、セットアップの手順をまとめました。
対象読者
本記事は、Drupalウェブサイトの開発者、またはDrupalに興味を持つ以下のような読者を対象としています。
- Develモジュールを使用してウェブサイトの開発プロセスを改善する方法に関心がある
- Develモジュールの機能や利点を知りたい
- サイト管理者や運用チームが、Develモジュールを使用してサイトの問題を特定する方法に関心がある
Develモジュールでできること
Develモジュールは、様々な開発タスクをサポートする機能を提供しています。以下では、Develモジュールがもたらす主な利点について3つ紹介します。
1. デバッグ出力
Develモジュールは、dpm()
関数を提供し、変数の内容やデバッグメッセージを表示するためのシンプルな方法を提供します。これは、カスタムコードのデバッグや問題のトラブルシューティングに役立ちます。ウェブページの上部にデバッグメッセージを表示することができるので、変数の値やクエリの実行などの情報をリアルタイムで確認できます。
// 変数の値をデバッグメッセージとして表示する
$variable = 'Hello, Drupal!';
dpm($variable);
// ページの上部にデバッグメッセージが表示される
2. デバッグ情報の表示
Develモジュールは、Drupalの内部情報を表示するためのヘルパー関数を提供します。たとえば、dpm()
関数を使用すると、オブジェクトや配列の内容を階層的に表示できます。
データ構造をdpm()
関数で表示する
public function buildForm(array $form, FormStateInterface $form_state) {
// フォームの定義
// ...
// $formの内容をデバッグメッセージとして表示する
dpm($form);
return $form;
}
この場合、dpm()
関数は配列の内容を階層的に表示して、見やすい形式でデバッグ情報を提供します。以下の画像のように出力されます。
3. データベースクエリのログ
Develモジュールは、データベースクエリのログを記録し、実行されたSQLクエリを確認できるようにします。Drupalでは通常databaseクラスでクエリを発行して実行します。それによってクエリ文は隠蔽されてしまうため、実際に実行されるクエリ文を知ることができません。Develモジュールのdpq()を使うことで、クエリ文を知ることができるようになりデバッグ等の解析を効率良く進めることができます。
$query = \Drupal::database()->select('users_field_data', 'u')
->fields('u', ['name', 'mail'])
->condition('u.uid', '1');
// クエリ文をデバッグ出力
dpq($query);
// クエリ実行
$result = $query->execute();
上のようにdpq()を使うと、以下の画像のようにページ上部にクエリ文を表示させることができます。
Develモジュールのセットアップ
次に、Develモジュールのセットアップ手順について紹介します。
0. 事前準備
Develモジュールのセットアップにあたり、ComposerとDrushをインストールしておく必要があります。
Composerの概要やインストール方法は、以下のURLを参照ください。
https://qiita.com/akira-hagi/items/553da1e122f7c300d6ac
Drushのインストールについては公式ドキュメントを参照ください。
https://www.drush.org/12.x/install/
1. Develモジュールのインストール
まず最初に、DevelモジュールをComposerを使用してインストールします。以下のコマンドを実行してください。なお、この手順を進める前に、Composerがインストールされていることを確認してください。
composer require 'drupal/devel:^5.1'
2. モジュールの有効化
Develモジュールを有効化するために、以下のDrushコマンドを実行します。Drushがインストールされていない場合は、先にDrushをインストールしてください。
drush en devel
これでDevelモジュールがDrupalに正常に統合され、利用できるようになります。