scandinavian-design について
明快さ、機能性、抑制を重視するインターフェース設計スキルです。製品の文脈やタスク、既存のデザインシステムを確認してから、適用・レビュー・プロトタイプ・詳細調査を行います。
主な機能
- 01タスクに応じた4つのモード
- 02設計前の画面とフローの確認
- 03既存コンポーネントとトークンの再利用
- 04ニュートラルカラーと不透明度による階層
- 05アクセシビリティと情報密度への配慮
活用シーン
- 01製品ページの再設計
- 02優先順位付きの画面レビュー
- 03異なる3方向のプロトタイプ作成
- 04レスポンシブ、操作、アクセシビリティ状態の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ericzakariasson/ scandinavian-design --skill scandinavian-designインストール後、Claude Code で/scandinavian-designを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
websites.mdscripts/bands.jscompose.jscrop.jsdensity.jslines.jspackage.jsonprobe.jsrecon.jsrun-eval.jssnap.jstarget.jstints.js詳細
スカンジナビアンデザイン
基本方針
落ち着きがあり、機能的で、洗練され、意図的にシンプルな印象のインターフェースを作成してください。ニュートラルな白黒を基調とし、機能性を重視した節度と、自然な視覚的階層を用います。中間色は、温色系や寒色系の色かぶりを加えず、白に黒をアルファ合成して作ります。表現力は製品の画像に担わせ、周囲のインターフェースは静かに保ちます。
シンプルさはミニマリズムではありません。主要なタスクが明確になるよう不要なものを取り除きつつ、インターフェースの理解を助けるなら、コンテキスト、ラベル、境界、情報密度を加えてください。静けさは、空虚さ、曖昧さ、あるいは無反応を意味してはなりません。
作業姿勢
節度を重視するシニアプロダクトデザイナーとして行動してください。次の順序で最適化します。
- 理解しやすさとナビゲーション
- タスクの完了とアクセシビリティ
- 情報の階層と有用な情報密度
- ブランドと意味
- 視覚的な節度と一貫性
- 喜び
すべての要素には、そこにあるだけの理由が必要です。余白、文字、色、角丸、モーションに関する選択はすべて、スタイルだけでなく製品の観点から説明できなければなりません。視覚的な変更を加える前に、それが理解しやすさ、階層、効率、アクセシビリティ、またはブランドの一貫性を高めること、その画面の目的、利用頻度、必要な情報密度に合っていること、既存の仕組みを簡素化または再利用するだけでは同じ結果を得られないこと、そして意味、アフォーダンス、意味上の状態を保つことを確認してください。「よりスカンジナビアンらしく見える」ことだけを理由とする変更は却下します。目的のない包括的なスタイル変更より、確度の高い改善を少数に絞るほうが有効です。
呼び出しモード
依頼内容からモードを判断してください。
- 適用(デフォルト):依頼された画面を調査して再設計します。構造によって明確さが損なわれている場合は、レイアウトと構成も見直し、その後に検証します。
- レビュー:ソースには変更を加えず、優先順位を付けた指摘、変更案、変更せずに残すべき重要な要素を提示します。
- プロトタイプ:独立したルートまたはハーネスで、明確に異なるスカンジナビアンデザインの方向性を3つ作成します。「静謐」「エディトリアル」「実用重視」など、各方向性に軸を表す名前を付けてください。現実的なコンテンツを使い、即時切り替え機能を備えた状態で、一度に1つをフルサイズで表示します。ユーザーが選ぶまでは、本番 UI を変更しないでください。
- 詳細:レスポンシブ状態、インタラクション状態、アクセシビリティ、視覚的一貫性を含む、関連するフロー全体を調査します。
適切に存在感の強い画面もあります。このスキルの指示は、節度が改善につながるかどうかにかかわらず、すべて節度を求めるものです。ビジュアルの強さそのものが個性となっている出版物や製品は、構造面では改善できます。たとえば、誤ったランキングを直したり、重要な要素にサイズを割り当てたりできます。一方で、そうすることで声の個性を損なう可能性もあります。そのような緊張関係がある場合は、ルールを適用した結果を自動的に改善として報告するのではなく、どちらを選んだのか、その理由とともに述べてください。
依頼された製品の範囲は守りますが、範囲の管理とレイアウトの維持を混同しないでください。ページの再設計では、製品全体のリブランドにせずに、グリッド、セクションの順序、グループ分け、階層、レスポンシブ時の構成を変更できます。
調査
設計または編集に取りかかる前に、次のことを行ってください。
- 対象コンポーネントだけでなく、その周辺も含めて現在のインターフェースを確認します。
- ユーザーの主なタスク、一般的な操作経路、ナビゲーション、抜け道を特定します。
- 既存の色、タイポグラフィ、余白、角丸、ボーダー、シャドウ、モーション、コンポーネント、レスポンシブ時の慣例を整理します。
- インストール済みの UI プリミティブと依存関係を確認します。ダイアログ、メニュー、セレクト、トースト、フォーカスの挙動を独自に実装するのではなく、既存のアクセシブルなコンポーネントを再利用してください。
- 維持する必要のある、確立されたブランド要素と意味上の色を特定します。
- 製品が情報密度の高い業務向け、エディトリアル、商業向け、または表現重視のどれに当たるかを判断します。節度は製品の個性に合わせる必要があります。
- 構造上の問題を特定します。たとえば、ページの流れの弱さ、カードグリッドの反復、階層の分断、テキストとメディアのバランスの悪さ、現在のレイアウトによって埋もれている重要なコンテンツなどです。
ビジュアルシステム
作業を整理し、すっきりと実用的なシステムにします。
- 使いやすさ、アクセシビリティ、プロダクトの意味、確立されたブランドアイデンティティを維持します。
- 装飾よりも、明確な配置とシンプルな構造を優先します。
- 見出し、ラベル、メタデータ、フッターを含め、テキストはデフォルトで左揃えにします。中央揃えは、意図的に用いるまれな例外です。以前のクロームの名残であってはならず、同じグループ内で左揃えの要素と混在させてもいけません。すべての要素が中央揃えになった対称的な全幅の帯は、締めくくりのロックアップや著作権表示の行など、まとまりのあるグループであり、名残ではありません。そのうちの一つを広いビューポートの左端に揃えると、そこだけが取り残されます。
- 不要な色、濃い影、グラデーション、テクスチャ、コンテナー、装飾的なクロームを取り除きます。
- アイコンファミリーは一つに統一し、線の太さを揃え、視覚的なサイズも一貫させます。アイコンは装飾ではなく、テキストと同じ不透明度の段階に合わせた単色のインクとして扱います。絵文字はアイコンファミリーではありません。独自の色、太さ、視覚的なサイズを持ち、どんなフィルターを使ってもインクの段階には揃いません。絵文字は取り除き、意味はラベルに伝えさせます。これはインターフェース自体のアイコン表現にのみ適用されます。プロダクトのスクリーンショット、誰かの投稿、表示名に含まれる絵文字はコンテンツです。それに手を加えるのは、写真の色を塗り直すのと同じ間違いです。
- ごちゃつきは要素数ではなく、視覚的な重みの数で判断します。各領域で、どの要素が同等の扱いを受けるのかを決め、同等の要素は同じ見た目にします。サイズ、インクの段階、ベースラインを揃えます。コントロールの重みは使用頻度に応じて決めます。したがって、ある領域で最も使用頻度の低いコントロールが、最も重い要素になってはなりません。
- レイアウトのバランスを保ち、落ち着きがあり、ざっと見て内容を把握しやすい状態にします。
- 長いページは、似たカードを積み重ねるのではなく、ゆとりのある明確な章を連ねた構成にします。
- コピーは短く、率直で、具体的なものにします。
- 新しいものを導入する前に、既存のデザイントークンやコンポーネントを再利用します。
- レイヤーを増やすのではなく、視覚的な複雑さを減らします。
色と不透明度
プロダクトに適切なパレットがすでにない場合は、次のニュートラルなデフォルトを使用します。
- キャンバス:
#FFFFFF - サーフェス:
#FFFFFF - プライマリインク:
#000000 - セカンダリインク:
rgb(0 0 0 / 64%) - ターシャリインク:
rgb(0 0 0 / 44%) - ボーダー:
rgb(0 0 0 / 10%) - 強調ボーダー:
rgb(0 0 0 / 18%) - ホバー時の塗り:
rgb(0 0 0 / 5%) - 押下時の塗り:
rgb(0 0 0 / 9%) - スクリム:
rgb(0 0 0 / 44%)
装飾ではなく、階層をつくるために不透明度を使います。
- 90~100%:プライマリテキスト、重要なアイコン
- 60~70%:補足テキスト
- 40~50%:メタデータ、必須ではないアイコン。この段階はグリフや、実際に任意のテキストに使うものであり、白背景ではコントラスト比4.5:1に達しません。情報量の多い運用画面では、ここに実際に読むべき情報が置かれることがあります。試合開始時刻、放送ネットワーク、取り消し線付きの価格、タイムスタンプなどです。その場合は、この範囲を受け入れるのではなく、段階を約56%まで引き上げます。メタデータが本当に任意であるエディトリアル画面向けに設定された範囲なので、こうする場面は多くなります。
- 8~12%:ボーダー、区切り線
- 4~6%:ホバー時のサーフェス
- 8~10%:押下時または選択時のサーフェス
これらは三つの段階ですが、プロダクトによってはインクの段階が四つ以上ある場合があります。三つに無理に収めるのではなく、プロダクトの段階数を維持します。増えた段階は各範囲の内側や間に割り振り、二つの段階が同じ値に重ならないようにします。ひとつの文の中で二つの段階を使うことや、フラグとそのリンクを一段階だけ変えて区別することは、実質的な違いです。これを平坦化すると、その違いは失われます。
インクはopacityプロパティではなく、アルファカラーで設定します。コンテナーに適用すると、すべての子孫要素が薄くなります。末端の要素に適用すると、その要素がすでにある段階に乗算され、補足テキストのコントラストが気付かないうちに読み取れない水準まで下がります。インターフェースのクロームにベージュ、クリーム色、ブルーグレー、グリーングレーなど、色味のあるニュートラルカラーを持ち込まないでください。これらの範囲があらゆる状況でアクセシブルだと決めつけず、コントラストを検証します。
上記の段階は、キャンバス上にインクを置くことを前提としています。交互の行の塗りつぶし、浮き上がったカード、コールアウトなど、色味のある背景に置かれるものは、表が示すよりもコントラストが低くなり、最も低い段階から破綻します。控えめな段階は、ページではなく実際に配置される背景に対して、あらためて測定してください。
製品のニュートラルカラーにすでにチャンネル間の差がなく、十分な段階があるなら、そのままにしてください。機能している16進数の階調をアルファ値で表現し直すのは、見た目の改善がないままリスクを増やします。同じトークンが暗いメディア上のテキストにも使われていることが多く、その場合、アルファブラックでは文字が見えなくなり、反転したコンテキストを実際に損なう可能性があります。
暗いキャンバスの製品では、同じ方針でシステムを反転させます。キャンバスには #0A0A0A のようなほぼ黒の色を使い、主要なインクには白を使います。アルファ値はそのまま流用できません。同じアルファ値でも、明るいキャンバスより暗いキャンバスのほうがコントラストが高くなります。たとえば、#0A0A0A に対する64%の白は8.2:1に達しますが、白に対する64%の黒は6.7:1です。そのため、明るいテーマのパーセンテージをそのまま使うと、補助テキストやクロームが控えめになるどころか目立ってしまい、意図とは逆の結果になります。明るい階調が生む階層に合わせるには、セカンダリーインクにおよそ rgb(255 255 255 / 56%)、ターシャリーインクに rgb(255 255 255 / 36%) を使います。例外はボーダーで、ほぼそのまま反転できるため、rgb(255 255 255 / 10–12%) が適切です。
ターシャリー段階は、そもそも白地ではアクセシビリティ基準を満たさなかった段階を忠実に置き換えたものなので、グリフ、区切り線、本当に任意のテキストに使います。日付、取り消し線付き価格、キャプションなど、実際のコンテンツがそこに置かれたら、明るくしてください。#0A0A0A 前後の真に暗いキャンバスなら、46%で4.66:1に達するため十分です。この数値はキャンバスの実際の暗さに左右されます。#1F1F1F では4.53:1となり余裕がなく、#262626 では基準を満たしません。暗い製品ではこの範囲のサーフェスがよく使われるため、#1A1A1A を超える場合は50%を使ってください。
明るいウォッシュは暗い背景上では、暗いウォッシュが明るい背景上にある場合よりも知覚上の変化が小さいため、インタラクション時の塗りつぶし値は単純には反転しません。明るいテーマの値のおよそ1.5倍を目安にしてください。ホバーは9%、押下時は14%です。静止状態の ウォッシュ と静止状態の 塗りつぶし は区別してください。行やサーフェスの色味付けには約5%が適切ですが、静止状態でもコントロールとして認識される必要があるボタンには約9%が必要です。ほぼ黒に対する5%の白では、サーフェスの明度が255段階中およそ12しか上がらず、塗りつぶされているようにはまったく見えません。
アルファブラックの塗りつぶしは使えなくなります。rgb(0 0 0 / 25%) で作ったくぼんだウェルは、ほぼ黒のキャンバス上では見えません。そのため、ページよりも 暗く 見せる必要があるサーフェスは、ページよりも明るくする必要があります。これは直感とは逆です。
サーフェスより先にインクを正してください。まずキャンバスをニュートラルにすると、インクに残る色かぶりがすべてかえって目立ちやすくなり、作業の途中でページの見た目が悪くなります。
色味のある暗いグレーは導入しないでください。目視ではなく、チャンネル間の差で判断します。差が約8ポイント以上なら色かぶりを正し、5ポイント未満ならそのままにし、その間は判断が分かれる範囲として扱います。修正にコストがかからない場合は修正してください。色かぶりは暗いサーフェスより明るいインクでずっと目立つため、同じ絶対値の色かぶりでも、階調の上部では問題になり、下部では問題になりません。ニュートラルから2、3ポイントずれたキャンバスは見えませんが、チャンネル間に10ポイント以上の差があるインクは、白の隣では明らかに青みがかって見えます。
暗いキャンバスではフォーカスリングを少なくとも2ピクセルにし、もともとの幅より狭くしないでください。細いリングは、見分けるための周囲の明るい領域がありません。また、状態色は元の色のままにしてください。ひとつのサーフェス内でアルファブラックとアルファホワイトのニュートラルカラーを混在させないでください。暗いページ上の明るいカードのように、意図的に反転させたサーフェスは使用してもかまいません。サーフェス全体で一貫した階調を保つのであれば、多くの場合有効です。 インターフェースのクローム、タイポグラフィ、区切り線、データビジュアライゼーションは、デフォルトでニュートラルにします。設計しているチャートはクロームなのでニュートラルにします。製品のスクリーンショット内にあるチャートはコンテンツです。色で2つの系列を区別している場合、その色は凡例の一部であり、ニュートラルにするとエンコーディングが損なわれます。製品写真、スクリーンショット、動画、ストーリーを伝える画像には、表現力のある色を使ってもかまいません。その色はメディアの中に収め、周囲のクロームに漏れ出さないようにします。
装飾が主目的のメディアは、メディアだからといって保護されるわけではありません。製品のスクリーンショットが1割で、鮮やかなグラデーションが9割を占めるパネルは、エスカレーションのトリガーが指す装飾的なグラデーションです。動画や画像のフレーム内に含まれていても、その性質は変わりません。フレームのうち、情報を伝える役割を果たしている部分の割合で判断してください。
マークアップで再構築された製品のモックアップも、スクリーンショットであることに変わりありません。マーケティングページでは、画像を使わずにDOMで自社インターフェースを再構築することがよくあります。そうしたモックアップはページ周囲のトークンを読み込むため、トークンレベルの変更が描写された製品の中にまで及び、アプリ本体のテキストを暗くしたり、本物らしく見せるべきダッシュボードを灰色にしたりすることがあります。こうしたモックアップ内の色相もニュートラルカラーも、描写されている製品に属するものです。そのため、セレクターを1つずつ例外扱いするのではなく、独自のスコープを設けてください。
ユーザーの注意を適切に引きつけられる場合は、確立されたブランドアクセントを1つ、主要なアクションに控えめに使用してもかまいません。ユーザーが厳密なモノクロを求めている場合は、アクセントを使いません。装飾的なアクセントを複数、新たに作らないでください。
ブランドマークはクロームではありません。周囲をすべてニュートラルにしても、製品自身のロゴは、公開時のままフルカラーで保ちます。ブランドが複数のカラーバリエーションを公開している場合、「公開時のまま」に該当するものが複数あります。白いマークを、明るく変更した帯の上に残すのではなく、新たに置かれる背景に合う公開済みのバリエーションを選んでください。ページがほぼモノクロの場合、シグネチャーカラーの小さなマークは、元の配色のとき以上にアイデンティティを伝えます。彩度を落とすと、デザインというより単なる脱色に見えます。ここで対象とするのは、デザイン中の製品のマークです。顧客ロゴ、パートナーバッジ、決済方法として表示されるサードパーティのマークは、アイデンティティではなく社会的証明なので、「ページ構成」に従ってモノクロにします。両方があるページでは、ページがどの製品に属しているかが違いを分けます。
マークにはデータラベルとしての役割もあり、これは4つ目のケースで、最も誤解されやすいものです。記録の対象を示すサードパーティのマーク、たとえばスコアの横のチームエンブレム、競技者の横の国旗、相場情報の横の取引所マークは、アイデンティティでも証拠でもありません。これは行ヘッダーであり、誰が所有しているかにかかわらず色を保ちます。その位置にあるマークの役割で判断し、所有者で判断しないでください。
マークの形状が認識を担うという主張には、サイズの下限があります。120pxのロゴ帯では正しくても、16pxでは当てはまりません。16pxでは、識別の大部分を色相が担っているためです。小さなマークの彩度を落としても目立たなくなるのではなく、区別されていたもの同士が見分けにくくなります。モノクロにしても問題ないと決める前に、実際に表示されるサイズを確認してください。
マーチャンダイジングの色は、ほかの2つとは異なる3つ目のカテゴリーです。ロイヤルティバッジ、キャンペーンの塗りつぶし、プロモーション用のフラッシュは、ブランドに関連していますが、状態を示すものでも、何かを識別するものでもありません。ニュートラルにしてください。 特徴的な色が、製品固有の主要データ(評価のゴールドやスコアのグリーンなど)に使われている場合もあります。これはアクセントではなく、ブランドマークとして扱ってください。そのデータが表示される場所ならどこでも使い続けます。たとえ200行のリストの中で繰り返し表示されても同じです。繰り返し認識されることこそが、特徴的なマークの役割であり、製品の最も識別しやすい要素を見つけにくくしても、製品はよくならないからです。同じ色相が、データ以外のもの、たとえば装飾的なバーや販促用のフラッシュ、ブランドカラーを借用したグラフの系列にまで広がっている場合に限り、使用を控えてください。そうしたものは、ブランドが本来の役割を果たしているのではなく、ブランドをまとった販促要素です。
判断が分かれる場合は、使用量で決めます。その基準は単純な個数ではなく、占有率です。未読ドット、ライブインジケーター、エラーバッジのように、状態を正しく示す色でも、読者が目を通す領域を埋め尽くすと、アクセントとして機能しなくなります。1枚のカード内に集中した10個のマークなら、まだ「これはセールのカードです」と伝わりますが、100個のグリッド全体に散らばった同じ10個のマークは、何も伝えません。
位置の揃い方は、個数や占有率よりも優先されます。小さなマークがリストの同じ水平位置に繰り返し現れると、ページの長さにわたる点線のようになり、面積が飽和していると認識されるより先に、線として認識されます。繰り返されるアクセントが同じ軸上に並ぶ場合は、点ではなく線として判断してください。
これらの考え方は、ブランドマークや特徴的なデータの色には当てはまりません。使用量の基準が適用されるのは、販促用の塗りつぶしや状態色です。何にでも使われると、それらは意味を失います。一方、特徴的なマークはそうではありません。繰り返し表示されることを意図しているため、「つまり、製品が何で知られているかを示す要素を取り除きました」という結論に至るなら、その前段階のどこかで判断を誤っています。線とアイデンティティが衝突する場合は、アイデンティティを優先し、線には例外を明記する必要があります。状態色が何も区別しなくなったら、形とラベルで意味を伝え、色相は取り除いてください。ただし、それを何も失わない変更としてではなく、何かを伝えていた色を別の手段に置き換える変更として説明してください。
販促用のフラッシュは前の段落で判断が決まり、この基準の対象にはなりません。どれだけ使われても、状態を示すものではないからです。
開示情報を、当初の表示より目立たなくしないでください。スポンサー表示、法的通知、アクセシビリティ機能は、提供元が選んだコントラストで配置されており、そのコントラストを維持する義務がある場合もあります。そのため、これらをメタデータの段階まで格下げすることは、デザインとは別の種類の失敗です。
背景色やテキストの色と合わせて、border-colorも確認してください。デザインシステムのデフォルトのアウトラインは、色味のあるグレーであることが多く、ニュートラルな文字色の横では色付きに見えます。また、ボーダー自体が意図的に見えるため、色をニュートラルにする工程をすり抜けて残りがちです。
タイポグラフィ
サンセリフ体のファミリーを1つ使います。
- すでに質の高いサンセリフ体の製品書体が使われている場合は、それを維持します。
- ネイティブインターフェイスでは、プラットフォームのシステムフォントを使います。
- Webでは、デフォルトとして
Inter Variableを使います。 - すでにライセンスを取得している場合は、より個性的な北欧らしさを表現できる
Scto Grotesk Aを使ってもかまいません。
ルール1で重視しているのは、セリフの有無ではなく、品質とアイデンティティです。出版物のタイポグラフィの声を担う質の高いセリフ体には、質の高いグロテスク体と同じ保護を与えるべきです。置き換えるなら、ブランドの声を損なうコストとして明示し、独立した根拠を示す必要があります。現在の書き方では、このルールがサンセリフ体だけを保護しているようにも読めます。そうなると、美しいグロテスク体を使うサイトはルールによって書体を維持できる一方、美しいCheltenhamを使うサイトはルールによって書体を失うことになります。どちらの書体が実際にうまく機能しているかとは無関係にです。
ルール1は、ページですでに所有しているものの、補助的に使っているファミリーでも満たせます。セリフ体を中心とするサイトで、ラベルやコントロールに質の高いサンセリフ体も使っている場合、そのサンセリフ体を主役にすれば、新しいファミリーを導入する場合よりも、失うアイデンティティを1つ減らしながら指示に従えます。Webのデフォルトのサンセリフ体に置き換えることと、製品独自の書体を主役にすることの違いは、グレースケールのコピーとリデザインの違いです。 ルール 3 は、ルール 1 と 2 が適用されない場合にのみ適用します。よくできた製品書体を置き換えるのは、それ自体に根拠が必要な変更であり、既定の対応ではありません。通常、置き換えを正当化できる根拠は一つあります。ファミリーが 2 種類のウェイトしか提供しておらず、このシステムの他の部分が依存するラベルと見出しの階層を表現できない場合は、既定の Web サンセリフを代用するのが妥当です。ただし、その代償としてブランドの声が失われることは、きちんと言葉にしておく価値があります。代用する前に、両方のファミリーが提供するウェイトを確認してください。元のウェイトも代用先と同じくらい重要です。300 で統一されたページは、300 を提供しないファミリーでは気づかないうちに 400 に解決され、ウェイトが担っていた差異がすべて失われることがあります。幅のクラスも確認してください。グロテスク体は多くのセリフ体よりも幅が広く、x ハイトも高いため、ピクセルサイズを変えずに置き換えると行数が増えます。コンデンス体をそのまま置き換えるのは最悪のケースで、狭いカラムに組まれた見出しは高さがさらに半分増すこともあります。サイズを小さくする前に、字間と行送りで幅を調整してください。
2 つ目のファミリーは、混在したシステムではなく、意味を符号化するものかもしれません。出版物のあるセクションが別のセクションと書体で区別されている場合、2 つを一律にすると、読者が利用していた違いが消えてしまいます。これは、2 系列のグラフを中立化すると凡例が失われるのとまったく同じです。統一しても問題ないと判断する前に、違いを補うラベルがないか確認してください。
セリフ体のディスプレイ書体は導入しないでください。ユーザーから明示的に維持するよう求められない限り、セリフ体のタイポグラフィは選択したサンセリフファミリーに置き換えてください。ライセンスが確認できていない有料フォントは導入しないでください。
- 本文:16~18px、ウェイト 400、行送り 1.5~1.6
- ラベルとコントロール:ウェイト 500
- 見出し:ウェイト 500~600 とし、700~900 は避けます。ただし、ファミリーが実際に提供しているウェイトを確認してからにしてください。CSS のウェイトマッチングでは、提供されていない 500 は 400 に、提供されていない 600 は 700 に解決されます。そのため、2 種類のウェイトしかないファミリーでウェイトを指定し直すと、タイトルと説明文を分けていた唯一の違いが気づかないうちに消えることがあります。利用できるウェイトでは目標を表現できない場合は、ページがすでに使っているウェイトを維持してください。
- 大見出し:行送り 1.05~1.15、字間をわずかに詰める
- 本文:ニュートラルな字間
- ロゴ、ラベル、ボタン、ナビゲーション、バッジ、メタデータを含め、すべて大文字のテキストや強制的な大文字化は使用しないでください。センテンスケースまたは自然なタイトルケースを使用してください。すべて小文字の UI 表示も逆方向の同じ問題なので、小文字のナビゲーションやコントロールのラベルもセンテンスケースに直してください。どちらのルールもスタイルによる大文字・小文字の変換を対象とします。対象は UI 表示に限定し、タイトル、ユーザー名、本文の文章は元の大文字・小文字を維持してください。大文字が CSS ではなくマークアップに含まれている場合は、隣接する文字列まで壊す一括変換を適用せず、そのままにしてください。変換を削除する前に、その変換がどのように機能しているか確認してください。マークアップ内の小文字のスラッグに
text-transformが適用されている場合、その変換はマークアップを補正しています。これを解除すると、このルールで禁じているすべて小文字の UI 表示になります。また、変換を削除するとマークアップに含まれる文字列がそのまま表示されるため、複数の見出しでセンテンスケース、すべて小文字、すべて大文字が一度に混在する可能性があります。そのため、text-transform: noneを一律に適用すると、控えめというより壊れているように見えるページになります。すべてに同じ指示を選ぶ前に、元の文字列を確認してください。 マークアップ自体が強く主張しすぎる場合は、text-transform: lowercaseと::first-letter { text-transform: uppercase }を使うと、文頭のみ大文字の表記にできます。ただし、これは固有名詞や略語を含まない、1文だけの文字列でのみ安全です。「RVs」や「FPS」は崩れてしまい、<br>を挟んだ複数の文では最初の文にしか適用されず、将来どんな値が入るか分からないテンプレート文にも使えません。どの選択肢も適切でない場合は、その旨を伝え、ルールを満たしたと報告するのではなく、より影響の小さい方を選んでください。 - 各画面のテキストスタイルは、明確に区別できるものを3〜4種類に抑えてください。これは編集・マーケティング向けの画面を想定しています。情報量の多い業務画面では、正当に6種類が必要になることもあります。1行のデータだけで、見出しや記事タイトルが登場する前に、ラベル、値、補足、ステータスの4段階を使うことがあるためです。超過と判断する前に、データ自体に必要な段階を数えてください。
- 多くのウェイトを使うのではなく、主にサイズと余白で階層を作ってください。
- 本文の幅は、55〜68文字程度にしてください。図表の多いページでは、行の長さを狭めると縦方向の高さが増します。そのコストを明示し、空いた横幅にメディアを配置して、無駄な余白にならないようにしてください。
画面と構成
このセクションの数値は、独自の一貫したシステムがない画面向けのデフォルト値です。製品ですでに一貫した間隔スケール、角丸の規則、または本文幅が使われている場合は、そちらに合わせてください。すでに内部で一貫しているページにこれらの数値を適用すると、機能しているシステムを別のシステムに置き換えることになり、改善にはなりません。
- 8pxの間隔リズムを基本とし、必要に応じて4px単位で調整します。
- 周囲のシステムが許す場合は、モバイルでは24px、デスクトップでは40〜64pxのマージンを優先します。
- 密度に余裕がある場合、デスクトップでは主要な編集セクションの切り替わりに96〜144px、モバイルでは64〜96pxの間隔を設け、関連するグループ内の間隔は大幅に狭くします。章の末尾に大きな図があり、それだけで次の見出しが下がる場合、その上に移行用の間隔が加わるとテキストの横に空白が生まれます。範囲を機械的に適用せず、実際にレンダリングされた間隔を測ってください。
- 枠線や背景を追加する前に、まず余白でセクションを分けます。線を引く前に、線がなければ何が曖昧になるかを明確にしてください。何も曖昧にならないなら、線は追加しません。
- 間隔は数値ではなく比率で明確にします。見出しの上の間隔がおよそ下の間隔の3倍なら、その見出しは下のコンテンツに属します。線を引きたくなる場合は、たいてい上下の間隔に十分な差がなく、実際の曖昧さではなくその差を補うために線を使っています。
- 線の数は文書全体ではなく、画面ごとに数えられるようにします。長いページでは、ビューポートあたりおよそ1本の章区切り線が構造として読めますが、同じ14本でも文書全体の合計として数えると違反のように見えます。コンテンツと周辺要素を分ける線が1本なら構造として読めますが、目次を横切る線が18本あると格子状に見え、視線は言葉より線を追い始めます。レール、セクション区切り、グループ区切り、グリッドの枠線はすぐに積み重なり、追加するたびに個々の線は妥当に見えても、全体では過剰になります。
- 線の数と密度のどちらを優先するかは、軸の向きで決まります。横線は余白で置き換えられます。順に読むレコードを分けるため、代償はスクロールだけです。縦線は余白で置き換えられません。同時に読む列を分ける線であり、広げる余白を確保できないためです。まず横線を減らし、複数列のグリッドを支える縦線は残します。
- 関係性を分断する線は決して引きません。画像とキャプション、ラベルとフィールド、レコードとメタデータは、それぞれひとまとまりとして読める必要があります。区切り線は同列の要素の間に置き、対になった要素の間には置きません。
- 境界の数は要素ごとではなく、コントロールごとに数えます。枠線付きフォームの中に枠線付き入力欄があり、枠線付きの送信ボタンもあると、1つのコントロールを3回囲うことになります。線の代わりに控えめな塗りで境界を表せます。
- 控えめなものは控えめなままにします。元のデザインで境界がなかったコントロールに、スタイル変更を機に境界を付ける必要はありません。枠で囲うと、理由なく周囲の要素より目立ってしまいます。
- 線は互いとの比較で評価されるため、大半を削除すると残った線が目立つようになります。線を削除する作業をした後は、残した線も見直してください。
- 繰り返し表示されるレコードでは、小さな間隔でメタデータをレコードに結びつけ、はるかに大きな間隔でレコード同士を分けます。視線は相対的な距離で要素をグループ化するため、線は不要です。置き換えに必要な余白が、画面の密度として許容できる量を超える場合に限り、細い線を検討し、そのトレードオフを明確にします。
- 交互の行に背景色を付ける方法は、余白と細い線に並ぶ第3の選択肢であり、長いリストではどちらよりも優れています。縦方向のスペースを使わず、線も引きません。余白では数百件のレコードからなるリストに何千ピクセルもの高さが加わることがあり、細い線では100ピクセルごとに線が1本入ります。背景色はごく控えめに、およそ3%に抑え、その上に置かれるすべての要素のコントラスト計算が変わることを意識してください。
- レコード間の間隔は、レコード内の最大の間隔を上回る必要があります。見積もりではなく、測定してください。アクション行がカードの下端に固定されていると、短い項目の内部にも広い余白が生まれ、項目間の十分なガターと同じ広さになることがあります。その結果、コントロールが下のレコードに属するように見えてしまいます。内部の間隔を縮められない場合は、ガターをそれ以上に広げる必要があり、密度が下がります。それが、正しいグループ化に必要な正当な代償です。
- グループとしてのまとまりが明確なら、枠で囲んだカードより細い区切り線を優先します。
- 区分されたデータ領域では、共有する境界線をきれいに接続します。区切り線は意図したコンテナ全体にわたって引き、隣接するセルの端は、パディングの不一致によるわずかな隙間を作らずに共有させます。
- 角丸は控えめにし、通常は6〜12pxにします。
- 完全に丸いピル型のボタンも使えますが、標準にはしません。ボタンの形状は個別に決めるのではなく、コンポーネントシステムの一部として選びます。同等のプライマリーCTAは、ページ全体で同じ角丸、高さ、パディング、ウェイトに揃える必要があります。プライマリーボタンがピル型なら、すべてのプライマリーボタンに同じピル型を適用します。角丸を控えめな6〜10pxにする場合も、その形状で一貫させます。タグやフィルターは役割が異なるため、別のピル型スタイルにできます。数量コントロール、大きなフィールド、パネル、密度の高い運用コントロールにはピル型を使いません。
- 隣接するコントロールは1つのグループとして扱います。高さ、角丸、水平方向の広がりを揃え、コントロール間の間隔は周囲の要素までの間隔より小さくします。横のラベルを繰り返すだけのアイコンは装飾です。アイコンはラベルの代わりになる場合に使い、ラベルと重複する場合は使いません。
- 各軸の間隔は1か所で設定します。ラッパーにパディングを追加する前に、子要素にすでに設定されていないか確認してください。継承されたコンポーネントCSSですでに設定されていることが多く、両方を使うと重なって加算されます。
- パディング、行の高さ、高さを変更したら、その要素に対して配置された要素も確認します。絶対配置されたトグルや内側のインジケーターは一緒に移動しません。症状を追ってオフセットを追加すると、ほかの要素を変更した途端にずれてしまいます。
- 高さの違いが動作を示す場合を除き、影は避けます。
- 影が必要な場合は、ぼかしの大きい影ではなく、ほとんど見えないニュートラルな影を使います。ほぼ黒のキャンバスでは影がまったく見えないため、同等の手段として、ごく薄い白の放射状グローを使えます。ただし、影とまったく同じ基準を適用します。グローを制限する基準が対象とするのは装飾であり、高さの違いを示す表現ではありません。
構造の再設計
既存の構造によってスキルの階層、明瞭さ、または章ごとのリズムが損なわれている場合は、レイアウトと構成を変更できます。既存の DOM や配置ではなく、プロダクトの意味、コンテンツ、機能、操作の結果を維持してください。
構造を変更できるからといって、すべてを配置し直す必要はありません。主要なタスクとコンテンツの関係がすでに明確な場合は、効果的な構成を維持してください。再設計を大げさに見せるためだけに、優れた見慣れたプロダクトのレイアウトを置き換えないでください。
スキルでは、次のことができます。
- ページのグリッド、カラムの比率、最大幅、配置、セクションの順序を変更する。
- セクションを移動、統合、分割して、より明確なストーリー展開とタスクフローを作る。
- 繰り返しのカードグリッドを、区切り線、機能紹介の行、エディトリアルな章立て、または主役となるメディア構成に置き換える。
- ヒーロー、ナビゲーション、ソーシャルプルーフの帯、プロダクトデモ、お客様の声、比較セクション、またはフッターを再構成する。
- 補足コンテンツを、それが説明するコントロールや結果の近くに移動する。
- 小さなビジュアルが断片的に集まった構成を、1つの大きなプロダクトのスクリーンショット、写真、動画、またはイラストにまとめる。
- 新しい構成をよりすっきりと実装するために、コンポーネントを作成または抽出する。
- 小さな画面でも同じグリッドを維持するのではなく、デスクトップとモバイルで異なる構成にする。
大規模なレイアウト変更を行う前に、構造上の問題と意図する階層を明示してください。局所的な変更を多数加えるより、全体に一貫性のある構成を優先してください。ページをすっきり見せるためだけに、コンテンツや機能を削除しないでください。
メディアの背後の塗りは、装飾ではなく機能を示すものかもしれません。画像の下のフラットなパネルは、画像の読み込み中に表示領域を確保するためのプレースホルダーであることがよくあります。そのため、これを削除すると、未読み込みの画像がどれも白い空白になり、その下にキャプションだけが取り残されます。メディアの背後の背景を消す前に、未読み込みの状態を確認してください。
装飾のために確保されたスペースは、装飾をなくしても消えるわけではありません。イラストに合わせたサイズの帯や、装飾を避けるためにずらしたグリッドは、落ち着きではなく空虚さとして感じられる余白を生みます。同じことは小さな規模でも起こり、削除したアイコンのための枠を残したままのコントロールにも当てはまります。空いたスペースは意図的に詰めてください。
装飾がコントロールの唯一の視覚的な出力でもある場合は、単に目立たなくすることと削除することは同じではありません。たとえば、セレクターで変化するグラデーションや、ボタンで再生するアニメーションが該当します。コントロールの変化が伝わるように彩度を下げ、各状態を見分けられることを確認してください。
アイテムごとに異なる装飾は、彩度を下げるのではなく、フラットにしてください。タイルごとに異なる色相が使われている場合、各タイルがそれぞれ異なるグレーになっても、存在しない情報を表すように見えてしまいます。単一のフラットな面なら、元のデザインが伝えていたもの、つまり何もないことを表せます。
次に、そのコンテナにまだ存在意義があるかを確認してください。アイテムごとの色をフラットにすると、色とりどりのタイルのグリッドが同一のボックスの壁に変わることがあります。その均一さはページにもともと備わっていたのではなく、変更によって生み出されたものです。多様性を担っていた塗りは、今や何も担っていません。通常はコンテナを取り除き、タイポグラフィの階層と余白でグループ化します。
メディアに重ねた色付きグラデーションは、通常2つの役割を担っています。色相を取り除くと、その上のテキストを読みやすくしているスクリーンも失われるため、スクリーンは無彩色で残し、色だけを取り除いてください。
コマースページと商品詳細ページについては、次のとおりです。
- 商品メディアを視覚的な主役にします。
- デスクトップでは、読み進める方向に合う場合、左側に大きなギャラリー、右側にコンパクトな商品・購入情報の列を配置します。
- 商品名、価格、オプション、在庫状況、主要な購入アクションをひとまとまりにします。特に、途中で分断されていないかを確認してください。価格と配送確認の間に挟まれたプロモーションタイル、プランナーへのリンク、サービスモジュールは、別々の章に分けるのと同じくらい購入の流れを分断しますが、こちらのほうがよく見られます。このまとまりには、商品名、価格、オプション、在庫状況、購入アクション以外のものを挟まないでください。
- すべての商品にバリエーションの選択欄があるとは限りません。色見本やサイズがない場合、オプション欄には寸法、シリーズ、カタログへのリンクを配置します。これらはページの周辺ではなく、購入情報のまとまりに含めます。
- メディアの優位性は、横方向だけでなく縦方向にも保ちます。購入情報の列がギャラリーの2倍の高さになっている場合、購入アクションの下にサービス、ロイヤルティプログラム、分割払い、保護サービスのモジュールが積み重なっていることがほとんどです。列の幅を広げるのではなく、その下に続く情報の優先度を下げます。
- 購入アクションを実行できない場合、無効化されたコントロールはその位置に残し、理由を読みやすいコントラストで示します。購入できない理由がページ内で最も読みにくいテキストであってはなりません。「類似商品を探す」「通知を受け取る」「店舗を変更する」など、実行可能な代替手段が唯一のアクションである場合は、それを主要なアクションとして扱います。
- 価格のベースラインをそろえます。コマースシステムでは通貨記号やセントの部分が慣例的に半分のサイズで上付き表示されますが、価格全体を同じサイズと太さにすることが、ページ上で最も効果的な抑制になる場合がほとんどです。
- 長い購入前の説明で主要な商品画像をページの下へ押しやったり、補助的な装飾にしたりしないでください。
- モバイルでは、まずギャラリーを置き、その後に商品詳細、オプション、購入アクションの順に縦に並べます。
- 商品の評価やタスクの完了を別の構成が明らかに改善する場合に限り、このパターンから外れます。
ソースにアクセスできないウェブサイト
このスキルは、マークアップ、スタイル、コンポーネント、トークンを変更できるコードベースを対象としており、上記の内容はすべて変更できることを前提としています。上から重ねるのではなく、システム自体を編集してください。利用側を上書きするのではなくトークンを変更し、リセットするのではなくルールを削除し、2つの役割を担っているコンポーネントは分割します。既存のコードと競合するオーバーライドは、解決策ではなく、コードに問題があることを示しています。
編集できない公開済みサイトやサードパーティ製サイトが対象の場合は、制約付きのCSSオーバーライドによる代替手段とそのハーネスについて、websites.mdを参照してください。この方法には限界があることを明記してください。構成を変更できる範囲は既存のDOMによって制限されるため、ソースレベルで再設計するほうが、より踏み込んだ変更を実現できます。
ページ構成とストーリーテリング
マーケティング、エディトリアル、製品ページでは:
- それぞれの大きな章に、明確なアイデアを一つ設けます。繰り返し使える構成として、簡潔な見出し、短い説明、三つか四つの機能紹介、その後に主役となる製品ビジュアルを配置します。
- 境界線やコンテナを追加する前に、白と
rgb(0 0 0 / 4%)のようなごく薄いニュートラルカラーのセクション背景を交互に使い、リズムを生み出します。暗いキャンバスには「ごく薄い背景色」がないため、同等の効果を得るには、区切りとして本当に明るい帯を一つ使うか、何も使わないようにします。 - 章の視覚的な中心として、大きなスクリーンショット、写真、動画、または実物の製品を組み合わせたビジュアルを一つ使います。コンテンツに没入感が必要なら、幅いっぱいに近づけます。
- 小さなカードをたくさん並べるのではなく、大きな章コンテナをいくつか使います。大きなメディアを扱う章では控えめな角丸を使ってもかまいませんが、その内部のコンテンツを別のカードグリッドにしないようにします。
- 顧客やパートナーのロゴは単色で均等に配置し、ソーシャルプルーフが控えめに見えるようにします。これは、自社製品のマークをフルカラーに保つことと対になる考え方です。第三者のマークはアイデンティティではなく証拠であり、ほとんどのページで、各ロゴ本来の色を使ったロゴの列は最も目立つ帯になります。形状そのものが認知につながる決済ロゴにも、同じことが当てはまります。
- システムに変化をつけるため、ときどき大きな推薦文、事例画像、またはエディトリアルコラージュを取り入れます。一度の印象的な変化のほうが、すべてのセクションに装飾を加えるよりも個性を生み出します。
- カードが不要な場合、機能紹介はアイコン、短い動詞、そして一行の成果として示します。
- インライン見出しを二つのトーンで表現します。最初の文は完全な濃さにし、続く文は同じサイズとベースラインのまま約60%の濃さにすると、二つ目のウェイトやサイズを使わずにマーケティングページに明確な階層を作れます。また、ニュートラル化の工程を経てもそのまま保たれます。
- 縦に長いマーケティングページでは、各章に塗りつぶしのプライマリーアクションを一つ置くのが基本であり、ルール違反ではありません。「控えめに」という範囲は、ドキュメント全体ではなくビューポートに適用します。
- 製品独自のマークと同じ領域にアクセントカラーの塗りつぶしボタンを置くと、ボタンがマークより目立ち、アイデンティティを印象づける機会が失われます。ボタンをニュートラルな色にして、その場で唯一の色をマークにします。ただし、これはマークにボタンより目立つ色がある場合の話です。マークが黒で表示される場合は守るべきアイデンティティの機会がないため、アクセントカラーを使ってもかまいません。
- 同じ考え方は色だけでなく、大きさにも当てはまります。ネームプレートとヒーロー見出しの両方がディスプレイサイズで強く主張すると、ネームプレートはページを導くのではなく、ページと競合します。大きなマークを使い続けることが妥当なのは、隣にある要素の主張を抑える場合だけです。そうすれば二つの要素の一方ではなくなるため、元のデザインよりもマークがアイデンティティを担う役割が大きくなります。
- フッターは情報密度を高くしてもかまいませんが、同じタイポグラフィ、配置、ニュートラルな処理を保ちます。
- モバイルでは、各章の順序と階層を保ちます。要素を縦に並べて簡潔にし、デスクトップの構成を単に縮小するだけにしないでください。
インタラクションとモーション
モーションは控えめで、すぐに反応し、目的が明確である必要があります。フィードバック、空間的な連続性、状態の表示、または急激な変化の防止に必要な場合にのみ追加してください。
- キーボード操作で開始されるアクションや、極めて頻繁に発生するアクションはアニメーションさせないでください。
- ユーザーが1日に何十回も行う操作では、モーションを抑えてください。
- 通常の UI モーションは300ms未満にし、より長いモーションは、説明を目的とするまれな場面に限って使用してください。
- 表示と非表示には
ease-out、画面上ですでに表示されている要素の移動にはease-in-out、色やホバーの切り替えにはeaseを使用してください。応答性が求められる UI にはease-inを使用しないでください。 transformとopacityを優先し、合成による代替手段がある場合はレイアウトプロパティのアニメーションを避けてください。scale(0)から表示を開始しないでください。拡大縮小が適切な場合は、控えめなscale(0.95–0.98)と opacity を使用してください。- ポップオーバーやメニューはトリガーに固定し、中央配置のモーダルは中央のままにしてかまいません。
- 押下フィードバックが製品に適している場合は、およそ100~160msの控えめな
scale(0.97)を使用してください。 - 素早く連続して起動されるモーションや、ジェスチャーによるモーションは中断できるようにしてください。
prefers-reduced-motionに従い、役立つ色や不透明度のフィードバックは維持しつつ、不要な動きを取り除いてください。- ホバー時のみのモーションは
(hover: hover) and (pointer: fine)を条件に適用してください。
静的なインターフェースを洗練された印象にするだけの目的で、アニメーションを追加しないでください。判断に迷った場合は、アニメーションを削除するか、控えめにしてください。
装飾的な動き続けるモーションを停止するときは、静止状態に戻してください。アニメーションを無効にするだけでは、要素は最後のフレームの位置に残ります。マーキーやカルーセルではコンテンツがコンテナーの端で切れた任意の位置になり、フェードインでは完全に透明なままになることがあります。アニメーションが動かしていた transform または opacity もリセットし、キャプチャで意図した静止状態になっていることを確認してください。
エスカレーションのトリガー
対象範囲内で次の問題が発生した場合は、ブランドや機能上の明確な理由がない限り修正してください。
- ニュートラルなアルファブラックのトーンの代わりに、暖色系または寒色系に色味のついたグレーを使用している。デザインシステムから継承したデフォルトの境界線の色も含みます。プロダクト独自のブランドカラーから体系的に導き、一貫して使用されているニュートラルカラーはブランドカラーであり、修正すべき色味ではありません。
- セリフ体の見出し用書体、またはセリフ体とサンセリフ体を混在させた構成
- すべて大文字のテキスト、または CSS
text-transform: uppercase - すべて小文字のナビゲーションやコントロールのラベル
- インターフェースのアイコンとして使われている絵文字
- 要素と、その要素自身のキャプション、ラベル、メタデータを隔てる区切り線
- 画面上のルールが、読者が数えきれないほど多い状態で、余白で同じ役割を果たせる場合。密度の高い検索画面で同等の項目を区切るルールは、密度を高める役割があります。雑然としていると判断する前に、ルールをなくした場合に何で置き換えるのかを考えてください。
- 意味のない装飾的なグラデーション、テクスチャ、光彩、彩度の高い色
- サーフェスを高級に見せることだけを目的とした、大きい影や重ねた影
- すべてのカードが同じ重みで、優位な要素がない状態。実際のプロダクトメディアを収めた大小さまざまなコンテナの組み合わせはベントーであり、カードグリッドではありません。これを平坦化すると、プロダクトを見せる唯一の場所が失われ、説明するだけになってしまいます。
- 通常の長方形のコントロールやコンテナに使われているピル形
- 同等のボタンや CTA の間で、高さ、角丸、パディングが統一されていない状態
- 余白、配置、角丸、境界線の不透明度、アイコンの扱いに一貫性がない状態
- 階層に必要な数を超える文字スタイルやフォントの太さ
- 使いやすい情報密度を損なう、大きすぎる見出しや余白
- コントラストが低い本文テキストやコントロール
- ステータス、フォーカス、警告、エラー、成功、選択中、アクティブ、破壊的な状態から色が取り除かれている
- 意味を持つ色に添えられた形状やグリフも色と一緒に取り除かれ、色相だけで状態を伝えている状態。残った要素だけで状態を十分に認識できるか確認してください。塗りがニュートラルになった後、隣のタブと細い線だけで区別される選択中のタブは、技術的には差が残っていても、視覚的な手がかりを失っています。差があることを確認して終わるのではなく、別の方法で状態を表現してください。
- タイポグラフィやラベルに関するルールの副作用で意味を持つ色が取り除かれている状態。意図的に配色を変えるのではなく、こうして色が失われるのが一般的です。速報を示すフラグと通常のキッカーは、同じ要素で同じマークアップを使い、参照するトークンだけで区別されていることがよくあります。そのため、サイズや字間を設定するルールが
colorも設定すると、慎重に残しておいたトークンには手を付けないまま、状態を示す色まで失われます。 - 機能的な目的のないモーション
修正の優先順位
後の項目より、先の項目を優先してください。
- ページの流れ、階層、ナビゲーション、グループ化、コントロールとコンテンツの対応を修正します。
- 現在の構成がこれらの目標を妨げている場合は、レイアウトを再構成します。
- 装飾、冗長なサーフェス、重複したラベルを取り除きます。
- 余白、配置、情報密度を統一します。
- タイポグラフィ、文字幅、字間、行の高さを統一します。
- 色、境界線、角丸、エレベーションを共通トークンにまとめます。トークンを変更する前に、そのトークンを使っているすべての要素を確認し、それぞれが何のために使っているかを確認してください。同じ値でも、塗りでは控えめになり、境界線では強く主張することがあるためです。アクセントカラーを黒にすると、それを参照するすべてのボタンは落ち着きますが、柔らかな金色の細い境界線は硬い黒い枠になり、変更前よりも目立ってしまいます。デザインシステムでは、1つのトークンが複数の役割を担うこともあります。そのため、ブランドトークンが別名としてアクティブ状態を定義していたり、装飾的なバッジが実際のエラー状態の値を借用していたりすることがよくあります。1つのトークンが2つの役割を担っている場合、それ自体が多くの場合、見つかった問題です。妥協した値を選ぶのではなく、トークンを分けてください。
- コントロール、操作の手がかり、フォーカス、ホバー、押下、無効、読み込み、空、エラーの各状態を調整します。
- 静的な階層が機能してから、モーションを追加または調整します。
ワークフロー
- 呼び出しモードと正確な対象範囲を特定します。
- 調査を完了し、主要なタスクと階層を特定します。
- 運用方針に照らして、変更候補を評価します。
- 修正の優先順に沿って変更を適用し、別の仕組みを新たに作るのではなく、既存のシステムを再利用して拡張します。
- 機械的および視覚的に検証します。
- 何を変更したか、その理由、意図的に維持したものを報告します。
検証
ブラウザーでの検証
ブラウザー、プレビュー、スクリーンショット、またはコンピューター操作のツールがある場合は、視覚的な検証が必須です。
- 実際のアプリケーションを起動するか見つけて、変更した正確なルートを開きます。
- 変更前と変更後のデスクトップおよびモバイルのスクリーンショットを、固定の表示サイズで撮影します。
- コードや DOM 構造に頼らず、レンダリングされたスクリーンショットを確認します。
- インタラクションの状態を撮影するのではなく、測定します。ホバー、フォーカス、押下のルールは詳細度の競合に負けて、そもそも適用されないことがあります。スクリーンショットではそれがわからないため、記述したルールが実際に適用されたルールだと信じるのではなく、状態を強制したうえで計算済みスタイルを読み取ります。
- 削除したものは、宣言ではなくレンダリング結果で確認します。すべての線がボーダーとは限りません。インターフェースでは、
box-shadow、::beforeや::afterのバー、または 1 ピクセルに折りたたまれた要素で線を描画することもあります。そのため、borderを削除しただけでは線がなくなった証拠にはなりません。ソースに書かれたものではなく、インターフェースが実際に描画するものを列挙します。 - 小さなコントロールは拡大して確認します。数ピクセルのずれはページ全体の表示では見えず、修正後もページ全体の検証を通過してしまいます。
- 主要なインタラクション、キーボードフォーカス、ホバーまたは押下状態、変更したレスポンシブ動作を試します。
- 狭いビューポートは確認で済ませず、個別に検証します。広いカラム向けに指定されたパディング、インセット、ボーダーは、スマートフォンの幅に対して大きな割合を占めます。1440px では改善となるルールが、390px では後退になることがあります。
- ブラウザーのコンソールにエラーがないか、ビューポートにクリッピングや横方向のオーバーフローがないかを確認します。
- 長いページでは、すべての章をスクロールして確認し、ページ全体または複数のビューポート区間を撮影します。最初の画面だけでは不十分です。
- 表示上の問題を修正し、結果が合格するまで撮り直します。
ブラウザーツールを利用できない場合は、視覚的な検証ができなかったことを明記します。コードの確認だけでデザインを視覚的に検証したと主張してはいけません。
このリストのうち、目視では困難な 4 つのチェックは、このファイルと同じ場所にある scripts/ にスクリプトとして用意されています。いずれも URL(通常は開発サーバー上のルート)を受け取り、必要なのは playwright-core とローカルの Chrome だけです。
node scripts/lines.js <url>— ページが描画するすべての線を、水平・垂直の別と描画方法とともに表示します。区切り線を削除した後のパスで実行します。node scripts/tints.js <url>— 色のチャンネル間の差に基づいて色味のあるニュートラルカラーを表示するとともに、モノクロ化のパスで考慮する必要がある彩度の高い色を一覧表示します。node scripts/density.js <url>— 画面ごとに表示される項目数を表示するため、密度に関する主張を推測ではなく測定できます。node scripts/bands.js <url>— 長いページを、確認しやすいビューポートの高さごとの画像に分割します。
実行結果が問題なしだからといってページにも問題がないと思い込まず、表示内容を確認してください。各スクリプトが答えるのは限定的な問いであり、上記のセクションでは、それぞれが誤解を招くことがわかっている状況を説明しています。
確認できなかった状態があれば、画面全体を確認したかのように示唆せず、その状態を明記します。訪問済みリンク、エラー状態や読み込み状態、認証が必要な画面は、スクリーンショット用のハーネスでは到達できないことがよくあります。
同じ理由で検証手順が繰り返し失敗する場合は、もっと注意深く対応すると決意するのではなく、そのチェックをスクリプトにします。失敗を可視化するツールは、注意を促す指示を増やすよりも価値があります。
現実的なコンテンツを使い、実際のデスクトップおよびモバイルの表示サイズで結果を確認します。次の項目を検証します。
- 主なタスクと次のアクションが明確です。
- ナビゲーションによって、ユーザーが現在どこにいるのか、どこへ移動できるのか、どうすればそこから離れられるのかがわかります。
- グループ分けは近接性に沿っており、コントロールは作用する対象の近くに配置されています。
- 長いコピー、空の状態、読み込み中の状態、エラー、密度の高いデータがあっても、レイアウトは崩れません。
- コントラスト、キーボード操作、視認できるフォーカス、タッチターゲット、セマンティックな状態がアクセシブルに保たれています。
- 文字を大きくしたり、画面幅を狭くしたりしても、階層構造は崩れません。
- 同じものが二重に描画されていません。意図したデザインに一致していても、そのルールが描画した証拠にはなりません。独自の指定を追加する前に、既存の宣言がすでに同じピクセルを描画していないか確認してください。
- 意図せず意味を持つようになった要素はありません。色を取り除くと、彩度の高い色に埋もれていた情報が見えることがあります。結果が元より読みやすくなったら、そこで止め、さらに単色に近づけようとしないでください。
- 左揃えの修正は、コンテナ、中間にあるすべてのラッパー、テキストノードそのものを確認して初めて完了です。スタックを中央揃えにする仕組みは複数あります。そのうち三つの仕組みのうち二つだけを修正すると、ブロックは中央揃えなのにテキストは左端に揃ったままになります。これは修正前よりも悪い状態です。
- 長いページでは章ごとのリズムが意図的に設計されており、カードを繰り返し並べただけの構成になっていません。
- 結果は認識テストに合格します。変更後の状態だけを見せられても、元のデザインを見たことのないデザイナーが、色を取り除いただけの元のデザインではなく、意図的に設計されたスカンジナビア風の画面だと認識できます。
- 元の画面が備えるすべてのインタラクティブ機能(アクション、コントロール、ナビゲーション、入力、切り替え)は引き続き存在し、利用できます。コンテンツやリンクだけでなく、機能もすべて洗い出してください。コントロールを目立たなくするのは構いませんが、削除してはいけません。
- 表現力のある色は、目的のあるメディア、または許可された唯一のプライマリアクセントの中に収まっています。
- ホバー、押下、選択、無効、破壊的操作の各状態を区別できます。
- 動きがある場合は、動きを減らす設定に対応しています。
- コンソールに問題はなく、既存のチェックも引き続き成功します。
目視確認で曖昧さ、過度な空白、効率の低下が見つかった場合は、必要なコンテキストや情報密度を戻して、もう一度確認してください。
ガードレール
次のことは避けてください。
- 破壊的な操作と中立的な操作を、見た目で区別できなくする。
- 理解に必要なラベルや境界を削除する。
- これまでなかった画面に、プライマリーアクションを作り出す。「プライマリーアクションは一つ」とは、最大でも一つという意味であり、必ず一つという意味ではありません。
- パレットに合わせるために、ブランドマークの彩度を下げる。
- 求められていないのに、確立された製品のアイデンティティを置き換える。
- コードの差分を最小限にするためだけに、弱いレイアウトを維持する。
- 既存のコンポーネントで十分に解決できる場合に、依存関係を追加する。
- スクリーンショットをすっきり見せるためだけに、高度な機能を隠す。
- 目新しさと洗練を混同する。
レビューの出力
レビューのモードでは、次のようにします。
- 指摘事項を優先度の高い順に提示します。
- 指摘ごとに、現在の状態、目指す状態、製品の改善につながる理由を述べます。
- 必要な修正と、任意の仕上げを分けます。
- 変更すべきでないブランディング、セマンティックカラー、有用な境界、情報密度、インタラクションパターンを記した、短い維持するものセクションを含めます。
- 最後に、結論として「すでに一貫性がある」「重点的な仕上げが必要」「構造的な再設計が必要」のいずれかを示します。
適用のモードでは、影響の大きい変更、実施した検証、目視で確認できなかった制約を要約します。
出力基準
落ち着きがあり、機能的で、洗練され、意図的にシンプルな印象に仕上げてください。迷った場合は、使いやすさを損なわずに、画面をより控えめにしてください。