カスタムモジュールを制作するなど、Drupal を高度にカスタマイズしたい場合は、必須のモジュールになると思います。Devel には開発者にとって、あると便利な機能がたくさん入っています。
まずいちばんよく使うのは dpm() でしょう。Drupal のコーディングによるカスタマイズは、基本的にはフック関数を記述しその中で行ないますが、引数として渡される変数の中身を確認したい場面が多々あります。また、Drupal のAPI の関数を利用して、得た値を変数に格納し、その中身を確認したい場合もあるでしょう。そんなときは次のように、
dpm($確認したい変数);
として、引数に確認したい変数を渡し、カスタムコードの中で dpm() をコールしてやると、図のように変数の中身を確認できます。変数が配列やオブジェクトの場合は、その要素やプロパティの値も得られます。階層構造がある場合は、すべて展開しそれらの中身を確認することもできます。
Drupalでは、使われる変数は多階層構造になっていることが多いので、それらの中身を調べるのに print_r() や var_dump() などををやっていては、日が暮れてしまいます。^^;
また、カスタムコードを書かなくても、例えばnodeオブジェクトの中身を確認したい場合は、管理者アカウントでログイン後、ノードページの「DEVEL」タブをクリックすると、node_load() で得られるノードオブジェクトの中身が確認できます。(このほか、レンダー配列やトークンも確認できます。)
同様に、ユーザーやタクソノミータームなどでも、それぞれユーザーオブジェクト、タクソノミータームオブジェクトの中身を確認できます。
次によく使うのが Switch user でしょうか。
これはアカウントやロールごとに表示を変えたり、アクセスを制限したりといった設定をする場合などに、別アカウントとしてログインしている状態に簡単に切り替えられるというものです。これを使うことで、あるユーザーからはこのページはアクセス出来て、あるユーザーからはアクセス出来ないといったことを簡単に確認することができます。(開発中は、すべてのロールに Switch user を使う権限を許可しておきます。そうでないと権限のないユーザーに切り替わった時に Switch user が使えず、自在に行ったり来たりが出来ません。※但し、開発が終わったら権限を元に戻すことを忘れずに!)
あと、「開発」ブロックを表示させておくとキャッシュのクリアがワンクリックで出来るし、Entity info や Field info の確認、テーマレジストリの確認、メニュールーターの再構築、そしてExecute PHP Code のリンクから PHPコードをちょっとだけ実行させたりといったことも出来るので、いろいろと重宝します。
このほか、Devel の設定ページ(/devel/settings)から、クエリーログの確認や、XHProf、ノードアクセス情報等、さまざまなデバグツールが使えます。