今月の初めに開かれた Web サービスとコンテクスト コアのイニシアチブ スプリントで、僕たちはそのイニシアチブの対象範囲を見直してみることにした。もっと(イニシアチブを)運営しやすくすると共にあまり意欲がそがれないようにするためでもある。僕たちは、イニシアチブが取り組もうとしていた主要な構成要素の1つを独自のイニシアチブとして分離することを決めた。それがレイアウト イニシアチブだ。
レイアウト イニシアチブの目標は、ページ上にあるすべての要素をコンテクストに基づいた(contextual)ブロックにすること。ドラッグアンドドロップ形式の(ユーザー)インターフェースを通して、それらのブロックを並べ替えたり整理したりできる柔軟なレイアウト(レイアウトの中のレイアウトさえも可能)にすることだ。
具体的に見ると、イニシアチブ(の対象)は次のように分かれる。
- コンテクスチュアル ブロック(Contextual blocks):関連した設定データをブロックに渡せるようにする。それによって、リクエストの URL 以外のもの(情報)にブロックが応答できるようにする。
- どこもブロック(Blocks everywhere):サイト ロゴやメニューからメイン ページ コンテンツまで、すべてのページ要素をブロックにして、それらを同じように扱えるようにする。
- 多重ページ レイアウト(Multiple page layouts):ページに対して「3コラム」や「グリッド」など、あらかじめ調整されたレイアウトを選択したり、独自のカスタム レイアウトを作ったりする(機能を持たせる)。
- 部分的ページ レンダリング(Partial page rendering):ページを構成する個々の要素を個別にロードしてレンダリングできるようにする。それによってパフォーマンスを向上させ、個別の AJAX リクエストを可能にする。
- ブロック管理用 UI/UX(ユーザー インターフェース/ユーザー エクスペリエンス)の改良:ページ レイアウトを作成したり(ページ内に)ブロックを配置したりするための視覚的なドラッグアンドドロップ インターフェース。
このページ作成アプローチは、次のような、いくつものプラスをもたらす。さまざまなコンテクスト情報をベースにしてサイトの「ルック&フィール」をカスタマイズできること、パフォーマンス(最適化)のためにページの各部分を独立してレンダリングできること、一貫性(デザインの統一性)が向上すること、サイト構築者たちがいろいろなコンテクストにおいてページ要素を再利用するための柔軟性がアップすること。
僕は“EclipseGc”ことクリス ヴァンダーウォーター(Kris "EclipseGc" Vanderwater)に、レイアウト イニシアチブを率いてくれるよう頼んだ。クリスは Panels と Page Manager の作業にかなりの時間をつぎ込んできた。また、彼はアール マイルス(Earl Miles)や CTools suite の他のメンテナーとも緊密に連携して作業を進めようと考えている。このイニシアチブの目標の概要については、クリスのブログ記事を読んでほしい。イニシアチブすべてにいえることだが、自分が手伝おうとみんなが決心しないかぎり、実際には現実化しない。groups.drupal.org の「どこもブロックとレイアウト(Blocks and Layouts Everywhere)」イニシアチブのディスカッションに是非、参加し、drupal.org の Layout issues の作業に協力してほしい。