デザインシステム用語ガイドライン
この skill は、デザインシステムや UI 実装で使う名称を、Web 標準と責務境界に沿って揃えるためのものです。 命名を見た目や慣習で決めず、HTML と CSS の意味、責務、再利用契約、適用範囲に基づいて判断します。
この skill を使う場面
- デザインシステムや UI ライブラリの正式名称を決めるとき
ContainerWrapperBlockTextのような曖昧語が混ざっている設計や文書を見直すときLinkとButton、NavigationとMenu、PatternとComponentとTemplateを切り分けるとき- レイアウトラッパー、余白、列構造、テキスト種別の命名を整理するとき
- 用語集、実装ガイド、Figma 名称、CMS 名称、レビューコメントを統一するとき
最初に確認すること
- その語は Web 標準で意味が確立しているか
- その名前は見た目ではなく責務を表しているか
- それは構造か、挙動か、再利用単位か、ページ描画定義か、外観差分か
- 単一ソースで管理される再利用契約を持つか
- ページ全体に適用される上位定義か
情報が足りず、上の判定ができない場合だけ、次を短く確認すること。
- 実体はどの HTML 要素か
- 状態変化や JavaScript を伴うか
- 単一の定義から再利用されるか
- ページ全体の描画定義か、局所的な UI 断片か
最重要方針
- 用語は既存の Web 標準と矛盾させない
- 見た目ではなく責務で命名する
- 構造、挙動、再利用単位、ページ描画定義、テーマを混同しない
- 広すぎる総称を正式名称にしない
- 名前で設計境界と再利用条件が分かるようにする
用語の基準
Element
- HTML 要素そのもの、または HTML 要素に直接対応する最小単位を指す
- HTML 要素の総称は
Elementを優先する - すべての要素を
BlockModuleWidgetと呼ばない
Section
- ページ内の意味的または構造的な区画を指す
section要素が第一候補だが、文脈に応じてarticleなどを使ってよい- 内容幅ラッパーの意味で
Sectionを使わない
Container
- CSS の
container系プロパティが適用された要素だけを指す section containerのように関連対象とセットで呼ぶ- 内容幅制御のための構造ラッパーを
Containerと呼ばない
Inner / Outer
Innerは内容幅制御や中央寄せを担う内側ラッパーを指すOuterは外部余白、周辺配置、周囲との関係調整を担う外側ラッパーを指すInner / Outerは単体で万能ラッパー名にせず、section innercard outerのように関連対象とセットで扱うInner / Outerをコンテナクエリ対象の概念と混同しない
Gutter
- コンテンツ外縁とビューポート端のあいだを保護するインライン方向の余白を指す
- 値はトークン化し、Section ごとの場当たり的な padding 調整に置き換えない
- 列間や要素間の空きを
Gutterと呼ばない
Gap
- Flex、Grid、Multi-column などにおける子要素間の間隔を指す
- 行間、列間、カード間、チップ間の距離は
gapの概念で扱う - 通常フローの
marginをGapと呼ばない
Columns / Flex Columns / Grid / Row
Columnsは CSS Multi-column Layout による列配置だけを指す- Flexbox による列配置は
Flex Columnsと呼ぶ - CSS Grid Layout による構造配置は
Gridと呼ぶ Rowは親レイアウト文脈で成立する配置結果であり、独立した要素名として定義しない
Paragraph / Rich Text
- 単一段落、または単一のテキストブロックは
Paragraphと呼ぶ - 複数のインライン装飾や複数種の子要素を内包する編集領域は
Rich Textと呼ぶ - 単一段落、インラインテキスト、長文編集領域をまとめて
Textと呼ばない
Link / Button
<a>を用いる要素はLinkと呼ぶ<button>と<input type="submit"><input type="button"><input type="reset">はButtonとして扱う- ボタンのように見えるだけでは
Buttonと命名しない <a role="button">は境界ケースとしてButtonに近いが、原則としてその実装自体を避ける- ARIA role は正式名称の第一決定要因にしない
Navigation / Menu
- サイト内やアプリ内の移動導線は
Navigationと呼ぶ - 必要なら
Primary NavigationFooter NavigationLocal Navigationのように責務を補う - コマンド実行や操作選択の UI は
Menuと呼ぶ - サイト導線を
Menuと呼ばず、操作メニューをNavとも呼ばない
Template / Pattern / Component / Dynamic Element / Theme
Templateはページレベル、または同等の上位単位に適用される描画定義を指すPatternは静的で再利用可能な表示断片を指し、動的データや条件ロジックを前提にしないComponentは単一ソースから管理され、差し替え可能な入力点を持つ再利用単位を指すDynamic Elementは JavaScript や状態遷移を伴う挙動中心の UI を指し、Componentと排他的ではないThemeは共有アーキテクチャの上に乗る見た目、トークン、タイポグラフィ、色、余白、既定レイアウトの差分を指す- 静的断片を
Templateと呼ばず、単なる複製物を自動的にComponentと見なさず、アーキテクチャそのものをThemeと呼ばない
非推奨語
Block
display: blockなどの既存意味と衝突しやすく、一般総称として曖昧すぎる
Wrapper
- 何の責務を持つラッパーかを表さない
- 幅制御なら
Inner、外部関連型レイアウトならOuterを優先する
Text
- 単一段落、インラインテキスト、長文編集領域を区別できない
Widget / Module
- 責務範囲が曖昧で、設計境界を表しにくい
推奨対応表
| 用途 | 推奨語 | 非推奨語 |
|---|---|---|
| HTML 要素の総称 | Element | Block, Module, Widget |
| セクション境界 | Section | Group |
| CSS の container 機能を持つ要素 | Container | Generic container, Wrapper |
| 内容幅ラッパー | Inner | Container, Wrapper |
| 外部関連型レイアウト用ラッパー | Outer | Wrapper |
| 外縁保護余白 | Gutter | Padding, Column gutter |
| 要素間余白 | Gap | Gutter |
| Multi-column による列配置 | Columns | Flex Columns, Grid Columns |
| Flex による列配置 | Flex Columns | Columns |
| Grid による構造配置 | Grid | Columns, Grid Columns |
| 単一段落 | Paragraph | Text |
| 長文編集領域 | Rich Text | Text |
<a> |
Link | Button, Link Button |
<button> |
Button | Link Button |
| サイト導線 | Navigation | Menu |
| 操作メニュー | Menu | Nav |
| 静的再利用断片 | Pattern | Template |
| ページ描画定義 | Template | Pattern |
| 再利用契約を持つ単位 | Component | Static copy |
| 挙動中心 UI | Dynamic Element | Component の一括呼称 |
| 外観差分 | Theme | Architecture |
判定フロー
- その語は Web 標準で意味が定まっているか確認する
- 見た目起点の名前になっていないか確認する
- 静的な表示断片か、動的 UI かを切り分ける
- 単一ソースで再利用契約を持つなら
Componentを検討する - ページ単位かつ条件付きの描画定義なら
Templateを検討する - それ以外は
ElementSectionPatternなど、より狭い語へ落とし込む
ドキュメント運用ルール
- すべての正式用語に、何を指すか、何を指さないか、どこで使うか、どこでは使わないかを定義する
- UI ラベルと正式名称は、可能な限り一致させる
- 用語の追加や変更は単なる表記修正ではなく、互換性変更として扱う
- 俗称を許容する場合でも、正式名称を別に定義する
出力時の方針
- まず対象を
ElementSectionContainerInnerOuterGutterGapColumnsFlex ColumnsGridParagraphRich TextLinkButtonNavigationMenuPatternComponentDynamic ElementTemplateThemeのどれで扱うか明示する - 既存名称を否定する場合は、何が危ないかを短く示す。観点は Web 標準との衝突、見た目起点、責務の曖昧さ、設計境界の不明瞭さ
Containerを内容幅ラッパーに使っている場合はInnerへの置き換えを優先するWrapperBlockTextのような曖昧語は、より責務が明確な語へ分解して提案するPatternComponentTemplateのどれかで迷う場合は、動的データ、入力点、単一ソース管理、ページ全体適用の有無で切り分ける
最終チェック
- その名前は HTML と CSS の既存意味に矛盾していないか
- その名前は見た目ではなく責務を表しているか
- 構造、挙動、再利用単位、ページ描画定義、テーマを混同していないか
- 再利用条件と管理単位が名前から分かるか
- 広すぎる総称を正式名称にしていないか
- UI ラベル、実装名、ドキュメント名のズレを放置していないか
- 用語変更の影響範囲を確認しているか