業務システムのナビゲーション設計が難しいのは、機能数が多いのに、1人の利用者が使うのは1割程度という構造にあります。全機能を平等に並べると、自分に関係ない項目を毎回読み飛ばすことになります。
メニュー階層は3段まで
- 1段目:業務領域(受注管理/在庫管理/請求管理/マスタ管理)
- 2段目:機能(受注入力/受注一覧/受注承認)
- 3段目:機能内のビュー(未承認のみ/自分の担当のみ)
4段目が必要になった時点で、それは階層の問題ではなく 検索で解決すべき問題 です。メニュー内検索(機能名で絞り込む入力欄)を用意してください。数百機能あるシステムでは、階層をたどるより検索のほうが速くなります。
利用頻度は人によって偏ります。「よく使う機能」をユーザーごとにピン留めできる仕組みを1つ入れるだけで、階層設計の粗さはかなり吸収できます。
現在位置を必ず3か所で示す
利用者が迷う原因のほとんどは「今どこにいるか分からない」ことです。次の3か所を必ず一致させてください。
| 場所 | 表示内容 | よくある不備 |
|---|---|---|
| サイドメニュー | 現在の機能をハイライト | 下層画面に入るとハイライトが外れる |
| パンくず | 業務領域 › 機能 › 個別レコード | 下層画面にだけ存在しない |
| 画面タイトル/タブタイトル | 機能名(+対象レコード) | ブラウザのタブが全画面「システム名」 |
ブラウザのタブタイトルは軽視されがちですが、業務システムでは複数タブを開いて並行作業するのが普通です。全部同じタイトルだと、タブの切り替えコストが跳ね上がります。
販売管理システム
受注入力 - 受注No.20260728-001 | 販売管理
タブ・アコーディオン・画面遷移の使い分け
タブ:同一レコードの「面」を切り替えるとき
同じ受注データに対する「基本情報/明細/履歴/添付」のような切り替えに使います。タブをまたいで1回で保存できるのが原則です。タブごとに保存が必要な設計は、保存漏れを量産します。
アコーディオン:任意項目をまとめて隠すとき
「詳細条件」「オプション設定」など、普段は不要な項目に使います。必須項目をアコーディオン内に隠さないこと。開かないとエラーの原因が見えない状態になります。
画面遷移:業務の工程が変わるとき
一覧 → 詳細 → 編集のように、工程が切り替わる場合はURLを変える画面遷移にします。URLが変われば、ブックマーク・共有・タブ複製がすべて機能します。
一覧と詳細の行き来を軽くする
業務システムで最も回数の多い移動は「一覧 → 詳細 → 一覧に戻る」です。ここが重いと、体感速度が大きく落ちます。
- 詳細から戻ったとき、検索条件・並び順・ページ位置・スクロール位置が保持されている
- 詳細画面に「前の明細/次の明細」ボタンがあり、一覧に戻らず連続確認できる
- 一覧に戻ったとき、直前に見ていた行がハイライトされている
- 詳細を別タブで開ける(Ctrl+クリックが効くよう `a` 要素で実装する)
行クリックを onclick だけで実装すると、Ctrl+クリックでの別タブ表示・中クリック・右クリックのメニューがすべて効かなくなります。遷移は必ず <a href> をベースにしてください。
ブラウザの戻るボタンで業務を壊さない
業務システムでよくある事故が、ブラウザの戻るで二重登録が発生するケースです。
- 登録完了後も POST の結果画面のまま留まる(戻る→再送信で二重登録)
- 戻ると入力内容が空になり、最初からやり直しになる
- 戻ると前の画面が表示されるが、実際のデータ状態と食い違っている
登録処理は POST後にリダイレクト(PRGパターン)で完了画面へ遷移させ、完了画面から戻っても再送信されない状態にします。
未保存の変更を守る
入力途中に別の機能へ移動しようとしたら、必ず警告を出します。
- フォームに変更があるかを保持し、変更時のみ離脱警告を出す
- 警告の選択肢は「編集を続ける/保存せず移動」の2つに絞る
- 警告文には「入力内容は保存されていません」と結果を明記する
- 長時間入力するフォームは、下書きの自動保存を検討する
変更がないのに毎回警告が出る実装は、利用者を「警告を読まない人」に育ててしまいます。本当に変更があるときだけ出すことが、警告の価値を保つ条件です。
チェックポイント
- メニュー階層は3段以内、超える場合は検索を用意している
- 現在位置がメニュー・パンくず・タブタイトルの3か所で一致している
- 一覧に戻ったとき検索条件とスクロール位置が保持される
- 行クリックが `a` 要素で実装され、別タブ表示が効く
- 登録後にリダイレクトしており、戻るで二重登録しない
- 未保存の変更がある場合のみ離脱警告が出る