株式会社ビジネス・アーキテクツ
マークアップデザインエンジニア
私が所属する株式会社ビジネス・アーキテクツでは、2007年6月にサッポロビール・コーポレートサイト(以下、サッポロビールWebサイトと呼称)のリニューアルを行い、私はその中でテンプレート設計・構築を担当しました。この記事では、このサイトにおいてDreamweaverテンプレートをどのような目的で、どのような形で使用しているかを解説します。
この記事では、以下のソフトウェアを使用しています。
本サイトでは、全体で200~300ページある中、製品情報などの更新が頻繁に発生する部分の多くをDreamweaverテンプレートとして実装しました。以下がその実際のページとテンプレートとの比較です。






個別商品ページ(ビアファイン)


このうちビアファインのページはリニューアル時には存在しておらず、運用を行う中でクライアントが新製品の発売に合わせて作成したものです。他の商品ページと比較しても、遜色なくページが作成されています。
またビアファイン追加に伴ってサイトの構造も変化していますが、例えばビールのブランド一覧やローカルナビゲーションを見ても、それらの変更が正しく反映されていることがわかります。
例えばWebサイトを新しく作ったりリニューアルしたあとの運用の過程で、サイトに以下のようなことがおきた経験はありませんか?
これらの問題はひとつひとつは小さく、修正も困難ではありません。しかしサイト内のいろいろなページで問題が発生していたり、どのような経緯で問題が発生したのかがわからない場合、調査・修正作業は膨大なものとなり、本来無用な負担がWebサイト制作者と運用担当者の両方に生じます。
しかし、このような問題が起きたからといって、正しくない運用を行った担当者にばかり責任があるわけではありません。その人は正しい運用の手順を知らないか、あるいは忘れてしまったまま、目の前にある作業をとりあえず終わらせる必要にせまられて実行しただけなのです。
このような問題は運用マニュアルによって解消される部分もありますが、それでも作業者がマニュアルの手順を正確に覚えなければなりませんし、また作業者が交代するたびに教育しなおすことは避けられません。つまり運用時の作業が頻繁に発生するWebサイトでは、必ずしもマニュアルだけで万全とは言えないのです。
この問題を解決するには、まずwebサイトを作成するとき、あらかじめ「運用時にどのような作業が発生するか」つまり「どうしたいか」をWebサイト制作者と運用担当者が協力して細部まで綿密に洗い出し、共有します。
そして明らかになった「どうしたいか」に対し「何をしていいか・いけないか」という視点で分解を行い、作業者が対象のページを見たときにそれがすぐわかる、つまり可視化を行います。
この可視化とは、具体的には以下のポイントを満たすようにする、ということです。
こうすると、作業者はこれから行おうとする一連の作業に対し、あらかじめ可視化されている「こうすればいい」という内容に忠実に従っていくだけで作業が終了するため、作業者のスキルや理解度の差によるミスが格段に発生しづらくなります。また作業者の精神的負担も減るため、その点でもミスが減ります。
Dremaweaverテンプレートはこの「作業の可視化」という点について非常に優れており、可視化に必要な機能の多くを備えています。

先ほどご覧いただいたビアファインのテンプレートです。
デザインビューによって、実際のページに非常に近いレイアウトで編集できることがわかります。また編集可能領域の項目名と枠線を見れば、どんな内容をどこに入力すれば良いかがすぐにわかります。

この4つのボタンが表示されている部分がリピート領域です。[+]ボタンと[-]ボタンで、ソースコードを崩すことなく項目を増減することができます。Webサイトを運用していく中で増減することがわかっている部分の全てに、この領域が設定されています。

リピート領域には現在の要素の順番を返す機能があるため、これを使って連番画像を自動で表示していくことが可能です。

応用すると奇数・偶数の判定もできるので、メニューの左右によってclass属性を付け替えることもできます(*1)。
また、[▲][▼]ボタンによって、リピート領域内での順番を入れ替えが行えます。このサイトではインデックスページ上のメニュー項目をリピート領域として設定し、順番を入れ替えることでページへのユーザー流入数の調整を行っています(*2)。
リピート領域内では、後述のテンプレートオプションが使えません。この領域内で要素のオン・オフを制御するには、リピート領域を入れ子にし、0個か1個かをリピート領域の増減で操作する方法があります。ただし、要素をオン・オフする方法が2種類存在することになってしまうので、使いどころは限られてきます(*3)。

テンプレートオプションのひとつめの使い方として、値の一括反映があります。このテンプレートでは[修正]-[テンプレートプロパティ]の 03_タイトル に「サッポロビアファイン」と入力することで

という複数の個所に入力したテキストが反映されます。他のページをコピーして新しくページを作るときなどに起こりやすい修正漏れを防ぐことができます。

テンプレートオプションのもうひとつの使い方として、要素の出現をコントロールする機能があります。[修正]-[テンプレートプロパティ]の 05_販売アラートは、0を入力すると非表示となり、1を入力すると製造終了版として赤枠の注釈リスト、2を入力すると新発売版としてオレンジ枠の注釈リストがそれぞれ出現します。

製品情報以外のカテゴリでも、更新が掛かる箇所はDreamweaverテンプレートとして各ページに展開しています。






多くのページに対し、これらの機能を盛り込んだDreamweaverテンプレート化を行うことは大変に思えるかもしれません。しかし、Webサイトを制作するときは運用のことを考えずに制作することは稀です。つまり、このようなケースのときにはこう対応する、ということはサイトを設計する時点で考慮しているはずなのです。
であれば、あとはどうDreamweaverテンプレートの形に落とし込むかを考え、実装すればよいだけです。

サッポロビールWebサイトの場合は、仕様書とそれに基づいたデザインをまず紙に出力し、蛍光ペンで編集可能領域・リピート領域・テンプレートオプションなどを明示していきました。 意外に思われる方もいらっしゃるかもしれませんが、実は素早く検討と修正を繰り返すことができ、またいくつかのページに対して同じ作業を行っていくうちに「このリピート領域はこちらでも使える」「このメニューブロックはこちらと同じもので行ける」というようなことが感覚的に見えてくるため、おすすめです。
テンプレートの制御はすべてコメントを利用したテンプレートタグで行われているため、実装時はDreamweaverのメニューを使用せず、テキストエディタを使用してテンプレートタグを直接書き込んでいきました。その際、以下のようなテキストをすぐに挿入できるような形(クリップボード拡張ツール、IMEに辞書登録など)にしておくと便利です。
なおテキストエディタでなく、コードビュー+スニペットでも同じことが実現できると思います。
この手法で作るときはDreamweaverをテンプレートの構文チェッカーとして利用しました。作成したテンプレートをDreamweaverで開くと、エラーがあった場合に該当箇所を指摘してくれるのです。
この手法を応用すると、既にあるページをテンプレート化することもできます。
テンプレートから展開されたページには
が書き込まれており、これによってどのテンプレートからどんな形で作成されたかをDreamweaverが判断しています。なので、
というステップを踏むと、もともとDreamweaverテンプレートありきでそこからページが作成されたような状態を簡単に作ることができます。インスタンスタグの詳細などは省きますが、こういう使い方もあるということを覚えておくと役に立つことがあるかもしれません。
作業を制限して可視化することで運用時の問題はかなり解消されますが、全体的な作業の流れを示したり、画像の作成方法などのページそのものの編集ではない部分を解説するには、やはりマニュアルが必要です。
サッポロビールWebサイトでは更新ガイドラインを用意しており、「新製品を追加するには」「製品を削除するには」など、サイトに対する修正を目的軸で分類し、そこに対して必要となる具体的な修正作業手順を説明するという形態を取ってます。

テンプレートを設計・開発していると、テンプレート自体を高機能化する方向に考えてしまいがちです。しかし、高機能なテンプレートと使いやすいテンプレートは必ずしも一致しません。
などなど、検討できる選択肢を狭めてしまわないよう、常に「作業者がわかりやすいか」「楽になるか」「更新頻度はどのくらいか」「クオリティ維持に役立つか」というあたりを気にしつつ作成するのが、よいテンプレートを作るコツだと思います。