情報アーキテクチャ

ページがどんなを取るか。色や余白を決めるより前に決めることです。

このセクションの他のページは部品についての問いに答えます。本ページが答えるのは、その前に来る問いです。画面が抱える情報がこれだけある中で、読み手は何をしに来たのか、どんな配置ならそれができるのか。

ページ 答えるもの
情報アーキテクチャ(本ページ) ページがどんな形を取るべきか
デザインシステム トークンが何か:語彙
デザインガイドライン 画面を作るときどう選ぶか
テーマ 実行時にどう切り替え、どう上書きするか

こんなとき:複数のオブジェクト、複数の状態、そしてその関係を同時に載せる画面を作り始めるとき。コンソール、ダッシュボード、管理画面、ワークベンチ、監視ページなど。ランディングページや単一コンバージョンのフォームは対象外です。あれらの成否は説得力で決まり、密度の高い情報の中で読み手が正しく判断できるかどうかでは決まりません。

データが揃っていることと、ページが設計されていることは別です。API が返すフィールドがすべて載り、フィルタもステータスタグも一括操作も揃っていて、それでも読み手は何から見ればよいのか分からない。欠けているのは情報ではなく、順序です。

コンポーネントに触れる前の三つの問い

  1. 読み手が開いた瞬間に見るべき一つのことは何か。 それがページの主情報です。
  2. それを理解するために、ほかに何が見えている必要があるか。 関連リソース、関連モデル、文脈。
  3. 見たあとに何をするのか。 判断するのか、操作するのか、考え続けるのか。

三つともコンポーネント一覧を開く前に答えます。答えが明確なページが形を外すことはめったにありません。飛ばしたページは、結局 API のレスポンスに沿った作りになります。

一ページに主モデルは一つ。 補助モデルは主モデルの理解や操作を助けることはできますが、ファーストビューを奪ってはいけません。

形はタスクで決まり、ペイロードでは決まらない

形を外したページの大半は、この二つの近道から生まれます。

  • エンドポイントが配列を返したので、テーブルにした。
  • ルートに ID があるので、詳細ページにした。

どちらも理由になりません。同じオブジェクトでも、タスクが違えば形は変わります。検索している間 issue はコレクション、処理している間はステータスフロー、協働している間はディスカッションスレッド、監査している間はイベント列です。レコードに日付フィールドがあるのは、データに日付があるというだけのこと。そのページがカレンダーだという意味ではありません。

表現スケルトンの選び方

主要な問いに、頭の中の変換がいちばん少なくて済む配置を選びます。

読み手の目の前にある問い 一緒に置くべき情報 スケルトン
これらは何がどう違うのか 比較するフィールドを、固定した列に 二次元比較表
どれなのか、開きたい 名前、識別子、ステータス リスト / リソース目録
どれなのか、画像を見れば分かる まず画像、その周りに名前とフィールド カードグリッド
このオブジェクトは何で、いまどうなっているか 識別、ステータス、主アクション、その後に属性 セクション詳細
どこに属しているのか パス、親、兄弟 階層ツリー
何がこれに依存し、変えると何が壊れるか 上流と下流、影響範囲 隣接リスト
いまどの段階で、次は何か ステージ、現在の入力、その後の手順 ステップフロー
各項目はどの段階か、動かすことが仕事そのもの 列がステージ、カードに識別とブロッカー カンバン
なぜ止まったのか 段階の要約、次に各ステップの結果、次に生ログ トレースのドリルダウン
健全か、影響はどこまで及ぶか オブジェクト名、ステータス、状態を変えたイベント ステータスウォール
何が、どの順で、誰によって起きたか 時刻、実行者、イベント種別 イベントタイムライン
誰が何を言い、どう答えられたか 発言者、発言、返信構造 ディスカッションスレッド
前後で何が変わったか 二つのバージョンを並べて 並列比較
トレンドはどうで、異常はどこか 指標、その基準、詳細への入口 ダッシュボード
いつ埋まっていて、いつ衝突するか 開始・終了・所要時間を一本の軸に カレンダー / 予定
次に何に取りかかるか 片側にキュー、もう片側にその項目 マスター詳細ワークベンチ
どのルールが効き、何に影響するか 設定項目、適用範囲、その帰結 設定フォーム
この本文には何が書いてあるか 本文を順に、傍らに目次 連続ドキュメント
どこにあるのか 位置、境界、分布 地図 / キャンバス

取り違えやすい組み合わせ

  • タイムラインかステップか。 タイムラインは起きたことを順に語り、ステップはいまどこにいて次に何が来るかを語ります。見た目は似ていて、時間の向きは逆です。
  • カンバンかフィルタか。 カードを動かすこと自体が操作であるときだけカンバンが成立します。列が保存済みの絞り込み条件でしかないなら、ドラッグが必要なフィルタを作っただけです。
  • カレンダーかタイムラインか。 カレンダーは占有と衝突に答え、タイムラインは順序に答えます。レコードの日付が選んでくれるのではなく、問いが選びます。
  • カードグリッドかテーブルか。 画像が認識のアンカーであるか、ないかのどちらかです。数値を比べて選ぶなら、先頭列のサムネイルは判断材料のフィールドを押しのけます。
  • グラフか隣接リストか。 経路や伝播そのものが判断材料であるときだけ図を描きます。そうでなければ、上流と下流をまとめたリストのほうが速く読めます。
  • ドキュメントかフィールド表か。 順に読む文章は文章のままにします。段落ごとにカードやキーバリュー行へ刻むと、読みやすさそのものが壊れます。

作れるからといって三つのビューを全部作らないこと。ビューが一つ増えるたびに、フィルタ一式、ステータスの対応付け、同期し続けるアクション一式が増えます。二つ目の使い方が実際に高頻度になってから追加します。念のためではなく。

各種情報の置き場所

情報 答える問い 置き場所 行ってはいけない場所
識別 これは何か タイトル、オブジェクト要約 最後の列、タブの奥
ステータス いまどうなっているか タイトル領域か要約領域 詳細フィールドでしか見つからない場所
属性 どんなものか 詳細本文、人の理解の仕方でグループ化 API のフィールド順に並べただけの場所
関連 何とつながっているか 独立した領域かタブ。所有・依存・参照は区別する 属性テーブルへの混入
変更 以前と何が違うか 差分領域、タイムライン 変更後の値だけを見せる場所
根拠 なぜそう判断してよいか 判断のすぐ隣、展開できる形で どこか別のログページ
アクション いま何ができるか 主アクションはタイトル領域、他は対象の隣 「その他」の下
フィードバック いまの操作は何をしたか 操作の隣、タスクの文脈を保ったまま 対象から切り離されたグローバルトースト

事実ごとに権威ある置き場所は一つだけ。 他の場所には要約か入口を置き、そこへリンクします。

読む順序

ページの識別
→ 現在の状態または異常
→ 主タスクと主アクション
→ 判断に必要な情報
→ 関連・変更・根拠
→ 二次情報と低頻度のアクション
  • 視覚上の主見出しはページに一つ。 節の見出しは意味で進みます。フォントサイズで階層のふりをさせません。
  • タスク領域ごとに主アクションは最大一つ。 主ボタンは最も起こりやすい次の一手であって、最も破壊的な一手ではありません。危険な操作には危険のセマンティクスを与え、最も重い視覚的比重は与えません。
  • 警告色と危険色は、本当に注意を要する状態のためのものです。全面が緑のページは、すでに信号を使い切っています。
  • バッジ、タグ、バナーは一つの注意予算を共有します。判断を変えるものだけを強調します。

情報密度

密度とは単位面積あたりのコントロール数ではなく、読み手が一目で受け取れる判断に使える情報の量です。余白を詰めても上がるのは視覚的な密度だけで、実効密度は動きません。無関係なフィールドを削り、比較を一か所にまとめてはじめて実効密度が上がります。

段階 適する場面 得られるもの
ゆったり 初回利用、低頻度の設定、リスクの高い確認 説明の余地、広いグループ間隔、影響の可視化
標準 ほとんどのリスト、詳細、フォーム 走査しやすさと一画面あたり情報量の既定のバランス
コンパクト 高頻度の専門ワークベンチ:監視、運用、監査 安定した列幅、短い文言、キーボード効率、保存ビュー
  • 一ページで使うのは隣り合う二段階まで。標準のページにコンパクトな表が入るのは構いませんが、領域ごとに独自の尺度を作るのは駄目です。
  • コンパクトは「文字とタップ領域を一緒に縮める」ことではありません。コンテナの余白と行の高さは詰められますが、本文の可読性、見えるフォーカスリング、ポインタターゲットの大きさは詰められません。
  • 専門ユーザーには、一度に多く見せるより、列管理・保存ビュー・一括操作・ショートカットのほうが効きます。

タスクの文脈を保つ

スケルトンを決めたら、補助的な内容をどこに置くかを決めます。

読み手がしていること 与えるもの
オブジェクトや根拠を何度も行き来している マスター詳細の分割。片側にキュー、片側に対象
軽くて一時的なものをちらっと見ている 展開行(r-disclosure-row)かポップオーバー(r-popover
共有したい、あるいは幅が要る作業をしている 独立したルート
確認する、あるいは一項目だけ入力する モーダル(r-modal

モーダルはナビゲーションの一層ではありません。 コピーできるリンク、履歴、並列比較、リロード後も残る作業が要るものには、ルートを与えます。

この層で ranui が提供するもの

ranui はページの形について意図的に態度を持ちません。提供するのはプリミティブとトークンであって、ページのテンプレートではありません。この層で使えるのは次のものです。

  • スケルトンが分かれる帯には r-section、本当に独立した繰り返し項目には r-card。カードの中にカードは入れないこと。フォームのフィールドは見出しか区切り線でグループ化します。
  • r-tabs同じオブジェクトの同格ビュー(その議論、そのチェック、その差分)のためのもので、無関係なモジュールのためではありません。それはナビゲーションの仕事です。
  • 段階的開示には r-disclosure-row、一時的な文脈には r-popoverr-dropdownr-modal は上の表が許す用途にだけ。
  • ステータスは r-state-dot に必ずラベルを添えて。 色だけで伝えない
  • ファーストビューの読み込み中は r-skeleton、待たせていると感じさせる長さの処理には r-progress、結果は r-message で伝えます。

ranui にテーブル、ツリー、カレンダー、カンバン、タイムラインはありません。自作するときは、第二の視覚体系を立ち上げるのではなく、トークンデザインガイドラインの上に作ります。余白はスケールから、文字は役割から、色はセマンティックトークンから、到達しうるすべての状態を設計して。

アンチパターン

  • エンドポイントが返すフィールドがそのまま詳細の行になり、識別・ステータス・関連・根拠が同じ比重で一度に届く。
  • カード、色、装飾的な余白で階層をこしらえるだけで、何から読み、そこから何を判断するのかは何も言っていない。
  • 複数のアクションが主ボタンのスタイルを分け合う。あるいは低頻度のアクションがタイトル領域に居座る。
  • ステータス、属性、関連、変更が一つの表に混ざり、どこでも比較が組み立てられない。
  • 名前とステータスを調べたいだけの読み手に、関係グラフを見せる。
  • 長いフロー、比較、あるいは誰かがリンクを送りたくなるものをモーダルに載せる。
  • 同じ一文がタイトル、要約、タブ名、表に繰り返し現れ、どこでも新しいことを足していない。

ページを出す前のチェックリスト

  • 主情報、関連情報、読み手の次の動作が書き出されている。
  • スケルトンはレスポンスの形からではなく、問いから選ばれている。
  • ページの主モデルは一つで、補助ビューはそれと競合せず、それに仕える。
  • 仕様書を読まずに、対象・状態・主アクションが五秒で分かる。
  • 比較は一か所で起き、タブやページをまたいで値を覚える必要がない。
  • 事実ごとの権威ある置き場所は一つで、他はそこへリンクしている。
  • 密度は利用頻度に見合っており、隣り合う二段階を超えていない。
  • 長い文、大きな数値、狭いビューポートが情報の順序を壊さない。
  • 判断の助けにならないブロック、フィールド、タグ、ボタンは削除されている。