田辺丈士、他『はじめてのCSS設計 — フロントエンドエンジニアが教えるメンテナブルなCSS設計手法』(翔泳社)を読了した。米国で出版されている技術書は、対象読者をきちんと書いてあるものが多い。どのような経験や基本的知識が必要かが箇条書きで列挙されていたりする。その点、この本は対象読者についてのはっきりした記述がないのだが、「はじめに」に次のような記述がある。

本書を手にとっていただいた方のほとんどは、次のような経験があると思います。
  • 予測していなかった箇所のスタイルが崩れる
  • 思った通りにスタイルが反映されず、新しい記述で上書きをしてCSSが煩雑になる
  • 期待する場所以外のスタイルが変わってしまい、過去のCSSを修正せざるを得ない
  • ファイルの肥大化により、どこを編集したらいいのかわかりづらい
  • 既存のスタイルを利用すれば更新は必要ないのに、重複したスタイルを定義してしまう
[中略]
本書は、CSSの入門書ではありません。CSSの本質を再認識するために一部で基本的な部分を解説していますが、単にCSSの仕様やプロパティを解説するものではありません。(3ページ「はじめに」)

要は、CSSを使ってウェブページを作成しているが、ページが徐々に強大化・複雑化し、メンテナンスが難しくなったというような、中規模ページから大規模ページへの移行を担当しているプログラマ向けということだろう。電子カルテの補助機能を開発し、ユーザインタフェースとしてウェブブラウザを使用している私のような開発者には読む価値のある本と言える。

私は単独で開発しているので、教えてくれる先輩も、相談できる同僚もいない。したがって新しいスキルの入手には本を読むか、実際のウェブページのソースを研究するしかない。最近のウェブページはソースが巨大で、自動生成されたと思えるものも多く、それらを読み解くヒントとしてこの本は役に立った。

ただし、この本はさまざまなツールを導入することを前提として書かれている。開発環境としてNode.jsを導入するのは当然としても、その後のツールには好みが分かれるかもしれない。タスク管理システム(タスクランナー・ビルドシステム)としてgulpを導入し、gulpの配下にツールを配置している。CSSコンパイラgulp-sass、バージョンを監視し自動で再コンパイルさせるためのgulp-watch、ファイルアクセスにワイルドカードを使用できるようにするgulp-sass-glob、コンパイラ用の多数のmixinなどである。

CSSのコンパイラも使い慣れれば便利なシステムで、決まり切った作業の多くを自動化できる。しかし、ツールを導入すれば、そのツールの管理(バージョンアップ、設定更新、スクリプトのバグ取りなど)が必要となる。そのためある程度の頻度で使用するのでなければかえって手間が増える。中規模以上の開発には手を出さないというプログラマには、この本の設定は敷居が高いかもしれない。

実際、私の場合、この本のようなツールの導入には消極的である。私は大規模開発には手を出さないことにしている。単独でメンテナンスを継続することが不可能だとわかっているからだ。私が作成したシステムを誰かに引き継がなければならないとすれば、私がツールを導入して楽に開発できるようになったとしても、私の後任者は場合によってツールの勉強から始めざるをえず、かえって負担が増す可能性がある。ツールを導入するなら後任者と調整の上ということになるだろう。