Devel

ウミメンバーが選ぶ個人的に好きなDrupalモジュール BEST3!

こんにちは、ウミの森山です。

実は先日、ウミで働いているメンバーたちに「個人的に好きなDrupalモジュール BEST3」についてアンケートをとってみました。日々Drupalに親しみDrupalと格闘している(?)ドゥルーパリストたちが選ぶモジュールは一体どんなものなのか興味が湧きませんか?(私だけだったらすみません..)本日はそのアンケート結果をご紹介してみたいと思います。

今回は、各モジュールの簡単なご説明の他、選出理由を書いたコメントも一緒にご紹介しています。「Drupal開発会社のおすすめモジュールを聞いてみたい」という方や「どんなモジュールがあるのかサラッと情報を仕入れておきたい」という方に、メンバーの生の声とともにお楽しみいただければ幸いです。

※今回の記事はあくまでウミメンバーの個人的な感想を紹介している記事となります。一般的に人気のあるモジュールについては、大野が以前にご紹介した「Drupal 8 定番モジュールランキング トップ20【2017年9月更新】」をご参照いただければと思います。

それでは早速いってみましょう!

第1位: Viewsモジュール

堂々の第1位は「Views」です! この結果は薄々予想されていた方も多いのではないでしょうか?

Viewsモジュールは、Webサイトでよく見かける「新着情報」や「ニュース」の表示にも欠かせないDrupalの定番モジュール。データベースからコンテンツを取り出して、リスト表示やテーブル表示、一覧ページやブロックの作成などなど、ここに書ききれないくらい様々なことを、なんとGUI操作だけで行なうことができてしまうスーパーモジュールです。そういえば私が入社して初めて覚えたモジュールもViewsでした。

Drupal7ではコントリビュートモジュールという位置づけでしたが、Drupal8からはコアモジュールに仲間入りを果たしたことからも、そのお役立ち度が伺えますね。

Viewsモジュールを選んだメンバーの声を以下にご紹介しておきます。

  • 「ありとあらゆるコンテンツを管理画面上から、好きなフォーマットで、ダイナミックに表示できるから。」 
  • 「設定のみで、ページや画面の埋め込むブロックを簡単に作成出来る」
  • 「お知らせやブログなど配信するコンテンツに非常に便利なよろず屋って感じです。」
  • 「こんなことまでできるのかといつも驚かされる万能選手。ビューズなしにDrupalは語れない超絶便利なモジュール。」

第2位: Develモジュール

そして注目の第2位は、「Devel」モジュールでした!私自身はあまり触れる機会の少ないモジュールですが、開発者用に様々なデバッグ用の機能を提供してくれるモジュールで、エンジニアの皆さんにとっては必要不可欠な存在のモジュールだそうです。

Develモジュールを選んだメンバーの声はこちら。

  • 「デバッグ用モジュール!これがないとやっていけないと思います。。」 
  • 「カスタムモジュール開発時にデバッグ機能を提供してくれるので、困った時にデバッグして効率的に開発をすすめられるので」 

どのコメントもエンジニアさんのコメントですが、一つめのコメントは特にその依存度が伺えますね!文末の「。。」にはどのような想いが込められているのでしょうか(笑)

第3位

第3位は得票数が割れる結果となりましたので、以下にモジュールについての簡単な説明と選んだメンバーのコメントとともに順にご紹介しておきます。

Webformモジュール

Webformモジュールは、Drupalでフォームとアンケートを作成するためのモジュールです。ユーザーがフォームに入力した結果を任意のメールアドレス宛に通知することができ、Excelまたは他のスプレッドシート等に結果をエクスポートすることも可能です。また、簡単な統計レビューを提供することもでき、機能を拡張するための広範なAPIも備えています。

  • 「完成度が高く、他のCMSでもこれほどの機能を持ったお問い合わせフォームは見たことがない」

Paragraphsモジュール

Paragraphsモジュールはコンテンツ作成のための新しいソリューションを提供するモジュールです。 パラグラフモジュールを利用することで、予め定義した独立した段落タイプを用意・選択いただけるようになるため、WYSIWYGのボディフィールドに画像や動画を含むすべてのコンテンツを突っ込むということはなくなり、更新担当者さんにとってより分かりやすく使いやすい管理画面を提供することができます。段落タイプは、単純なテキストブロックや画像から、複雑なスライドショーまで、様々な要素を扱うことができます。

  • 「フィールドとエンティティを紐付けることができてデータ構造の可能性が特段に高まったから。上手く利用すると、HTMLがわからなくても見栄えを保った素敵な管理画面を作れるから」

REST UIモジュール

REST UIモジュールは、GUIよりREST APIの設定を行うためのモジュールです。 弊社小林が「RESTful Web Services と REST UIで始めるDrupal8 REST API入門」というブログを書いていますので、こちらもよろしければご参照ください。

  • 「管理画面上からRESTの設定ができて便利です。」

Videoモジュール

ビデオモジュールは、任意の形式で動画をアップロードし再生することができるモジュールです。動画のサムネイルを自動作成したり、Amazon S3のようなクラウドファイルシステムからビデオをコピーして配信することもできます。

  • 「動画埋め込みを勝手にやってくれるので、、」

Metatagモジュール

メタタグモジュールは、SEO(検索エンジン最適化)に有効とされる「メタタグ」を管理画面から簡単に設定できるようにするためのモジュールです。ソーシャルネットワーク上で共有するときのコンテンツの表示方法を制御できるメタタグ(FacebookのOpen Graph Protocol、TwitterのTwitter Cards)もサポートしています。

  • 「簡単に各ページにmetaタグを設定でき、SEOを気にされているお客様に喜んでいただけるので」

Blockモジュール

ブロックとは、ウェブページの特定の領域にレンダリングされるコンテンツのボックスのことで、それらブロックを制御するためのモジュールです。Drupalサイトを構築する時には必要不可欠な存在ですのでコアモジュールとしてDrupal本体に組み込まれています。

  • 「配置したいコンテンツや表示先のページを自由に選択でき、非常に使い勝手が良い。」

Taxonomyモジュール

こちらもコアモジュールです。キーワードをカテゴリやタグ、あるいはメタデータとして使用し、コンテンツ同士を関連付けたり、分類することができます。Drupalでは、これらの用語(Terms)は「ボキャブラリー」内に集められており、Taxonomyモジュールでは、それらのボキャブラリーを作成、管理、適用することができます。

  • 「簡単にカテゴリやタグなどが設定できて、検索やお知らせなどの利用に非常に便利。お客様側で簡単に設定いただけるのも良い。」

Multiupload Filefield WidgetモジュールMultiupload Imagefield Widgetモジュール

Drupal7用のモジュールで、画像(またはファイル)をアップロードするときに複数画像を一度にまとめて選択できる複数選択機能を提供するためのモジュールです。ちなみにDrupal8ではこの機能がコアに取り込まれたので標準で複数のファイルがアップロードできるようになっています。

  • 「何気に便利でよく使ってました。地味だけど、Drupal7サイトを更新する際にこのモジュールが入ってないと、不便でがっかりしてしまう。」

Konami Codeモジュール

多くのコナミのゲームに登場するチートコード「コナミコマンド」をDrupalサイトに設定することのできるモジュールです!ユーザーがWebサイト上で特定のコードを入力すると、画面からDrupaliconが降ってきたり(!)Webサイトが崩れ始めたり(笑)などおもしろいアクションを呼び起こすことができる遊び心溢れるモジュールです。残念ながらDrupal8には対応していないようです。

  • 「おもしろい。実際のプロジェクトで使うことは多分一生ないだろうけど、こっそり使ってみたくなります(笑)。(お客様のサイトにこっそり仕込むようなことは決してございませんのでご安心ください。)」

最後に

以上です。コアモジュールもコントリビュートモジュールも含めた様々な回答が上がりましたがいかがでしたでしょうか?約26,000ものモジュールがあるといわれるDrupalだけに、私たちのような小さなチームでも非常にバラエティーに富んだ回答結果となりました。

今回はウミメンバーから見た人気モジュールをご紹介いたしましたが、今後も開発者目線とはまた違った角度からDrupalについてご紹介していければと思います。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。

Drupal 8 定番モジュールランキング トップ20【2017年9月更新】

こんにちは、スタジオ・ウミの大野です。

今回は drupal.org のダウンロードページのモジュールセクションにある、Drupal 8 でのサイト利用数が上位20以内の定番と言えるモジュールを簡単に紹介します。

1位: Token

  • 利用サイト数: 65,089サイト
  • バージョン: 8.x-1.0

Token モジュール利用時の例

Drupal 上に設定されたフィールドに対して、特定のキーワード(トークン)を設定しておくことで、閲覧中のページなどの現在の状況に応じたテキストを自動入力することができるモジュールです。

例えば、フィールドのデフォルト値として [site:url] と入力しておくことで、そのフィールドが利用されるフォームを開くと現在のサイトのURLが自動的に入力されます。

基本的には他のモジュールから利用する事が多く、単体で使う機会はあまりないかもしれません。

2位: Chaos tool suite (ctools)

  • 利用サイト数: 61,629サイト
  • バージョン: 8.x-3.0

Chaos tool suite はモジュール開発者向けの便利な機能を提供するモジュールです。単体で利用することはありません。他のモジュールの依存モジュールとして設定されることが多いため、上位に入っています。

3位: Pathauto

  • 利用サイト数: 52,580サイト
  • バージョン: 8.x-1.0

Pathauto の URL 表示例

ノードやタクソノミーターム、ユーザーのURLを Token を使って自動的に生成する機能を提供します。

例えばノードのURLはデフォルトは node/123 のようなURLですが、news/[node:nid] と設定しておくことで、コンテンツを作成した際に news/123 と言ったURLでアクセスすることができるURLのエイリアスを生成してくれます。

Drupal 7 版の記事ですが、自動的にURLを生成できる Pathauto モジュールと言うブログを書いています。Drupal 8 版では UI や仕様が大きく変わっているので、あまり参考にはなりませんが、雰囲気はわかるかもしれませんので、よろしければご覧ください。

4位: Admin Toolbar

  • 利用サイト数: 50,880サイト
  • バージョン: 8.x-1.19

Admin Toolbarの動作イメージ

Drupal コアの Toolbar を置き換える形で利用する、管理者の運用に更にフォーカスしたツールバーです。通常の Toolbar と比べ、プルダウンでメニューにアクセスすることができるようになり、キャッシュのクリアなどのアクションもメニューから素早く行うことが可能です。

5位: Metatag

  • 利用サイト数: 33,995サイト
  • バージョン: 8.x-1.2

Metatag モジュールの設定画面例

名前の通り、管理画面上から様々なメタタグを設定する機能を提供するモジュールです。OGPなどの特殊なメタタグもこのモジュールと Token モジュールを組み合わせることで簡単に設定することができます。

6位: Entity Reference Revisions

  • 利用サイト数: 29,579サイト
  • バージョン: 8.x-1.3

エンティティ参照型のフィールドを、リビジョン機能に対応させることができるモジュールです。9位で紹介する Paragraphs モジュールや Field collecion モジュールを利用する場合に便利です。

7位: Devel

  • 利用サイト数: 27,098サイト
  • バージョン: 8.x-1.0

開発者用に様々なデバッグ用の機能を提供するモジュールです。カスタムモジュールやテーマを開発する場合には必須のモジュールです。

Drupal 7 版の記事ですが、Drupal 開発に便利なツールを提供する Devel モジュールというブログを書いていますので、ご覧ください。

8位: Field Group

Filed Group モジュールの利用イメージ

  • 利用サイト数: 27,634サイト
  • バージョン: 8.x-1.0-rc6

ノードなどのエンティティに設定するフィールドをグループ分けし、開閉可能なようにしたり単純にフィールドセットにしたり構造的にもビジュアル的に分けることができるモジュールです。入力フォーム、表示画面と個別に設定することが可能です。

9位: Paragraphs

Paragraphs のイメージ

  • 利用サイト数: 25,478サイト
  • バージョン: 8.x-1.1

コンテンツを今までのアプローチとは違った方法で組み立てていくことができるモジュールです。管理画面からブロック単位で要素を一つ一つ追加していくことができます。比較的新しいモジュールですが、海外での利用数が多く急激に人気が出たモジュールです。パラグラフのフィールドは予め別のエンティティとして構築したりする必要があるため、Drupal 初心者の方には少し敷居が高いかもしれません。

10位: Entity API

  • 利用サイト数: 24,511サイト
  • バージョン: 8.x-1.0-alpha4

Drupal 7 の頃に、エンティティの取り扱いをもっと簡単にするためのAPIを提供するモジュールとして誕生しました。Drupal 8 ではその殆どの機能がコアで実装されましたが、Drupal 8 版の Entity モジュールではエンティティAPI改良のために開発が続けられています。

APIの提供しかありませんので単体では動作しません。モジュール開発者が利用する上級者向きのモジュールです。

Drupal 7 版の記事ですが、Drupal 7 の Entity Metadata Wrapper の基本的な使い方と言うブログを書いております。

11位: Google Analytics

  • 利用サイト数: 23,967サイト
  • バージョン: 8.x-2.1

Google Analytics モジュールの管理画面

Drupal 上に Google Analytics のトラッキングコードを埋め込むことができるモジュールです。基本的にはIDを管理画面から設定するだけで利用できますが、ユーザーのロールに応じてトラッキング対象を絞ったりすることも可能で、様々な設定が管理画面上で行なえます。

12位: Video Embed Field

  • 利用サイト数: 23,030サイト
  • バージョン: 8.x-1.5

Video Embed Field の動作イメージ

動画埋め込み用のフィールドを追加するためのモジュールです。YouTube や Vimeo などの大手の動画配信サイトには殆ど対応しています。

13位: Configuration Update Manager

  • 利用サイト数: 19,176サイト
  • バージョン: 8.x-1.3

コアの設定の同期機能にレポート表示機能を追加してより管理しやすくするモジュールです。設定の差分確認や個別エクスポートをより簡単に行うことが可能になります。

14位: Webform

  • 利用サイト数: 19,286サイト
  • バージョン: 8.x-5.0-beta16

Webform ページのサンプル

Drupal のモジュール中でも Drupal を使う理由の一つにもなるほどの利便性・柔軟性を兼ね備えた、有償・無償のCMS全て含めても最強のお問い合わせフォームです。お問合わせの項目の設定や、集計、エクスポートなど様々なことが管理画面で完結します。弊社の山中が書いた、Webform 8.x-5.x の新機能を 9 つピックアップして紹介と言う記事で、Webformの機能を解説していますので、ご覧ください。

15位: Inline Entity Form

  • 利用サイト数: 19,559サイト
  • バージョン: 8.x-1.0-beta1

Inline Entity Form の編集画面サンプル

ノード(エンティティ)の編集フォームで、エンティティ参照フィルードのエンティティを作成・編集することができるモジュールです。

16位: Entity Browser

  • 利用サイト数: 17,747サイト
  • バージョン: 8.x-1.1

Entity browser のロゴ

エンティティ参照フィールドなどでエンティティを参照するためのブラウザ機能を提供するモジュールです。通常は Inline Entity Form と組み合わせて利用します。

17位: Redirect

  • 利用サイト数: 18,691サイト
  • バージョン: 8.x-1.0-beta1

特定のパスにアクセスしてきたユーザーをリダイレクトすることができるモジュールです。ウェブサイトをリニューアルした際に適切なページへリダイレクトしたい時に役立ちます。

18位: Media entity

  • 利用サイト数: 16,792サイト
  • バージョン: 8.x-1.6

画像やオーディオ、スライドショーなどをエンティティとして取り扱うことができるようにするためのモジュールです。スライドショーなどを実装する際に、ノードで作ってしまうと不要な詳細画面ができてしまいますが、メディアは個別にアクセス権限がセットすることができます。なお、このモジュールは Drupal 8.4 からコアに取り込まれる予定です。

19位: Search API

  • 利用サイト数: 15,509サイト
  • バージョン: 8.x-1.3

Search API

様々なエンティティを検索できるようにし、検索をカスタマイズするためのAPIを提供するモジュールです。

20位: Embed

  • 利用サイト数: 15,258サイト
  • バージョン: 8.x-1.0

Drupal コアで提供される CKEditor に、エンティティなどを埋め込む機能・ボタンを追加します。このモジュールはAPIの提供だけですので、利用するには Entity Embed モジュールなどが必要です。


いかがでしたでしょうか。駆け足で20個のモジュールを紹介しました。人気のあるモジュールはこのUmiブログでも今後掘り下げて紹介して行く予定です!

Drupal 7 のランキングに比べると Views や Date などの定番モジュールがランキングから居なくなっていますが、それらは全て Drupal の標準モジュールとして搭載されています。Drupal はバージョンアップを重ねる毎に、メジャーで安定したモジュールを本体に取り込んでいくことも特徴の一つですね。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。

開発用ログを記録する関数 dd()

アイキャッチ画像 Umi->d

本日は Drupal (ドルーパル) が提供する便利なユーティリティ関数群の中から開発 / デバッグに有用な dd() 関数をご紹介できればと思います。

dd() 関数とは

dd() 関数は、デバッグ用ログファイルに変数の中身を書き込んでくれる関数です。 実は Drupal コアには含まれておらずコントリビュートモジュール Devel が提供している関数なので、利用するには Devel モジュールのインストールと有効化が必要です。

ちなみに関数名の dd は「 Drupal Debug 」の省略形です。 その中身も別の関数 drupal_debug() にすべて処理を任せているので、 dd() は実質 drupal_debug() 関数のエイリアス関数、といった位置づけになります。

では、ここからは実際に使い方を見ていきましょう。

dd() 関数の使い方

準備

上述のように dd() 関数は Devel モジュールの中で定義されているものなので Devel モジュールの有効化が必要です。 Drush が導入済みの場合には次のコマンドを実行すれば OK です。

$ drush -y en devel

Drupal のコントリビュートモジュールは Drush を使わなくてもさまざまな方法でインストールすることができます。 インストール方法がわからない方は次の記事などをご参考にしてみてください。

Drush のインストール方法は次の記事などでご紹介していますので Drush に興味がある方はこちらもよろしければ。

使い方

Devel モジュールをインストールしたら、後は任意の場所で dd() 関数を呼び出すだけです。 dd() の出力結果は Drupal のテンポラリディレクトリの直下の drupal_debug.txt というログファイルに書き込まれます。

まずは dd() 関数の使い方から。

デバッグ用に変数を出力したい場所で dd() 関数を呼び出します。 「関数シグネチャ」と呼んだらよいでしょうか、関数の宣言部は次のようになっているので最小限ひとつの引数 ($data) を渡せば OK です。

function dd($data, $label = NULL)

第 2 引数の $label はオプションで、出力する変数名の前に ラベル名: という形でラベルを追加したい場合に使用します。 ごくシンプルな変数の確認の場合にはこの第 2 引数は使用しなくてもよいでしょう。

つづいてログファイルのありかについて。

上述の drupal_debug.txt が置かれるテンポラリディレクトリは Drupal の管理画面のファイルシステム ( /admin/config/media/file-system ) のところで設定されているものです。 Mac 環境の場合だとデフォルトで /tmp が設定されています。

サンプル

今回は試しに、コンテンツ(ノード)の本文のフォーマットを「 PHP コード」にして、ここに dd() 関数を書き込んでみましょう。

コンテンツの本文のフォーマットに「 PHP コード」を選べるようにするためには Drupal コア内の PHP Filter モジュールを有効化する必要があります。 PHP Filter のマシン名は php なので Drush なら次のコマンドを実行しましょう。

$ drush -y en php

つづいて、「 PHP コード」を選択可能なユーザでログインした後、適当にノード(コンテンツ)の新規作成ページを開きます。 テキストフォーマットに「 PHP code 」を選択し、本文に以下のコードを書き込みましょう。

// dd() 関数のテストです。
dd("Hello, I'm in the dd() func.");

保存して、作成したばかりのページを開いてみましょう。 設定が問題なくいっていれば、画面が表示される度に dd() 関数が実行されるはずです。

では、結果を確認するために、システムの方でテンポラリディレクトリの drupal_debug.txt を見にいってみましょう。 Mac の場合のデフォルトのファイルパスは /tmp/drupal_debug.txt です。

drupal_debug.txt ファイルが存在して、上の画像のような内容が書き込まれていればロギングは無事成功、です。

以上です。

今回は開発 / デバッグフェーズで便利な dd() 関数のご紹介でした。

今回は説明をかんたんにするため dd() 関数に文字列を渡しましたが、通常は変数を直接渡す形で OK です。 内部的には print_r() 関数が使われているため、配列やオブジェクトなども整形した形できれいに表示してくれます。

ちなみに、 Drupal 7 の場合関数の中身は次のようになっています (コメントの部分は私の日本語訳です。元のコードの正確なニュアンスが知りたい方は Devel モジュール内の devel.module の中身を覗いてみてください)。

/**
 * drupal_debug() のエイリアス。
 */
function dd($data, $label = NULL) {
  return drupal_debug($data, $label);
}



/**
 * サイトのテンポラリディレクトリの中の drupal_debug.txt に変数を書き込みます。
 *
 * @param mixed $data
 *   ログファイル drupal_debug.txt に書き込みたい変数。
 * @param string $label
 *   (オプション) セットされた場合は $data の出力の前のラベルになります。
 *
 * @return void|false
 *   成功した場合は空、ログファイルが書き込み不能だった場合は FALSE を返します。
 *
 * @see dd()
 * @see http://drupal.org/node/314112
 */
function drupal_debug($data, $label = NULL) {
  $out = ($label ? $label . ': ' : '') . print_r($data, TRUE) . "\n";

  // テンポラリディレクトリは複数の simpletest インスタンスにまたがることがあります。
  $file = file_directory_temp() . '/drupal_debug.txt';
  if (file_put_contents($file, $out, FILE_APPEND) === FALSE) {
    drupal_set_message(t('Devel was unable to write to %file.', array('%file' => $file)), 'error');
    return FALSE;
  }
}

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。

Drupal 開発に便利なツールを提供する Devel モジュール

アイキャッチ画像 Umi->d

本日は Drupal 開発には欠かせない定番モジュール、「 Devel 」モジュールのご紹介をしたいと思います。

Devel モジュールとは

Devel モジュールとは、 Drupal のモジュール / テーマ開発に役立つ便利機能をまとめたモジュールです。

代表的な機能は、データベースクエリ、システムの状態、 PHP の変数の中身などをページ上に表示する機能です。 データベースクエリやシステムの状態などは管理画面から、 PHP 変数についてはコードを通して表示することが可能です。 他には、任意の PHP コードを実行できるテキストエリアのブロックユーザを手軽に切り替えられるブロックなども提供してくれます。

開発用、分析用のモジュールですので、通常の本番サイト運用時には原則無効にしておくタイプのモジュールです。

Devel モジュールの使い方

ここからは Devel モジュールの実際の使い方をかんたんに見ていきましょう。 まずはインストールから。

インストール

Drush コマンドが入っていれば、 Drupal プロジェクトディレクトリの中で次のコマンドを実行するとかんたんにインストール / 有効化することができます。

$ drush dl devel
$ drush en devel

途中に出てくる確認プロンプトに対してはいずれも y (yes) を選択しましょう。

ちなみに、 drush dl devel でダウンロードできる Devel プロジェクトのディレクトリには次の 3 つのモジュールが入っています。今回はこのうちの 1 番目「 Devel 」のみを取り上げます。

  1. Devel
  2. Devel generate
  3. Devel node access

Drush コマンドが入っていない場合は以下のページを参考に別の方法でインストールしてみてください。

使い方

Devel モジュールの代表的な使い方をいくつかご紹介します。

  1. データベースクエリを表示する
  2. 関数内の PHP 変数を表示する
  3. 現在のユーザを切り替える

他にもさまざまな使い方ができますが、これら代表的な使い方を見ておけば他のところでもスムーズに使えるのではないかと思います。

1. データベースクエリを表示する

まずは Devel モジュールを使ってデータベースクエリを表示する方法を見てみましょう。 手順は次のとおりです。

  1. サイト管理者としてログインし Devel settings のページ /admin/config/development/devel にアクセス
  2. ページの中から「 Display query log 」(クエリログを表示)というチェックボックスを見つけてチェックを入れる
  3. ページ最下部の「 Save configuration 」(設定を保存)をクリックして設定を保存

上記のステップを踏んで無事設定が保存されると、ページの最下部に発行されたクエリのサマリがテーブル表示されるようになります(デフォルトでは管理者ユーザでのログインが必要です)。 これは、ひとつのページリクエストからレスポンスまでの一連の処理の間に行われたクエリの統計情報です。

テーブルの列の「 ms 」は所要時間(単位: ms )を、「 # 」は発行回数を、「 where 」はそのクエリが発行された場所を表します。

所要時間が 5ms を越えるものについては赤色にハイライトされて表示されるので、データベース周りでボトルネックとなっている箇所をパッとひと目で確認することができます。

Views モジュールで複雑な条件を設定したりブロックをたくさん設置したりしているとレスポンスが遅くなってくることがありますが、このデータベースクエリではそのあたりのところを統計的にチェックすることができます。

2. 関数内の PHP 変数を表示する

次に Devel モジュールで PHP 変数を表示する方法を見てみましょう。 いくつか同種の関数が用意されていますが、ここでは dpm() という関数を使ってみます。 こちらは JavaScript でいう console.log に近いイメージの関数です。 ちなみに、関数名の「 dpm 」はおそらく「 dpm = Drupal Print a variable to the Message area 」の略で dpm です。

手順は次のとおりです。

  1. dpm() を呼び出すモジュール devel_test を作成
  2. devel_test を有効化

まずは dpm() を試してみるために、以下の内容のシンプルなモジュール「 devel_test 」を用意します。 構成ファイルは devel_test.infodevel_test.module の 2 つです。

devel_test.info:

name = Devel Test
description = tests devel module function dpm().
dependencies[] = devel
core = 7.x
package = Development

devel_test.module:

<?php

/**
 * @file
 * Devel モジュールの dpm() を hook_page_alter() 内で試します。
 */

/**
 * Implements hook_page_alter().
 */
function devel_test_page_alter(&$page) {
  dpm($page);
}

Drupal のモジュール作成にあまり馴染みのない方はこのあたりのファイルの位置づけや配置場所がわからないのではないかと思います。 カスタムモジュール作成には次のページなどが参考になるかと思いますのでよろければ参考にしてみてください。

モジュールが無事作成できたらモジュールを有効化します。 Drush なら次のコマンドで一発です。

$ drush en devel_test

管理画面から有効化する場合はパス /admin/modules にアクセスし、「 Devel Test 」という文字列を検索してモジュールを見つけ、チェックを入れて有効化しましょう。

モジュールのインストール / 有効化が無事行われたら、その後ページのメッセージ部分に変数の中身を表示するボックスが表示されるようになります。 こちらが、上記のコードの dpm($page); の行で出力された結果です。

デフォルトの設定では管理者ユーザしか見れないようになっているので、ページをリロードしても表示されない場合は管理者ユーザとしてログインできているか、 Devel モジュールまわりのパーミッション(権限)が適切に設定されているかをいま一度確認してみてください。

その他 dpm() で出力されるべき結果が表示されない原因としては以下のようなものがあります。 どうしても表示されない場合にはいま一度チェックしてみてください。

  • dpm() を呼び出すモジュールが有効化されていない
  • Drupal __メッセージエリアが表示されないカスタムテーマを使っている
  • 現在のユーザが dpm() の出力結果を確認できるパーミッション(権限)を持っていない
  • そもそも見ているサイトがちがう(ローカルサーバのサイトとテストサーバのサイトなど ありえなさそうでよくあります...)

3. 現在のユーザを切り替える

最後にもうひとつ、 Devel モジュールで現在のユーザを切り替える方法を見てみましょう。 こちらは開発過程で管理者 / スタッフ / 一般ユーザを頻繁に切り替えてチェックしたりするときに便利です。 手順は次のとおりです。

  1. Switch User ブロックを有効化
  2. 管理者ユーザとしてログインし Switch User ブロックのユーザ名をクリック

まずは Switch User ブロックを有効化します。 管理者としてログインし、管理画面のブロック管理ページ /admin/structure/block に移動します。 ページ内に表示されるブロックリストの中から「 Switch User 」(ユーザの切り替え)を見つけて、ページに表示される適当なブロックに移動します(たとえば Sdiebar first )。 設定を保存したら、ホームなどの一般のユーザ向けページに移動します。

設定が無事保存されていれば、上の手順で指定したブロックの中に「 Switch User 」と題されたブロックがあるのが確認できるかと思います。 このリストの中のユーザ名をクリックすれば、現在ログイン中のユーザがそのユーザに切り替わります。

こちらもデフォルトでは管理者向けのみの機能となっていますので(もちろんのことですが)、設定したのにブロックがどうも表示されないなぁという場合にはログイン中のユーザが管理者ユーザかどうかいま一度確認してみてください。

終わりに

いかがだったでしょうか?

今回は Drupal 開発に欠かせない Devel モジュールについて手短にご紹介いたしました。 その主な機能はデータベースクエリやその他システムの状況、 PHP 変数をページに表示する機能です。 他にも、ユーザ切り替え機能を提供するブロックなどがありました。

Devel モジュールにはこの他にも Drush サブコマンドや XHProf 出力機能、任意の PHP コードをページ上から実行する機能など Drupal 開発を強力にサポートする機能がいろいろ用意されていますので、これから本格的に Drupal 開発をやってみようという方はぜひそのあたりもチェックしてみてください。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。