All Articles

「CSS設計の教科書」の献本を頂きました

献本を頂きました

同じ会社ということもあり、普段からお世話になっている著者の谷さんより献本を頂きました。ありがとうございます。 普段からCSSやWeb Componentsで登壇されていることもあり、安心と信頼の内容でした。

以下、大まかな内容の構成と感想文です。

まずはインプレス様のサイトより目次より引用:

第1章 CSSにおける設計とは 1-1 CSS設計の重要性  フロントエンドとCSSの仕事  開発に欠かせない設計  より良いCSSのゴール 1-2 破綻しやすいCSS  HTMLの構造に依存している  スタイルを取り消している  絶対値を多用している  修正しやすいCSSへ  モダンなサイト構築ワークフロー

第2章 CSSの基本を振り返る 2-1 CSSセレクタと詳細度  カスケーディングの基本  詳細度  詳細度の計算 2-2 セレクタのリファクタリング  セレクタをより安全でシンプルなものに  要素セレクタを省略する  セレクタを短くする  セレクタを限定的にする  クラスセレクタを活用する

第3章 コンポーネント設計のアイデア 3-1 CSSにおけるコンポーネント設計  コンポーネントとは 3-2 OOCSS  OOCSSの原則  構造と見た目の分離  コンテナーとコンテンツを分離 3-3 SMACSS  カテゴライズ  命名規則 3-4 BEM  MindBEMding 3-5 MCSS  マルチレイヤーCSS  MCSSのレイヤー 3-6 FLOCSS  自分の設計手法を考える  FLOCSSの構成  基本原則  Foundation  Layout  Object  命名規則  カスケーディング

第4章 コンポーネント設計の実践 4-1 コンポーネントをどのように作るか  最適化を焦らない  Rule of three  SOLID CSS 4-2 よくあるコンポーネントの設計・実装パターン  ボタン  アイコン  見出し  メディア  ナビゲーション  リスト  グリッド  汎用クラス

第5章 CSSプリプロセッサを用いた設計と管理 5-1 コンポーネントを個別に管理する  Sassを使った管理方法  マルチクラスとシングルクラス  セマンティックなクラス名  Sassの注意点

第6章 コンポーネントの運用に必要なツール 6-1 コンポーネントの運用  CSSのコメント  ドキュメンテーション  スタイルガイド、パターンライブラリ 6-2 スタイルガイドの作成方法  スタイルガイドのテンプレート  スタイルガイドジェネレータ  ワークフローを見直す  CSS開発・設計に役立つツール

第7章 Web Componentsの可能性 7-1 HTML/CSSのコンポーネント化  現状のHTML/CSSにおける限界  Web Componentsとは  Web Componentsの仕様 7-2 独自のコンポーネントを作る  モデルとなるコンポーネント  my-alert要素を作る  ライフサイクルコールバック  TemplatesとShadow DOM  機能追加とスタイリング  コンポーネント開発の時代に備えて

テクニック本ではなく、「設計」に徹している本

CSSの書籍といえば、こういう表現をするにはこういうテクニックがあるよというHow to本が多いと思いますが、 この書籍は毛色が違います。いや、そもそも本のタイトルがそうなのですが、冒頭にそれが凝縮されています:

壊れない設計を求めるのではなく、壊れた時に勇気を持って修復できる設計を

至言ですね。

CSSの変遷から考えると

数年前、私がマークアップエンジニアだった頃、CSSはとても貧弱で、デザイナーさんの出すカンプを表現するにはあれこれハックのようなものが必要で、時にはバッドノウハウを使わざるを得なかった時もありました。 それから数年、CSSの表現力は格段に上がったと思います。CSS3を使えば大抵の表現は可能ですし、アニメーションまでできてしまいます。Webサイトに求められる要求に応えられるようになってきたと思います。

が、それと共にCSSは複雑化、肥大化し続け、今度は別の問題が出てきているようにも思います。実際、私が今の会社に入った時は、「CSSはこんなに複雑なのかよ」と思ったほどです。Sassも使ったことなかったですしね…。</p>

設計思想の登場

この書籍ではOOCSS/SMACSS/BEMといったCSSの設計手法についても詳しく解説されています。いかに肥大化するCSSを管理するか、互いに疎結合なコンポーネント設計を行うか、といったポイントにフォーカスあたっており、 WebサイトからSPAのようなWebページにもひと通り当てはまると思います。私はこの辺りは用語くらいしか知らなかったので、改めて勉強になりました。 また、コンポーネント設計に合わせて細かいテクニックについても解説があります。至れりつくせり。

CSSプリプロセッサ、その他ツールについて

Sassについて触れられていますが、やはりSassは設計を基に構造化を実現するためのツールであり、Sassを使っている = メンテナブルというわけではないですね。 プログラマブルな機構を設けることで管理はしやすくなりますが、銀の弾丸ではない、と。私も「うはー、セレクタネストできて超便利じゃん」と思ってバシバシ書いてました反省。 まぁ、この辺りも上述のようなコードの複雑化・肥大化を助けるためのツールなので、設計は先にちゃんとしておかないといけないですよね。

そしてStyleStats/AutoPrefixer/Gruntといった自動化と検証ツール。この辺りはどんどん使っていきたいです。</p>

そしてWeb Componentsへ

最後にWeb Componentsにページが割かれています。個人的には、Web Componentsの恩恵を一番受けられるのはCSSだと思っているので、この辺りは抑えておくべきポイントだと思います。 とはいえ、周りにやってる人がいるので私は静観している状態ですが。ぱっと見た感じ、JavaScriptもいくらか書けないといけないようなので、今のうちに勉強しておかないといけないですね。

まとめ

通しで読んだ感想として、「運用を想定した考え方」をひと通り学べる書籍だと思いました。特に後々からのCSSのリファクタリングは困難で、高度なスキルが必要なようにも思えます。 そういったコストを見越して、設計段階からちゃんとやりましょう、という感じですね。

普段はフロントエンドとして関わる上で、JavaScript側に倒した運用設計を頑張っていますが、CSS側も避けては通れない道がありました。むしろこっちのほうが辛そう…。
200ページ程度に内容がギッシリ詰まっていて、それでいて読みやすくなっています。また、近年のCSSを取り巻く環境とプラクティスが満載です。
CSSのメンテナンスに困っている方、また設計に関するバイブルとして手元に置いておくのが良いではないでしょうか。

現場からは以上です。</p>