スタイル・ガイド・ジェネレーターについて

僕は以前からJavadocを踏襲した形のスタイル・ガイド・ジェネレーターには構造的な欠点と思想的な欠点を持っていると考えている。実際にはスタイル・ガイドを中心としたウェブ制作体制をよく利用すること、そしてその中での作業を自動化してくれるであろうジェネレーターには期待していること、はあらかじめ断っておきたい。

構造的な欠点は、コメントとして埋め込まれることになるであろうHTML断片が重複しやすいこと、だ。コンポーネントという単位ではまず重複することはないが、コンポーネント間で共有するクラスでは必ず重複することになる。もちろんコメントに埋め込むコードは短いもので、場合によっては軽量マークアップ言語を利用できるため、コストとしては微々たるものだ。しかし単純な繰り返し作業を省力化するための自動化ツール(ジェネレーター)が、そういったまた別の単純な繰り返しを強いるというのはどこかがおかしいと感じる。

この問題をHTML断片を外部に切り出して参照することで解決を図るという動きはあるが、その場合はワークフロー上の問題が出てくる。「このコンポーネントのためにここをこう変えたら、あのコンポーネントでは動かなくなった、分離しなくちゃ……」という順序の作業になるため、かならずリグレッションを伴うワークフローになる。

この結果、同時に複数コンポーネントを更新するコミットを作るか、テスト(まだ機械的なものではないだろうが)が通らないコミットを作るかのどちらかを選ぶ必要があるだろう。来るべきCSSが自動テストできる未来とそれを使った継続的インテグレーション環境を見据えるとどちらもまずい。手順的に先に分割を決定できるようになっていなくてはならないはずだ。

思想的な部分はもうちょっと微妙な部分だ。コードが主でありコメントで埋め込んだガイドが従という関係ではスタイル・ガイドの生成タイミングとワークフローがかみ合わないのではないかというのがおおまかな印象である。

スタイル・ガイド・ジェネレーターでは中心はCSSコードにあるため、既存のコンポーネントを更新する場合、まずCSSを編集し、ジェネレーターを通してスタイル・ガイドを生成という形になる。そしてこの時点で初めて既存のコンポーネント(およびそれと依存関係にある別のコンポーネント)が壊れるかどうかがわかることになるだろう。その破壊結果の修正はCSSでなんとかできることもあるが、多くの場合はコメントとして埋め込まれたHTML断片の修正を伴うことになるはずだ。

つまりコードであるところのCSSに合わせてテストになりうるHTML断片を修正するという作業手順になる。更にその修正が終わった後、ジェネレーターをまた通す必要がある。ここでようやくコンポーネントがちゃんと更新されたかどうかを確認することができるわけだ。

簡単に言うのならば想定する明確な仕様がないまま手探りと勘で開発を進めるようなやり方を強いることになる。


実際にはスタイル・ガイドを開発に組み込む事例はまだ少なく、クライアントや社内の非デザイナーへのプレゼンテーションのために提供されるものであることが多い。そう考えるとこの2つの欠点は些末なものと言えるかもしれない。開発が終わった後にジェネレーターで生成するだけだからだ。だがその場合はスタイル・ガイド・ジェネレーターのために書くコメントとほぼ同等かそれ以上のテスト・コードをまた別に書くことになるだろう。それはあまりにも無駄だ。

スタイル・ガイドはそのテンプレート的な利用においてだけでなく、開発と保守でも積極的に利用されるべきものだろう。そうでないと上記のような無駄を伴う作業が強いられるだけで、得られるものが少なすぎる。ウェブサイトの総合的な設計を文書化したものであるのは理想に過ぎないが、少なくとも開発で積極的に使えるレベルであるのなら、設計を行間から読み取ることは可能なはずだ。そのことは利用だけする人、保守を担当する人にはずいぶんと役に立つことになるだろう。

開発には利用できない自動生成された(見やすい)スタイル・ガイドには一定の価値があるが、それを得るために払うコスト(学習と利用、そして生成)に見合うかというと疑問が残る。やはり開発中にも使えるレベルになっていて初めてスタイル・ガイドを作成・提供する価値があるのではないだろうか。


もうちょっとちゃんとした文書として(実際にはスタイル・ガイド全般について)書くつもりだった。半年くらい前にちょっと書いて寝かせていたが、ジェネレーターのところだけ抜き出してざっとまとめてみた。ピクセルグリッドの人たちが作ったスタイル・ガイド・ジェネレーター、aigisが公開されたのがきっかけではあるものの、特にこれに対する問題提起というわけではない。

僕が何度かスタイル・ガイド・ジェネレーターを利用した中で、それらがもたらしたワークフローの変化は少なくないものだった。そしてその多くが受け入れがたいものだったことがこういった印象を抱かせることになった。またスタイル・ガイド・ジェネレーターを使われた良い事例というのをほとんど見かけないことも気になっている。良質なスタイル・ガイドがそこそこあるにも関わらず、だ。このことは導入して得られるメリットが見えてこない(か伝わっていない)ということを示唆している。

良くできたスタイル・ガイドはとても魅力的で、その生成を自動化できるとうたうジェネレーターには大いに期待したい。しかし、今のスタイル・ガイド・ジェネレーターにはいくつか重要なピースが欠けているように感じられてならない。