Logo

Imanect

UX Contract

本プロダクトにおけるUXは、機能を誇示するためではなく、 ユーザーの目的達成を最短化するために存在する。

.

抽象原則

01

役割を終えたらすぐに消える

UIは目的を果たした瞬間に退く。永続的に居座らない。

  • Toastは3秒以内に自動消去
  • 一時的ヒントは再表示しない
  • オンボーディングは完了後に消える
02

ユーザーを邪魔しない

注意を奪わない。強制しない。モーダルは最小限。

  • 自動フォーカスは慎重に
  • 不要なconfirmは出さない
  • ポップアップ禁止
控えめなインライン通知
変更が保存されました
強制的なモーダル確認
本当に保存しますか? [はい] [いいえ]
03

ユーザーに考えさせない

選択肢は整理されている。言葉は明確。状態は常に可視化されている。

  • ボタン文言は動詞で終わる
  • エラーは原因と解決策を示す
  • 現在地を常に表示

Good

Bad

04

迷わせない

1画面1目的。階層は浅く。戻れる導線を必ず置く。

現在地が明確

パンくずリストで常に階層を表示

05

音量を上げない

色も動きも控えめ。主張しすぎない。

静かなUI

騒がしいUI

.

インタラクション原則

06

即時フィードバック

クリック後100ms以内に反応を返す。ローディングは即表示。

07

不可逆操作は明確に

削除は赤。Undoを可能にする。

削除を取り消す(残り5秒)
08

デフォルトは安全側

破壊的操作は初期選択にしない。

本当に削除しますか?

この操作は取り消せません。

09

フォーカスは視覚化する

キーボード操作を前提とする。

フォーカス中の入力欄
未フォーカスの入力欄

focus-visible:ring-2 ring-ds-sky

.

レイアウト契約

10

スクロールは自然である

不必要な内部スクロールを作らない。ページ外バウンスによる視覚ノイズを防ぐ。

overscroll-behavior: none;
11

モーダルは画面を閉じ込めない

高さは90vh以下。内部スクロールは必要最小限。

max-h: 90vh

Good

h: 100vh

Bad

12

スクロール位置は保持する

戻ったとき、位置を復元する。

一覧詳細一覧

↑ 前回のスクロール位置を復元

.

モーション契約

13

アニメーションは意味を持つ

装飾ではなく状態変化を示す。duration: 0.2–0.4s / easing: ease-out / 不要なバウンス禁止。

duration: 0.3s / ease-out

14

自動再生をしない

動画・音声は必ずユーザー操作後。

ユーザーが再生ボタンを押すまで停止

.

フォーム契約

15

リアルタイムバリデーション

送信後にまとめて怒らない。

フォーカスアウト後にバリデーション
16

入力途中でエラー表示しない

フォーカスアウト後に表示。

onBlur で検証

入力中…

onChange で即エラー

入力中…

メールアドレスが無効です

17

必須項目は最小限

「必要」の定義を厳格に。

山田 太郎
任意

必須は1項目のみ

.

表示契約

18

Skeletonを使う

空白は放置しない。

19

Empty Stateは指示を含む

「データがありません」で終わらせない。

プロジェクトがありません

最初のプロジェクトを作成して始めましょう

20

数値は意味を添える

前月比、単位、文脈を明示。

月間アクティブユーザー

12,847 +12.3%

前月比 +1,412人

.

パフォーマンス契約

21

初期表示は2秒以内

体感速度を最優先。

目標≤ 2.0s
0s1s2s3s
22

不要な再レンダリングを避ける

スクロール中にレイアウトが揺れない。

layout-stable · no CLS

.

言葉の契約

23

曖昧な言葉を使わない

「実行」「処理」など抽象語を避ける。

明確な言葉

下書きを保存する請求書を送信する

曖昧な言葉

実行する処理する
24

謝りすぎない

エラーは冷静に説明する。

冷静な説明

過剰な謝罪

大変申し訳ございません!エラーが発生してしまいました…
.

管理画面特有の契約

25

一括操作は常に明示

Bulk Actionは選択時のみ表示。

0件選択中
26

状態は色だけに依存しない

テキストと併用。

テキスト + 色

✓ 公開中✕ 停止中— 下書き

色のみ

.

UIの撤退原則

27

使われない機能は隠す

設定は段階的に開示。

28

役割を終えたら消える

Contract 01 の再掲。UIは目的を果たした瞬間に退く。

完了

この画面は自動的に閉じます

まとめ

このUX契約の核:

  • 目立たない
  • 迷わせない
  • 居座らない
  • 揺らがない
  • 強制しない

UIは舞台装置であり、主役は常にユーザーである。