【楽をしてサイト構築をするためのウンチクノート】
第6回
メッシュ構造
メッシュ構造も、同様にあらかじめ構造を決めてしまえばそれほど難しくありません。あるファイルがどこのファイルに依存しているのかをあらかじめ決めてしまえば、ユーザとのコミュニケートが円滑になるからです。あとは共通する(ゆえに共有している)ファイルが変更されたら、テンプレートにしたがって配置しなおすだけです。
依存性=メッシュ
図1 矢印つきメッシュ
メッシュにすれば、ファイルの関係がしっかりしてどこを変更したらどこを変更するべきかがしっかりしていて便利です。共通ファイルやテンプレートも、ある個所だけ違うものにするということも可能になります。すると、各ファイルは部品とすることができます。ここで、部品ファイルに条件をつけましょう。
部品ファイルは原則、ひとつのファイルは複数のファイルに依存していてかまいません。ただし、ひとつのファイルが変更があった場合はそのファイルと直接依存関係があるファイルのみ更新の対象となり、そのファイルが依存しているファイルは更新対象外となります。ただし、そのファイルが共通ファイルとテンプレートファイルだった場合はそれを使っているファイルは更新しなければりませんので、この場合はそれに依存しているファイルは更新の対象になるという例外を設けましょう。
次に、あらかじめ新しい記事はテンプレートと記事リストと依存関係にあるとします。依存の方法は、記事のファイル名が変わると記事リストは変更する必要があり、記事リストが変わると記事テンプレートも変わるとなります。ここでこれを図にします。ただし図での矢印は第1回同様、ファイルが変わった側から変更が必要な側へ引きます。赤色は、テンプレート・共通ファイルです。
この条件で、新しい記事 E を追加します。すると、記事の追加で記事リストに変更する必要が出てきます。記事リストは共通ファイルですので、さらに線をたどります。すると、テンプレートの変更が必要となります。よって記事リスト、テンプレート、記事 A, B, C, D, E を更新することになります。テンプレートが変更された場合はどうなるでしょう。テンプレートが変更されると影響があるのは、記事 A, B, C, D, E です。しかし記事 A, B, C, D, E は共通ファイルではないので、これ以上たどる必要はないとなります。よって更新は、記事 A, B, C, D, E で終了となります。
汎用性がありすぎるメッシュ
メッシュ構造は、あらかじめ構造を決めなくとも、ユーザに指定をさせることでさらに拡張が可能です。ところが、メッシュ構造は理解できてもこの依存の方向が問題です。第5回でも指摘しましたが、どれだけ多くのウェブマスタが理解できるでしょうか。おそらく、矢印を引く作業でかなりかかると思います。ここが問題点だといえるでしょう。そもそもどこを更新したらよいかを機械に教えているわけですので、なんともいえないむなしさを感じますし、普段私たちはこんな依存性などという面倒なことを考えません。
依存性が生まれるときは、どういうときなのでしょうか。それは、外部のファイルを参照するようなリンクや外部ファイル読み込みを張ったときです。ただし、図の矢印の向きは逆方向です。たとえば、index.html へのリンクはAタグで認知できます。すると矢印を index.html にしたくなりますが、逆にしています。このノートで矢印を散々逆にしたのは、更新の必要性を示す矢印だったのです。つまり、このファイルを変更したら、矢印がさしているファイルが更新・作り直しをしないといけないよ、ということを意味しているわけです。これはどんなに難しくなっても変化しません。よって、タグの解析ができれば依存性が解析できることがわかります。つまり、外部ファイルを参照している先から矢印を引けばよいのです。
ほかにもいろいろ
依存性という考え方は、一つの考え方に過ぎません。ほかにもよい方法があるかもしれません。もし、気が付いた方はぜひ、FHPGの掲示板で発言してみてください。思いつきでもかまいません。あなたのアイディアをお待ちしております。
関連コラム
- シリーズ 【楽をしてサイト構築をするためのウンチクノート】
- 第1回 - サイトのファイルの依存性を理解する
- 第2回 - サイト運営・設計を楽にする機能
- 第3回 - CMSのコンテンツ生成と結合
- 第4回 - 埋め込みコンテンツとその活用
- 第5回 - ツリー構造
- 第7回 - データベース参照構造
- 嫌にならない更新のために
- サイト運営って、どうやってるの?