Web Artisan Blog - ウェブ アルチザン ブログ

Nucleus:スキンとテンプレートの違いを考える(SkinとTemplate)

Nucleus

2004年07月20日

アフィリエイトから企業サイト分析まで。訪問者の動きがまるわかりのアクセス解析サービス「リサーチアルチザンプロ」

LINEやSkypeみたいなビデオ通話がブラウザだけでできる!オンライン通話サービス「EZ-Interview - イージーインタビュー」

”本、映画、音楽の感想・・・思いつきコメント”で更にアクセスアップ中のBLOGサイト、
「Heartfield Blog」さんで、NucleusやMT(MovableType)の比較をされてました。

いろんなBlogツール使ってみたけれど…

ちょっと事情がありまして、Nucleusをいじくり回しています。



結論的にはMTが一番だという事だそうです。
私はあまりMTを使った事が無いので判断はし兼ねますが、
Nucleusもいいですよとは言いたいです。
そこでNucleus、特に最初つまづき気味になる、
”スキン”と”テンプレート”の違いについて考えてみたいと思います。

その前に、少しMTとNucleusの違いで思う事。
「Heartfield Blog」さん等でも言われてますが、
Nucleusはどうも素人(ソフトウェア業界人以外)には取っ付きにくい印象があるようです。
んー・・、わからないでもないですが、そう思わせている原因の一つが
「何で”スキン”・”テンプレート”の2つがあんの?」という事なんでしょうか。
後、MTは記事投稿後に再構築という事で毎回HTMLを生成し、
Nucleusは再構築せず、HTMLを動的に出力しているという違いがありますが、
逆に業界人から言わせると、この再構築に違和感がありました。
我々は、JavaやASPでサイト構築してきた経験がありますが、それらも全て動的にHTMLを出力する形で作っています。
MTでは、再構築という形で毎回静的なHTMLを生成し、それらを表示していると知って、
そういうやり方もあるのかと感心しました。(慣れていない時は再構築を忘れてしまいます)


さて、”スキン”と”テンプレート”の違いについて”。
こちらのスキンとテンプレートにも書いてありますが、
”スキン”とはページのレイアウトを定義するもので、
”テンプレート”とは、どのようなレイアウトでweblogの内容を展開するかを定義するものとなっています。

言葉にすればこのままで、
当サイトで言えば、ページ全体が”スキン”で定義され、
各記事の内容、続きを読む・Comment・TrackBackのリンクなどは”テンプレート”で定義されています。

ここで、「なぜ2つに分かれているの?」ではなく、
「構造化されているので2つに分けてある」と考えていった方がいいのかもしれません。
”スキン”とはNucleusの構造上、
下記の表示されるべき最高8つのページについて定義するものです。

 1、月別アーカイブページ
 2、月別アーカイブ一覧ページ
 3、エラーページ
 4、画像ポップアップウィンドウ
 5、メインの目次ページ
 6、個別アイテムページ
 7、メンバー詳細ページ
 8、検索ページ



これらのページについて、表示される内容をHTMLソースで定義します。
新しく”スキン”を作成する事ができますが、
これら8つのページパターン以外のページは基本的に作成できません。(ここはポイント)

”テンプレート”とは、この”スキン”の中の部分的な定義をするものです。
その部分的な定義とは、
下記最高10個の部分にそれぞれヘッダー・本体・フッターというものを持ったものです。

 1、アイテム
 2、コメント (ある場合)
 3、コメント (無い場合)
 4、コメント (最大表示数より多い場合)
 5、コメントが多すぎる時
 6、アーカイブ一覧
 7、カテゴリー一覧
 8、日付と時刻
 9、画像とメディアのポップアップ
 10、検索



Nucleusデフォルトでは、
このテンプレートに”default”、”detailed”があり、それらは主に、
メインページ用のテンプレート=”default”、
個別ページ用のテンプレート=”detailed”のように存在します。
”テンプレート”も同じく新しく作成する事ができ、
定義パターンも上記10個以外には定義できませんが、
”テンプレート”が”スキン”内に”個別で定義するもの”という位置づけなので、
”スキン”と比べて使い方と考え方が少々違ってきます。(ここもポイント)


実例で説明した方がわかりやすいと思いますが、
Nucleusデフォルトで作成したBLOGサイトや、
あまり機能の無いBLOGサイトを作成した場合は、
あまり”スキン”と”テンプレート”の分かれている意味はありません。
元々、Nucleusはシンプルな構造で余分なものは取り除かれています。
逆に言うと、それらはユーザーがテンプレートなどを駆使して定義していくという事になるのです。

例えば、当サイトの”+ H e a d L i n e + (最新記事一覧)”。
これを表示させる機能はスキン変数やテンプレート変数などデフォルトにはありません。
では、プラグインで作成するしかないかという事ですが、この場合はそうではなく、
テンプレートを新たに作成し、それを使用する事で実現できるのです。
私も下記サイトを参考に作成しました。

Nucleus落穂拾い

最新の記事一覧

何かと便利な最新記事一覧(いわゆるRecent Titlesというやつです)。カテゴリやアーカイブ一覧時にも、そのカテゴリの中の最近の分だけタイトルを表示します。やり方は以下のとおり。



つまり、プラグインを作るまでもなく、
テンプレートをうまく使えば、それだけでいろんな機能が作れます。
”テンプレート”がページ上の部分的定義として機能している、
だから”スキン”と”テンプレート”は分かれているわけです。

ソフトウェア業界人向けであれば、「商品明細画面」のような画面があった場合、
画面自体は”スキン”で定義、画面ヘッダー・明細部分・フッターは”テンプレート”で定義となります。
このように分かれている方が、画面の定義や処理なども解りやすく記述しやすく、後々のメンテも楽です。
逆に”スキン”のみだと、そこに全ての定義を盛り込みますので、
スキン自体のボリュームが上がり、その結果・・・、メンテ大変などいろんな弊害が起こるのも想像できますよね。


んーー、うまく説明できないですね。
私もまだまだNucleusを使いこなせている訳ではないので、
結局は個人的な意見なのですが。。。
まあでも、Nucleusは素晴らしいですよ。今後も極めていきたいですねー。

Web面接に最適。ブラウザだけでビデオ/音声通話ができるオンライン通話サービス。「EZ-Interview - イージーインタビュー」
訪問者録画機能も付いたシンプルで高機能なリアルタイムアクセス解析「リサーチアルチザンプロ」