、無駄な上書きが繰り返されていることに変わりはありません。

/* 高津戸追加 2011.3.11 */
.box{
 color: red;
}
/* 田中追加 2013.1.15*/
.box{
 color: blue;
}

もちろんおわかりのように、これらは好ましくない解決法です。

万全の解決方法はある?

では万全の解決方法はあるかというと、どうやら現在のところそれはないようです。YahooのエンジニアNicolle Sullivan*はCSS is too fragileと述べています。

*注:Nicolle Sullivan

本シリーズの後半で詳しく説明しますが、OOCSS(オブジェクト指向CSS)という考え方を提唱した人です。

意味するところは「CSSはとても壊れやすいものだ」ということです。一度、サイトをオープンすると、多かれ少なかれ前述したような「CSSごちゃごちゃ」問題が起き、崩れていきます。ですから、なんとかその崩れる度合いを低減しながら、保守する必要があります。

その保守がうまくいくかどうかの鍵となるのが、初期段階での「CSSの設計」です。

CSSの設計に必要なこと

CSSを崩れにくく設計するには、ただCSSを書くだけではうまくいきません。本シリーズでは、ピクセルグリッドで実践されているCSSの設計方法を解説しますが、それを実践するには、ページの設計、デザイン、マークアップ、CSMやシステムの工程が全部関係してきます。理想を言えば、設計の段階から関わることがベストです。

コードを書くだけでは設計はできない
崩れにくいCSSの設計をするには、ページの設計から関われることがベスト。それができなければ、ページの設計を整理する心構えが必要。

とはいえ、多くのワークフローでは、マークアップエンジニアにPhotoshopやFireworksファイルなどのページカンプが回ってきて、これをコーディングする役割になることがほとんどということもあると思います。

その場合は、これまでの設計工程を整理するつもりで臨むことです。

さて、それでは具体的にどのように設計を考えていったらいいかを紹介しましょう。

枠とモジュールで考える

デザインをコーディングする際は、デザインを「枠」と「モジュール」で考えると、CSSの設計がやりやすくなると思っています。

「枠」というのは、モジュールをはめ込んでいくための枠組みです。「モジュール」というのは、レゴや積み木などの1ピース(部品)と考えてください。

枠の中に部品を積んでいくイメージで、デザインを捉えるのです。例えば

【アートポスター】ウォーホール 花 1970年(赤、黄、橙、青)915x915mm -ウォーホル-,フォルクスワーゲン・カリフォルニアキャンパー VW Californian Camper /route one ポスター フレームセット(101208) ¥3800(税抜き)以上お買い上げで 送料無料(北海道・東北・沖縄を除く),【A3:297×420mm】アルミ製額縁<5枚セット>ポスターフレーム/パネル 【A3】5枚セットシンプル、すっきりデザインで大好評!軽量で初めてでも取扱かんたん。縦向き・横向き両対応。国産で安心。グリーン購入法適合商品,沖縄 鳩間島のソテツ 風景写真パネル インテリア アート 壁掛け 65.2×45.5cm HAT-11-M15【楽ギフ_包装】【楽ギフ_のし宛書】【楽ギフ_名入れ】 お祝いギフトに,額要らずの壁飾り インテリア 壁掛け アート パネル,インテリア ポスター 風景 絵画 アート 絵画 壁掛け,風景 写真パネル,絵画 インテリア♪「grow」■ポエム付・Mサイズ■おしゃれな絵画 玄関に飾る絵 玄関絵 グリーン 額入り 北欧の部屋 葉 緑 観葉植物 ナチュラル インテリア 雑貨 ニッチ リビング 壁飾り ボタニカルアート アートポスター 壁掛けアート 植物画 壁 四葉のクローバー 風水 【1~3営業日で発送】 壁掛け絵 明るい絵画 幸せ 優しい絵 やさしい絵画 癒しの絵画 飾り棚 元気が出る絵画 インテリア 絵 通販 KAIGA 元気が出る絵 お洒落な絵画 草花の絵

越後の龍 上杉謙信の愛刀 上杉家宝刀 『姫鶴一文字』拵え しのびやオリジナル   ◆ 美術刀剣 模造刀 模擬刀 美術刀 日本刀 刀 刀剣 コスプレ ◆ 端午の節句 子供の日 こどもの日 戦国武将 上杉謙信の模造刀(美術刀剣) 鞘が木製、亜鉛合金刀身 【 美術刀剣 模造刀 模擬刀 美術刀 日本刀 刀 刀剣 】,シュナイダーボルト NS中 7X5mm径 10組セット,【送料無料】エアブラシ 水取りセット1 【あす楽対応_近畿】ペイントネイルメイク化粧ボディアートプラモデル模型ルアーフード塗装塗料プロパーツノズル口径交換エアブラシ替え部品色絵液洗浄空気スプレー【smtb-k】【w2】 エアテックス,家庭用小型電気炉スーパープチ【送料無料】【アートクレイ通販CLUB限定お買い得セット】 銀粘土、七宝、ガラスや陶器などにご使用いただける自動温度調節機能付き高性能電気炉です!

特上模造刀 五郎入道正宗(ごろうにゅうどうまさむね)◆居合刀 美術刀剣 模造刀 模擬刀 美術刀 日本刀 刀 刀剣 コレクション 撮影用 観賞用 【刀 日本刀 模造刀】 熟練の職人が仕上げた「五郎入道正宗」写しの刃紋。最高のコレクションをこの価格で!模造刀の枠をこえた、完成度の高い優れた美しい一振りです!,掛け軸箱(205~250サイズ)掛け軸 桐箱 命名紙 掛軸 保存 軸箱 掛軸箱 オーダーメイド 掛け軸 桐箱 命名紙 掛軸 保存 軸箱,四季花鳥 掛軸(掛け軸) お得な4本セット 清水玄澄作 尺三立 約横44.5cm×縦164cm【送料無料】b328-20 ★無料サービス★水引ラッピング致します

掛け軸 富士麗浄 鈴村秀山/掛軸 特別価格商品 送料無料 掛け軸 富士麗浄 鈴村秀山/掛軸 特別価格商品,【お仏壇処分】お焚き上げ供養 全国一律送料込み お仏壇サイズ:300cm以下(高さ+幅+奥行) 位牌処分 仏具処分 仏壇処理 仏壇撤去 見ているだけでOK!全国どこでもお引取りに伺います!お仏壇のプロが責任持ってお焚き上げ供養します。

仏具 『丸布団 弥生 8号』[仏壇][座布団][ふとん][フトン] 【仏具】

、次の3カラムのページを見てください。カラムを「枠」と捉え、その枠の中にメニューやコンテンツなどの部品(モジュール)を並べていくと考えるのです。

「枠」と「モジュール」

枠は.frame-side.frame-main.frame-side2という具合にコーディングします。

枠のコーディング
例示したページの場合、3つの枠があると捉え、それぞれを適当なクラス名を付けてコーディングする。
.frame-side {
 ...
}
.frame-main {
 ...
}
.frame-side2 {
 ...
}

さらにその枠とは別に、モジュールはモジュールとしてコーディングします。

モジュールのコーディング

モジュールのクラス名は特に決まりはないのですが、、ピクセルグリッドでは.mod-moduleAなど、モジュールを表す.mod-に続けて、モジュール名を書いています。

モジュールAの内包されるさまざまなHTML要素はすべて、モジュールAのクラス名.mod-moduleAを起点とした子孫セレクタを使ってスタイルを付けていきます。

1モジュールのコーディング例
.mod-moduleA
.mod-moduleA { ... }
/*モジュールAの中のさまざまな要素のスタイル*/
 .mod-moduleA img { ... }
 .mod-moduleA .head { ... }
 .mod-moduleA .body { ... }
 .mod-moduleA .body h1 { ... }
 .mod-moduleA .body p { ... }
 .mod-moduleA .foot { ... }

このようにモジュール名を起点にCSSを書くと次のようなメリットがあります。

モジュール名さえかぶらなければスタイルの競合が起きない

前述したCSSコードでわかるように、モジュール内には.head.body.footなど、よく使われるクラス名があります。しかし、これらはすべて.mode-moduleAの中で有効になるように書かれています。もし、別のモジュールの中で同じクラス名が使われていても、競合することはありません。モジュール名がかぶらないように注意さえすればいいので、設計が比較的楽になります。

逆にモジュール名を付けずに、いきなり次のようなクラス名を好き勝手に使ってしまうと、自分が意図しないところで、そのスタイルが付いてしまうことがあります。

.inner { ... }
.top { ... }
.head { ... }
.body { ... }
.foot { ... }

モジュール名を起点にすると、このようなことが防げます。

スタイルの追加も安全

モジュール名がかぶっていなければ、モジュールに新たなスタイルを追加する際も、クラス名の競合が起こることはありません。安心してスタイルを追加できます。

モジュールのスタイルがまとまっている

モジュールのスタイルは1箇所にまとまっているので、モジュールのスタイルがどこに書いてあるのかわからなくなってしまうことはありません。

モジュールの一覧を作る

さて、モジュールやモジュール名の設計が終わると、いきなりページのコーディングを始めたいと思いがちですが、その前にまず設計したモジュールの一覧を作ることが重要です。

モジュールの一覧とは、具体的にはこんなものです*。1ページ内に設計したモジュールをすべて集約しています。

*注:サンプルにしたサイト

このシリーズでサンプルとして挙げているのは、弊社と株式会社SINAPで制作した星海社が運営する「ジセダイ」というサイトです。

モジュールの一覧(部分)
作成したモジュール名とそのスタイルが確認できるモジュール一覧。本来はすべてのモジュールがリストされているため、もっと長いページになっている。【全体画像はこちら

また枠に関しても、次のように一覧を作っておきます。

枠の一覧:全幅
枠が1つの場合の一覧
枠の一覧:2カラム
枠が2つの場合の一覧
枠の一覧:3カラム
枠が3つの場合の一覧

このような一覧なしにいきなり実際のページの制作を始めてしまうと、モジュールを作ったかどうか忘れてしまい、新たなモジュールを作るのか、それとも既存のモジュールが使えるのか、すぐには判断がつかなかったりします。

また目の前のHTMLに引きずられてしまい 本物100%!鉄地塗鉢金(二段鉄鉢)、同じモジュールを別名で何度も作ってしまったりします。これでは、量産の効率が落ちてしまいます。

一覧があれば、そこからスタイルやクラス名をコピー&ペーストして作業を進めることができるので、間違いが発生しにくく、また設計者以外の他人に作業を振り分けることも簡単にできます。

つまりページの作成とは、枠を作り、モジュールを作り、それを一覧化してから、コピー&ペーストして作っていくものであると考えるのです。このようにすることで、作業効率を大きく上げることができます。

まとめ

今回はCSS設計の考え方のひとつ「枠とモジュール」を解説しました。次回は、さらにモジュール名の名前をどのように決めたらいいか、また、モジュールをどのように切り分けたらいいかを考えてみます。