Communitygithub.com

データビフォアデザイン

保存されたデータのビュー(カード、パネル、テーブル、ダッシュボード、レポート、プロフィールページ)を構築する前に使用します。また、ステークホルダーが「何を表示すべきか」と言ったとき、フィールドが明らかに有用そうに見えるとき、同じレコードのレイアウトが競合するとき、複数のカードやチャートが同じカテゴリをカバーしているときに使用します。「デザインプロセス(純粋な見た目)」や「投稿されたチャートの読みやすさ(実用的チャート)」には使用しません。

データビフォアデザイン とは?

データビューの品質を決定する3つの要素(ビューがサポートする意思決定、フィールドの実際の内容、ユーザーが望むレイアウト)を、マークアップ作成前に確立するためのスキルです。データビューの設計をデータの調査と分析から始め、意思決定ファーストのアプローチ、フィールドプロファイリング、複数レイアウトのモック作成、ストレスケースの検討、そして一貫したカテゴリカラーの定義を重視します。このスキルは、Claude Code、Cursor、CodexなどのAIエージェントで使用でき、データ駆動型のビュー設計において、見た目は完成しているが間違っているビューを防ぐために設計されています。具体的には、表示する各フィールドの非NULL数、ユニーク値、長さ、カバレッジなどをチェックし、データに基づいた設計を可能にします。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mickzijdel/dev-hooks/tree/HEAD/plugins/dev-hooks/skills/data-before-design

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

データビフォアデザイン は何をしますか?

データのビューの良し悪しを決める三つの要素は、マークアップを書く前にすべて決まっています。それは、ビューがサポートする意思決定、フィールドに実際に入っているもの、そしてユーザーが望む複数のレイアウトのうちどれかです。これらのいずれかを省略すると、見た目は完成しているが間違っているビューができあがります。

いつ使用するか

  • 自分が作成していないレコードに対するカード、パネル、テーブル、ダッシュボード、詳細ビュー
  • ステークホルダーが「Xを表示して」と言い、Xがカラム名である場合
  • フィールドを要約、切り詰め、バッジ表示、ソート、色付け、カウントしようとしている場合
  • 同じ情報を2つの方法でレイアウトする選択をしている場合

データが自分自身のフィクスチャである場合や、ビューがすでに出力した単一の値である場合はスキップします。

投稿、共有、またはレポートに含まれる予定のチャートやテーブルも、自分が作成していないレコードを表示する場合は、ここから始まります。データが確定したら、practical-charts がその読みやすさをカバーします。見出しのタイトル、正直な軸、1つのハイライトされた系列、画像内のソースなどです。

ステップ0: 意思決定に名前をつける

データに触れる前に一文を書きます。「これを見ている人は、___を決断している。」 もし一文を完成できないなら、あなたはデータダンプを作成しており、レイアウトの問題には答えがありません。

  • すべてのフィールドは、その意思決定を変えることでその場所を得ます。 興味深いが意思決定に中立的なデータは、カードではなく詳細ビューに属します。
  • 優先度は意思決定の重みに従い、クエリの都合には従いません。 最も取得しやすいフィールドが、最も大きなフォントサイズに値するフィールドであるとは限りません。
  • ステークホルダーがカラム名を挙げた場合、それは彼らが欲しいデータを教えたのであり、意思決定を教えたわけではありません。その値に応じて彼らが何を異なるようにするかを尋ねてください。

ステップ1: フィールドをプロファイリングしてからデザインする

デザインの前にクエリを実行します。ビューが表示するすべてのフィールドに対して:

チェック項目なぜデザインが変わるか
NULLでない数すべての行でNULLのフィールドはカードを必要としません — バグレポートが必要です
ユニーク値4つの値はチップセット。4000は検索ボックス
長さ: 最小 / 平均 / p95 / 最大平均はあふれを隠します — コンテナサイズはp95に合わせ、テール部分を意図的に決定します
レコード間のカバレッジレコードの1.6%で発火するカードは、まれな例外を伴う空の状態です
親ごとのカーディナリティ1人あたり1つのメモは段落。20は独自のアフォーダンスを持つリスト
日付の存在日付を持たないフィールドの鮮度を表示することはできません
語彙8つの異なる表現を持つ自由テキストは、レンダリングではなく正規化が必要です
比較対象が存在するか裸の数字は読めません — 以下を参照

デザインを提案する前に、数値で見つけたことを述べてください。

画面上のすべての数字には、比較対象が必要です

52 notes は読者に何も伝えません。多いかどうか判断できないからです。52 notes (中央値 4) は発見です。カウント、合計、またはスコアを表示する前に、その比較対象 — 中央値、目標、前期間、またはセットの残り — を見つけ、一緒に表示してください。比較対象が存在しない場合、それはその数字を画面に表示すべきでないという証拠です。

退化したケースは、決して変動しない数字です。すべてのレコードに当てはまるカウントは、発見として読まれ、ノイズになります。

ステップ2: オプションをモックしてから構築する

カード形状のものについては、実際のレコードから複数の静的なモックを作成し、ユーザーに選ばせてください。その後でのみ構築します。

  • 各オプションが何を最適化し、何を犠牲にするかを一文で述べてください
  • モックは使い捨てのHTMLであり、コンポーネントではありません — ワイヤリングしないでください

6つの状態をモックし、1つだけではない

ビューが取りうるすべての状態を、それぞれ実際のレコードからデザインします:

状態描画元
理想典型的なレコード — あなたが選んだものではなく、中央値のレコード
空フィールドに何もないレコード、および レコードがまったくない真新しいアカウント
部分一部のフィールドが埋まり、一部が埋まっていない — 実際のデータではこれが一般的であり、例外ではない
ローディングデータが到着する前に領域を占有するもの、データのサイズで
エラーフェッチに失敗した、または値が不正でレンダリングできない
完了ビューが提供するアクションが実際に発生したことを確認するもの

次にストレスケース

ボリュームの極端(最もビジー、典型的、空)だけが唯一の極端ではありません。ストレスケースとは、存在し、整形式で、苦痛を伴うデータです。フィールドがうまく処理できない名前、ステータスが陽気なバッジを間違ったものにするレコード、要約がまだカウントしている削除済みアカウントの人物。このビューを最も恥ずかしくするレコードを1つ選び、レンダリングしてください。

1ページに複数のカード: すべてのカードに1つのキー

読者は最初のカードで色の意味を学習し、それ以降のすべてのカードにそれを適用します。したがって、複数のカードがあるページでカードを描画する前に、ページ全体で1つのカテゴリテーブルを書き留めてください。正規の名前、固定の順序、各カテゴリに1つの色。すべてのカード、凡例、ツールチップがそれを使用します。

  • 1つのカテゴリに1つの色。1つの色に1つのカテゴリ。 色は、そのカテゴリが存在しないカードでも、そのカテゴリに属します。他の何かにそれを使用すると、元のカテゴリを決して表示しないカードでも、読者に2つが同じものだと伝えます。
  • カテゴリごとに1つの名前。 あるカードで「グローバルヘルス&開発」、次のカードで「グローバル開発&ヘルス」では、読者はそれらが2つのカテゴリなのか疑問に思います。
  • 同じレコードをカットするカードには1つの分類法。 カードが独自のバケットを追加する前に、それがページにすでにあるカテゴリにマージされるかどうかを確認してください。カードが本当に細かい分割を必要とする場合、新しい色ではなく、親の色の色合いをサブカテゴリに与えてください。
  • 本当に異なるカテゴリには未使用の色、および内訳が異なることを示すサブタイトルを付けます。ページが別のカテゴリにすでに与えた色を決して再利用しないでください。
  • すべての凡例で同じ順序、「その他」は常に最後で、常に同じニュートラルグレー。

完了条件 ページ全体の(ラベル、色)ペアをリストアップすると、1対1のマッピングになること。レンダリングされたスクリーンショットではなく、マークアップまたはスタイルシートで色の値をgrepしてください。

データから導かれるレンダリングルール

  • 空の状態は仕事をする。 「まだメモはありません」は行き止まりです。なぜ空なのか、何がそれを埋めるのかを述べてください。初日にユーザーが出会う空の状態はオンボーディングであり、設計する価値があります。
  • テーブル内の数字: 右揃え、表形式の数字(font-variant-numeric: tabular-nums)、列全体で1つの精度、各セルで繰り返すのではなくヘッダーに単位。practical-chartsのルール13に残りがあります:グリッドなし、着色されたキー行、インラインバー。
  • デフォルトのソートは設計上の決定です。 レコードが主キー順に到着することは、ソートがないことです。

よくある間違い

間違い結果
スキーマからデザインするカラムは存在するが、データは存在しない
意思決定を指定せずに構築するすべてが等しい重みを持つ。なぜなら、何も大きくなる理由がないから
最も簡単なフィールドに最も優先度を与えるレイアウトはジョブではなくスキーマを記述する
比較対象なしで数字を表示する読者はそれが良いかどうか判断できず、見るのをやめる
常に真であるものをカウントする決して変動しないカウントは発見として読まれ、ノイズになる
データを見る前に書かれた計画を信頼するデータがサポートするものではなく、計画が命名したものを構築する
理想の状態のみをモックする何も持たない、または半分しか持たないレコードでデザインが崩壊する
ボリュームの極端のみをテストするビューは最大のレコードを生き残り、普通のレコードで誰かを辱める
最初に説明されたため1つのオプションを構築するユーザーは決して示されなかったものを選択できない
カードごとに色とラベルを選ぶ同じ青が1ページで2つのことを意味し、読者は存在しないリンクを描く

非自明な部分の出典

  • 意思決定ファースト、意思決定の重みによる優先度 — Stephen Few, Information Dashboard Design
  • 数字には比較対象が必要 — Few 再び、コンテキストが数字に意味を与えるものとして
  • 6つの状態 — Scott HurffのUIスタック
  • ストレスケース — Eric Meyer & Sara Wachter-Boettcher, Design for Real Life

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル