前回からの続きです。よく使うコンポーネントを構成する要素 一覧の例をあげてみました。今回は、つくったクラスのネーミングについて考えてみたいと思います。
理想は、「文書中でどのような役割を持つのか」が一番です。しかし、ネーミングを考えるのは難しいのでそのあたりは少しずつかんがえていくといいでしょう。現実的に、「同じ内容なのに、クラス名だけ違う」のでは、コンポーネントの名前としては「分かりにくい」ので受け入れられないかもしれません。
意外とネーミングを考えるときにキーになるのが「CSS 3 Attribute Selectors」です。
例えば、E[foo*="bar"] の指定を行い、foo 属性値が部分文字列 bar を含んでいる E 要素にマッチするようなクラス指定をおこなえる、というのがすごく便利なんですよ。ソース管理はすごく楽になります。
たとえば、[class*="Instructions"] と指定すると、「Instructions」という文字を含んだクラスすべてに適用される指定をおこなうことができます。いくつ、「Instructions」というクラスがあっても1行で済むんです。
これに限らず、コンポーネントを構成するときのネーミングを考えるときには、CSS 3 のセレクタに関する情報を勉強してから考えるのをおすすめします。
そういえば、「カニの貴公子」さん(笑)が、こんなセミナーをやるんだった。XHTML+CSS (r)evolution, 2nd。内容は「CSS3のカタチとナカミ」だそうです。
上之郷谷さんが、「CSS でよく使う装飾定義をコンポーネントとしてまとめる」を拝見しましたが、ちょっと問題があります。ネーミングの考え方が少しどうかな、というところがある気がします。
例えば、「class="tab"」という指定ですが、タブ式ナビゲーションじゃないところに、「class="tab"」なの!?という気がします。ナビゲーションには「navigation」もしくは、その省略形の「nav」が入った形がふさわしいと思います。まぁ、アップルみたいなナビゲーションは別ですが(笑)
といっても、すべてが妥当なネーミングができる訳ではありません。ネーミングが考えつかないときもあります。例えば、「角丸」ですが、角丸を構成するクラスは、「文書中では役割がありません」というときも出てきます。また、本来は妥当な名前ではないが、世間で一定の認知度を得てしまったもの(「clearfix」など)も、妥協してもやむをえないかな、と思います。
さて、私がいま制作しているコンポーネント・モジュールでは、まともなネーミングを考えていたらきりがありません。下手したら、一生かかるでしょう。主要なモジュールだけで、20個以上あるのですから。そこで、以下のようなルールで作っていきます。(半分、妥協の産物みたいだけど)
理想と現実はかくも離れている、というわけで。「分かりやすくて妥当なコンポーネントのネーミング、は不可能」かな、と。
このエントリーのトラックバックURL : http://www.studionh.net/mt/mt-tb.cgi/42