レビュー by 0829 #03レビュー by 0829 #03

こんにちは、0829です。
「Drupal 実践プログラミング徹底入門」のレビュー第3弾では、作成するモジュールに何らかの設定を行えるような管理ページを実装したい場合に必要となる、「第4章 メニューシステム」と「第10章 フォームAPI」に焦点を当てたレビューを書かせていただきたいと思います。

モジュールの管理ページでのフォームの作成や、管理ページのURLとメニューリンクの設置などは、モジュールそのものがどのような機能を持っていようと、インストールするだけで機能が有効になるような単純なモジュールでない限りは、どちらも共通する項目となります。

メニューシステムは、もちろん、メニュー項目にリンクを追加するためのシステムではありますが、実際には、それだけの単純なものではなく、例えば、「アカウント情報」のようにユーザごとに異なるページを表示させたり、「管理セクション」のように権限を持つユーザにのみメニューやページの表示を許可したり、コンテンツの「表示(node/1)」や「編集(node/1/edit)」のようにタブ形式のサブメニューを実装したり...と、メニューに関連する幅広い役割を担っています。
「第4章 メニューシステム」では、このようなメニューシステムの役割や具体的な使用方法だけでなく、基本的な動作のしくみや、正常に動作しない場合に考えられるチェック項目など、メニューシステムに関するあらゆる情報が解説されています。
Drupalのメニューシステムは、最初は少し複雑に感じるかもしれませんが、解説に沿って、例題モジュールを実際に作成してみることで、多くのことが理解できてくると思います。
また、Drupal 5.x と Drupal 6.x とではメニューシステムが大きく見直されましたので、Drupal 5.x のモジュールをアップグレードさせる場合などにも、有効な情報になるでしょう。

Drupal 6.x では、テーマにも固有の設定ページを持たせることができるようになっていますので、モジュールの開発だけではなく、テーマの作成でもフォームAPIを利用する機会があるかもしれません。
Drupalでフォームを定義したい場合、直接XHTMLのタグを記述するのではなく、Drupal独自のフォームAPIを使用して記述することになります。
フォームAPIも、初めは複雑に感じたり、また、(X)HTMLの得意な方などには無意味にも感じられるかもしれませんが、「第10章 フォームAPI」では、フォームAPIを利用することのメリットや安全性などが詳しく解説されるとともに、数多くの具体的な使用例も紹介されていますので、慣れてくればフォームAPIのメリットが十分に理解できるようになると思います。
また、この章では、フォームの実装方法だけではなく、テーマ関数を利用したフォームのテーマ化の方法、複数のページを持つマルチステップフォームの作成方法、コアや他のモジュールによって提供される既存のフォームの変更方法、フォームに入力された内容の検証方法なども理解することができますので、モジュールやテーマでフォームを扱う場合には必読の章です。

どちらの章も、実際のモジュールとしての機能を備えていなくても、必要なコードのみを記述したモジュールとして作成するだけで、紹介されているコードの動作確認を簡単に行うことができますので、ピンポイントで理解を深めていくことが可能です。