デザイン原則 番号振り直し計画
現在のデザイン原則は、元の書籍の番号(1〜100)をそのまま使用しているため、実装済みの原則が飛び飛びの番号になっている。
問題点:
- 番号が飛び飛びで分かりづらい(例: F カテゴリーが 8, 63, 64, 65, 79, 90)
- 独自の事例を追加する際に、元の連番を維持する意味が薄れている
- カテゴリー内での順序が直感的でない
解決策:
- カテゴリー別の連番(A-1, A-2, B-1, B-2...)に振り直す
- 旧番号との対応表を維持して履歴を残す
- 旧URLから新URLへのリダイレクトを設定
/design-principles/{category}/{no}
例: /design-principles/f/8
| カテゴリー | 名称 | 説明 |
|---|
| A | テキスト変更のみ | UIコンポーネントは同じ、テキストの書き方だけでGood/Badを示す |
| B | 単一コンポーネント | ボタン/コントロール単体でGood/Badを示す |
| C | フォーム系 | フォームコンポーネントでGood/Badを示す |
| D | レイアウト/配置系 | 要素の配置やグルーピングでGood/Badを示す |
| E | ナビゲーション系 | ナビやメニューUIでGood/Badを示す |
| F | インタラクション/アニメーション系 | 動きやタイミングでGood/Badを示す |
| G | モーダル/確認系 | ダイアログやモーダルでGood/Badを示す |
| H | 情報表示系 | データや状態の表示方法でGood/Badを示す |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| A-1 | 11 | ユーザーの言葉を使う | /design-principles/a/11 | /design-principles/a/1 |
| A-2 | 33 | ナビゲーション項目は名詞にする | /design-principles/a/33 | /design-principles/a/2 |
| A-3 | 44 | 選択肢の文言は肯定文にする | /design-principles/a/44 | /design-principles/a/3 |
| A-4 | 47 | デフォルトボタンには具体的な動詞を用いる | /design-principles/a/47 | /design-principles/a/4 |
| A-5 | 55 | エラー表示は建設的にする | /design-principles/a/55 | /design-principles/a/5 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| B-1 | 4 | シグニファイア | /design-principles/b/4 | /design-principles/b/1 |
| B-2 | 48 | ラジオボタンは単数選択、チェックボックスはオンオフ | /design-principles/b/48 | /design-principles/b/2 |
| B-3 | 49 | フリップフロップ問題を避ける | /design-principles/b/49 | /design-principles/b/3 |
| B-4 | 72 | 肯定/否定ボタンの順序 | /design-principles/b/72 | /design-principles/b/4 |
| B-5 | 74 | ハイライト表現は構成要素をひとつだけ変化させる | /design-principles/b/74 | /design-principles/b/5 |
| B-6 | 78 | タッチ操作する要素の大きさは7mm以上 | /design-principles/b/78 | /design-principles/b/6 |
| B-7 | 93 | ホットスポットを広げる | /design-principles/b/93 | /design-principles/b/7 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| C-1 | 39 | 整合性を損なう操作を求めない | /design-principles/c/39 | /design-principles/c/1 |
| C-2 | 42 | よいデフォルト | /design-principles/c/42 | /design-principles/c/2 |
| C-3 | 43 | 制限コントロールを活用する | /design-principles/c/43 | /design-principles/c/3 |
| C-4 | 45 | 値を入力させるのではなく結果を選ばせる | /design-principles/c/45 | /design-principles/c/4 |
| C-5 | 46 | 入力欄を構造化する | /design-principles/c/46 | /design-principles/c/5 |
| C-6 | 50 | ユーザーに厳密さを求めない | /design-principles/c/50 | /design-principles/c/6 |
| C-7 | 51 | 入力サジェスチョンを提示する | /design-principles/c/51 | /design-principles/c/7 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| D-1 | 10 | 視覚ゲシュタルト | /design-principles/d/10 | /design-principles/d/1 |
| D-2 | 30 | ペンは紙の近くに置く | /design-principles/d/30 | /design-principles/d/2 |
| D-3 | 40 | 入力フォームにはストーリー性を持たせる | /design-principles/d/40 | /design-principles/d/3 |
| D-4 | 41 | 操作の流れを作る | /design-principles/d/41 | /design-principles/d/4 |
| D-5 | 66 | 操作の近くでフィードバックする | /design-principles/d/66 | /design-principles/d/5 |
| D-6 | 84 | 色やフォントを使いすぎない | /design-principles/d/84 | /design-principles/d/6 |
| D-7 | 85 | 整然とレイアウトする | /design-principles/d/85 | /design-principles/d/7 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| E-1 | 59 | ウェイファインディング | /design-principles/e/59 | /design-principles/e/1 |
| E-2 | 60 | エスケープハッチ | /design-principles/e/60 | /design-principles/e/2 |
| E-3 | 73 | メニュー項目の位置を変化させない | /design-principles/e/73 | /design-principles/e/3 |
| E-4 | 80 | ドリルダウンは上→下、左→右 | /design-principles/e/80 | /design-principles/e/4 |
| E-5 | 81 | 左が戻るで右が進む | /design-principles/e/81 | /design-principles/e/5 |
| E-6 | 82 | モバイルでは包括的より階層的に | /design-principles/e/82 | /design-principles/e/6 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| F-1 | 8 | 直接操作 | /design-principles/f/8 | /design-principles/f/1 |
| F-2 | 63 | 画面の変化をアニメーションで表す | /design-principles/f/63 | /design-principles/f/2 |
| F-3 | 64 | トランジションは両方向につける | /design-principles/f/64 | /design-principles/f/3 |
| F-4 | 65 | ユーザーの操作に対して0.1秒以内に反応 | /design-principles/f/65 | /design-principles/f/4 |
| F-5 | 79 | ジェスチャはコマンド式ではなく直接操作式 | /design-principles/f/79 | /design-principles/f/5 |
| F-6 | 90 | UIをロックしない | /design-principles/f/90 | /design-principles/f/6 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| G-1 | 32 | 前提条件は先に提示する | /design-principles/g/32 | /design-principles/g/1 |
| G-2 | 54 | フールプルーフよりフェールセーフ | /design-principles/g/54 | /design-principles/g/2 |
| G-3 | 57 | 黙って実行する | /design-principles/g/57 | /design-principles/g/3 |
| G-4 | 62 | 回答の先送り | /design-principles/g/62 | /design-principles/g/4 |
| G-5 | 67 | プログレッシブ・ディスクロージャ | /design-principles/g/67 | /design-principles/g/5 |
| 新番号 | 旧番号 | 原則名 | 旧URL | 新URL |
|---|
| H-1 | 25 | オブジェクトは自身の状態を体現する | /design-principles/h/25 | /design-principles/h/1 |
| H-2 | 28 | データよりも情報を伝える | /design-principles/h/28 | /design-principles/h/2 |
| H-3 | 31 | 視覚的に何であるかを示し文字で説明する | /design-principles/h/31 | /design-principles/h/3 |
| H-4 | 52 | スクロール画面では続きがありそうに見せる | /design-principles/h/52 | /design-principles/h/4 |
| H-5 | 53 | プロパティの選択肢でプレビューを見せる | /design-principles/h/53 | /design-principles/h/5 |
| H-6 | 96 | 色に依存させない | /design-principles/h/96 | /design-principles/h/6 |
apps/web/app/components/design-principles/data/principles.ts
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle11UserLanguage.vue | PrincipleA1UserLanguage.vue |
| Principle33NounNavigation.vue | PrincipleA2NounNavigation.vue |
| Principle44AffirmativeLabel.vue | PrincipleA3AffirmativeLabel.vue |
| Principle47ConcreteVerb.vue | PrincipleA4ConcreteVerb.vue |
| Principle55ConstructiveError.vue | PrincipleA5ConstructiveError.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle4Signifier.vue | PrincipleB1Signifier.vue |
| Principle48RadioCheckbox.vue | PrincipleB2RadioCheckbox.vue |
| Principle49FlipFlop.vue | PrincipleB3FlipFlop.vue |
| Principle72ButtonOrder.vue | PrincipleB4ButtonOrder.vue |
| Principle74Highlight.vue | PrincipleB5Highlight.vue |
| Principle78TouchSize.vue | PrincipleB6TouchSize.vue |
| Principle93Hotspot.vue | PrincipleB7Hotspot.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle39DataIntegrity.vue | PrincipleC1DataIntegrity.vue |
| Principle42GoodDefault.vue | PrincipleC2GoodDefault.vue |
| Principle43ConstrainedControl.vue | PrincipleC3ConstrainedControl.vue |
| Principle45ChooseResult.vue | PrincipleC4ChooseResult.vue |
| Principle46StructuredInput.vue | PrincipleC5StructuredInput.vue |
| Principle50TolerantValidation.vue | PrincipleC6TolerantValidation.vue |
| Principle51AutoComplete.vue | PrincipleC7AutoComplete.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle10Gestalt.vue | PrincipleD1Gestalt.vue |
| Principle30PenNearPaper.vue | PrincipleD2PenNearPaper.vue |
| Principle40FormStory.vue | PrincipleD3FormStory.vue |
| Principle41OperationFlow.vue | PrincipleD4OperationFlow.vue |
| Principle66NearbyFeedback.vue | PrincipleD5NearbyFeedback.vue |
| Principle84LimitStyles.vue | PrincipleD6LimitStyles.vue |
| Principle85AlignedLayout.vue | PrincipleD7AlignedLayout.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle59Wayfinding.vue | PrincipleE1Wayfinding.vue |
| Principle60EscapeHatch.vue | PrincipleE2EscapeHatch.vue |
| Principle73FixedMenu.vue | PrincipleE3FixedMenu.vue |
| Principle80DrillDown.vue | PrincipleE4DrillDown.vue |
| Principle81LeftBackRightForward.vue | PrincipleE5LeftBackRightForward.vue |
| Principle82MobileHierarchy.vue | PrincipleE6MobileHierarchy.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle8DirectManipulation.vue | PrincipleF1DirectManipulation.vue |
| Principle63AnimateChanges.vue | PrincipleF2AnimateChanges.vue |
| Principle64BidirectionalTransition.vue | PrincipleF3BidirectionalTransition.vue |
| Principle65ResponseTime.vue | PrincipleF4ResponseTime.vue |
| Principle79DirectGesture.vue | PrincipleF5DirectGesture.vue |
| Principle90NoUILock.vue | PrincipleF6NoUILock.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle32PreconditionFirst.vue | PrincipleG1PreconditionFirst.vue |
| Principle54FailSafe.vue | PrincipleG2FailSafe.vue |
| Principle57SilentExecution.vue | PrincipleG3SilentExecution.vue |
| Principle62DeferDecision.vue | PrincipleG4DeferDecision.vue |
| Principle67ProgressiveDisclosure.vue | PrincipleG5ProgressiveDisclosure.vue |
| 旧ファイル名 | 新ファイル名 |
|---|
| Principle25ObjectState.vue | PrincipleH1ObjectState.vue |
| Principle28DataToInfo.vue | PrincipleH2DataToInfo.vue |
| Principle31IconPlusText.vue | PrincipleH3IconPlusText.vue |
| Principle52ScrollHint.vue | PrincipleH4ScrollHint.vue |
| Principle53PreviewOptions.vue | PrincipleH5PreviewOptions.vue |
| Principle96ColorIndependent.vue | PrincipleH6ColorIndependent.vue |
apps/web/app/pages/design-principles/[category]/[no].vueprincipleComponents のマッピングを更新
apps/web/public/_redirects ファイルに旧URL→新URLのルールを追加- Cloudflare Pagesの
_redirects 形式を使用
# デザイン原則 旧番号→新番号リダイレクト(301 恒久的)
# カテゴリーA
/design-principles/a/11 /design-principles/a/1 301
/design-principles/a/33 /design-principles/a/2 301
/design-principles/a/44 /design-principles/a/3 301
/design-principles/a/47 /design-principles/a/4 301
/design-principles/a/55 /design-principles/a/5 301
# カテゴリーB
/design-principles/b/4 /design-principles/b/1 301
/design-principles/b/48 /design-principles/b/2 301
/design-principles/b/49 /design-principles/b/3 301
/design-principles/b/72 /design-principles/b/4 301
/design-principles/b/74 /design-principles/b/5 301
/design-principles/b/78 /design-principles/b/6 301
/design-principles/b/93 /design-principles/b/7 301
# カテゴリーC
/design-principles/c/39 /design-principles/c/1 301
/design-principles/c/42 /design-principles/c/2 301
/design-principles/c/43 /design-principles/c/3 301
/design-principles/c/45 /design-principles/c/4 301
/design-principles/c/46 /design-principles/c/5 301
/design-principles/c/50 /design-principles/c/6 301
/design-principles/c/51 /design-principles/c/7 301
# カテゴリーD
/design-principles/d/10 /design-principles/d/1 301
/design-principles/d/30 /design-principles/d/2 301
/design-principles/d/40 /design-principles/d/3 301
/design-principles/d/41 /design-principles/d/4 301
/design-principles/d/66 /design-principles/d/5 301
/design-principles/d/84 /design-principles/d/6 301
/design-principles/d/85 /design-principles/d/7 301
# カテゴリーE
/design-principles/e/59 /design-principles/e/1 301
/design-principles/e/60 /design-principles/e/2 301
/design-principles/e/73 /design-principles/e/3 301
/design-principles/e/80 /design-principles/e/4 301
/design-principles/e/81 /design-principles/e/5 301
/design-principles/e/82 /design-principles/e/6 301
# カテゴリーF
/design-principles/f/8 /design-principles/f/1 301
/design-principles/f/63 /design-principles/f/2 301
/design-principles/f/64 /design-principles/f/3 301
/design-principles/f/65 /design-principles/f/4 301
/design-principles/f/79 /design-principles/f/5 301
/design-principles/f/90 /design-principles/f/6 301
# カテゴリーG
/design-principles/g/32 /design-principles/g/1 301
/design-principles/g/54 /design-principles/g/2 301
/design-principles/g/57 /design-principles/g/3 301
/design-principles/g/62 /design-principles/g/4 301
/design-principles/g/67 /design-principles/g/5 301
# カテゴリーH
/design-principles/h/25 /design-principles/h/1 301
/design-principles/h/28 /design-principles/h/2 301
/design-principles/h/31 /design-principles/h/3 301
/design-principles/h/52 /design-principles/h/4 301
/design-principles/h/53 /design-principles/h/5 301
/design-principles/h/96 /design-principles/h/6 301
- 元の番号との対応
- 元の書籍の番号(1〜100)は
principles.ts のコメントや本ドキュメントで参照可能に残す - 将来、元の番号で検索したい場合に備える
- 新規原則の追加
- 今後は各カテゴリーの末尾に連番で追加(例: A-6, B-8 など)
- 元の書籍にない独自の原則も追加可能に
- リダイレクトの永続性
- 旧URLで外部からリンクされている可能性を考慮
- リダイレクトは恒久的に維持する
- 元のデザイン原則リスト:
/2026-01-10/design - 実装カテゴリー分類:
/dist/_raw/ui-design-principles.md