はじめに
スマホやPCで日常的に使うアプリの中で、初めて触れた瞬間から迷わず操作できたものと、
何度使ってもイライラするものがある。この差はどこから生まれるのか。
「UIはデザイナーのセンスで決まる」「機能さえ正しく動けばUIは後から調整できる」
── 自分も以前はそう考えていました。
けれど、実装したUIに対して「使いにくい」「どこを押せばいいかわからない」
というフィードバックを受けるたびに、
センスの問題で片付けるのは違うと感じるようになりました。
調べてみると、使いやすいUIとそうでないUIの差は、
多くの場合「センス」ではなく「プロセス」の差にあることがわかってきました。
ユーザーを理解する → 原則に基づいて設計する → ユーザーに試してもらう、
という反復的なサイクルがUIの品質を支えています。
この記事では、ユーザーが迷わないUIを体系的に作るためのプロセスと原則を整理します。
PCだけでなくスマートフォンやWebアプリも視野に入れて、
UIデザインを「エンジニアリングの一部」として捉え直すための見取り図を共有できればと思います。
TL;DR
- UIの品質は「理解 → 設計 → 評価」の反復プロセスから生まれる
- 設計に迷ったとき立ち返る3つの原則:ユーザーに主導権を持たせる/記憶の負担を減らす/一貫性を保つ
- モバイル・Webには固有の制約(接続性・バッテリー・コンテキスト等)があり、原則を共通の土台にしつつ制約を踏まえた判断が必要
UIの品質はプロセスで作れる ── UXデザインの全体像
「使いやすいUIを作りたい」と思ったとき、いきなり画面のレイアウトを考え始めていないでしょうか。
自分は最初の頃、まさにそうやってFigmaを開いていました。
けれど、UIの品質は画面設計の前段階 ── ユーザーが誰で、何を達成したいのかを理解するところから始まる、
というのが正しい順序のようです。
そもそもUIデザインは、もっと広い「UXデザイン」の一部です。
ここではまずUXデザインの全体像と、なぜそれが反復的なプロセスとして語られるのかを整理します。
UXデザインとUIデザインの関係
UXデザイン(User Experience Design)は、ユーザーがソフトウェアを使ったときに得る総合的な体験を設計するプロセスです。
UIデザインはその重要な一部分ですが、全体ではありません。
UXデザインの構成要素として広く知られているのが、5つの層からなるモデルです。
下の層から上の層に向かって、抽象的な意思決定から具体的なデザインへと進みます。
+----------------------------------------------+
| 表層 (Surface) | ← 視覚デザイン(見た目の仕上げ)
+----------------------------------------------+
| 骨格 (Skeleton) | ← 情報配置・インターフェース・ナビゲーション
+----------------------------------------------+
| 構造 (Structure) | ← インタラクション設計・情報アーキテクチャ
+----------------------------------------------+
| スコープ (Scope) | ← 必要な機能とコンテンツの要件
+----------------------------------------------+
| 戦略 (Strategy) | ← ユーザーニーズとビジネス目標
+----------------------------------------------+
抽象的な意思決定
↓
具体的なデザイン
ここで「情報アーキテクチャ(Information Architecture)」という用語が出てきました。
これはコンテンツの組織化・ラベル付け・ナビゲーション・検索を効果的にするための構造設計のことです。
後段のWebアプリ設計でナビゲーション設計を扱う際にも、考え方として下敷きになります。
多くのエンジニアが「UI」として意識するのは上位2〜3層(表層・骨格・構造)ですが、品質の大部分は下位の戦略・スコープの段階で決まってしまいます。
UIデザインを後回しにしてプロジェクト終盤に「見た目の調整」として行うと、ユーザーにとって快適な体験を提供しにくくなります。
これが「UIの品質は早い段階のプロセスで決まる」と言われる理由です。
UXデザインとUIデザインを混同しがちですが、UXは「体験全体の設計」、UIは「その体験を実現する画面・操作の設計」
と捉えるとスッキリ整理できます。
本記事はUIデザインに重点を置きつつ、それを支えるUXデザインのプロセス全体を扱います。
反復プロセスの構造
UXデザインのプロセスは、大きく分けて「分析 → 設計 → 構築 → 検証」の4つのアクティビティで構成され、これらを反復的に回します。
最初の反復で完璧を目指す必要はありません。
各サイクルでタスクの詳細、設計情報、操作機能が徐々に洗練されていきます。
ウォーターフォール的に「分析を完璧にしてから設計、設計を完璧にしてから構築」と進めるのではなく、
何度もループを回す前提で進めるのがポイントです。
この記事ではここから先、このプロセスを「理解(分析)」「設計」「評価(構築+検証)」の3フェーズに整理し直して、
各フェーズで具体的に何をするかを順に見ていきます。
ユーザーを知る ── 理解フェーズの実践
プロセスの全体像が見えたところで、最初のフェーズ「理解」に入ります。
UIデザインでよくある失敗は、ユーザーのことを十分に理解しないまま設計に入ってしまうことです。
「誰が使うのか」「何を達成したいのか」「どんな環境で使うのか」── この3つを掴まないと、
どれだけ美しいUIを作っても的外れになりかねません。
理解フェーズで使われる手法は4つに分類できます。
| 手法 | 目的 | 主な成果物 | 実施タイミング |
|---|---|---|---|
| ユーザー調査 | 多様な情報源からユーザー像を把握する | ユーザー分類、痛点リスト | プロジェクト初期 |
| ペルソナ/カスタマージャーニーマップ | 具体的なユーザー像と体験の流れを可視化する | ペルソナシート、ジャーニーマップ | 要件定義〜初期設計 |
| タスク分析 | ユーザーの作業内容を分解する | タスク階層、ワークフロー | 設計に入る直前 |
| 環境分析 | 使われる物理的・社会的環境を把握する | 利用シナリオ、環境制約 | ユーザー調査と並行 |
順番に見ていきます。
ユーザー調査とカスタマージャーニーマップ
「インターフェース」という言葉自体が、ユーザー側を理解しないと話が始まらないことを示しています。
ユーザーはスキルレベル、業務理解度、新しいシステムへの受容度がそれぞれ異なります。
よく使われる分類は次の3カテゴリです。
- 初心者:そのシステム自体の操作に不慣れなユーザー
- 知識はあるが使用頻度が低いユーザー:操作を時々忘れるが、概念は理解している
- 熟練ユーザー:日常的に使い、効率を重視する
営業、マーケティング、サポートなど多様な情報源からユーザー像を集めて、これらのカテゴリのうち誰をどの程度ターゲットにするかを明確にしていきます。
そして、集めた情報をもとに作る代表的な成果物がカスタマージャーニーマップです。
これは「ユーザーがソフトウェアを使って目標を達成するまでの体験を、旅の行程のように時系列で可視化したもの」
と捉えるとイメージしやすいです。
作成手順は次の5ステップに整理できます。
- 関係者を集めて多様な視点を確保する
- ユーザーの思考・感情・行動・動機・目標・痛点を調査し、タッチポイント(ユーザーと製品の接点)を定義する
- タッチポイント・チャネル(接触手段)・アクションを可視化したモデルを構築する
- 体験の中の摩擦点や情報の重複といったギャップを特定する
- ギャップを埋める担当者をアサインして発見を実装する
ジャーニーマップの良いところは、機能単位で考えていると見落としがちなユーザー体験全体の流れが可視化されることです。
たとえばECアプリで「商品検索 → 詳細閲覧 → カート → 決済 → 配送追跡 → 受け取り後のサポート」という流れを並べると、
どこにユーザーがイライラするポイントがあるかが浮かび上がります。
ペルソナ ── 架空のユーザー像を具体的に描く
ユーザーをより具体的に理解する手法がペルソナです。
ペルソナは、架空のユーザー像を詳細なプロフィールとして記述したもので、
年齢、教育、ライフスタイル、価値観、目標、ニーズ、制約、行動パターンなどを含めます。
[ペルソナ例:田中由美 / 38歳]
+--------------------------------------------+
| 職業: 地方都市の小学校教員 |
| 学歴: 教育学修士 |
| 好み: オープンな空間設計、シャビーシック |
| ITリテラシ: PCは日常的に使う |
| VRには不慣れ、酔いやすい |
| 目標: 防犯機能を加えた家のリフォーム計画 |
| 痛点: レイアウトや視線の通りを |
| イメージしづらい |
+--------------------------------------------+
「漠然としたユーザー像」よりもペルソナが有効なのは、
開発者がターゲットユーザーの目線で判断できるようになるからです。
「このボタンは目立つかな?」と考えるとき、「漠然としたユーザー」だと答えが出ませんが、
「田中さんなら?」と問うと急に具体的になります。
ペルソナの作成と活用は4ステップで進めるのが一般的です。
- データ収集と分析:ユーザーグループを特定する
- ペルソナの記述:何体作るか、主要なペルソナはどれかを決める
- シナリオの開発:ペルソナが製品をどう使うかのストーリーを書く
- ステークホルダーによる受け入れ:認知ウォークスルーでシナリオを検証する
認知ウォークスルーというのは、ステークホルダーがペルソナの役割になりきって、
システムのプロトタイプでシナリオを実際に進めながら問題点を洗い出す手法です。
「次は何をすればいいか分からない」と感じる箇所が、UIの設計問題を示す手がかりになります。
タスク分析 ── ユーザーが何をするかを分解する
タスク分析は、ユーザーの目標を達成するためにインターフェースがどんな操作メカニズムを提供すべきかを特定する作業です。答えるべき問いは次のとおりです。
- ユーザーは具体的にどんな作業をするか
- どんなサブタスクがあるか
- どんなオブジェクト(対象物)を操作するか
- 作業の順序(ワークフロー)はどうなっているか
- タスクの階層構造はどうなっているか
ここで使うのが段階的詳細化(ステップワイズ・リファインメント)という手法です。
大きなタスクをサブタスクに分解し、さらに各サブタスクを操作レベルまで落とし込みます。
たとえば「ECアプリで商品を購入する」という大きなタスクは、次のように分解できます。
商品を購入する
├── 商品を探す
│ ├── カテゴリから絞り込む
│ ├── キーワードで検索する
│ └── レビューを見る
├── カートに入れる
│ ├── 数量を選ぶ
│ └── オプションを選ぶ
├── 決済する
│ ├── 配送先を選ぶ
│ ├── 支払い方法を選ぶ
│ └── 注文を確定する
└── 配送状況を追跡する
この分解の中で、UIが直接対応すべきタスク(ユーザーが操作するもの)と、
ソフトウェアが自動で処理するタスク(決済システムとの通信など)を区別していきます。
UIが提供すべき要素=ユーザーが直接操作するタスクに対応する部分、
というのがすぐに見えてくるのがこの手法のうれしいところです。
環境分析 ── 使われる場所と状況を知る
ユーザーは孤立した環境で作業するわけではありません。
周囲の活動、職場の物理的特性、使用する機器、同僚との関係など、あらゆる環境要因に影響されます。
代表的な要因は次のように整理できます。
| 要因の種類 | 具体例 | 設計への影響 |
|---|---|---|
| 物理的環境 | 照明、ディスプレイの高さ、キーボードへのアクセスのしやすさ | 工場現場やコックピット等、最適ではない環境での利用も考慮する |
| 社会的・組織的 | 操作スピードの測定、複数人での情報共有、サポート体制 | 個人作業向けかチーム作業向けかでUIが変わる |
| モバイル特有 | 移動中の利用、屋外の照明条件、片手操作 | デスクトップとは異なるコンテキストを前提にする |
特にモバイルアプリの場合は環境分析の重要性がさらに増します。
デスクトップとは全く異なるコンテキストでの使用を前提にする必要があり、「モバイル特有の制約」は後のセクションでまとめて扱います。
原則に基づいてUIを組み立てる ── 設計フェーズの実践
ユーザーのことが理解できたとして、いざUIを設計するとなると
「何を基準に判断すればいいのか」という問題に直面します。
レイアウトの良し悪し、メニューの構造、エラーメッセージの出し方 ──
これらを毎回ゼロから考えるのは非効率ですし、品質も安定しません。
実は、UIデザインには繰り返し立ち返るべき原則があります。ただし、その原則に飛び込む前に、なぜ原則が必要なのかを理解しておくと納得感が深まります。
4つのモデルとそのギャップ ── なぜ原則が必要なのか
UI設計の核心的な課題は、関係者の間で異なる「モデル(システムの捉え方)」が存在していて、
それらが噛み合わないと使いにくいUIが生まれてしまうことにあります。
UIの分析・設計では4つのモデルが関わります。
+-------------------+ +-------------------+
| ユーザーモデル | | 設計モデル |
| エンドユーザーの | | ソフトウェアエンジ |
| プロフィール | | ニアが作る設計 |
| (年齢/スキル/目標) | | |
+-------------------+ +-------------------+
| |
v v
+-------------------+ +-------------------+
| メンタルモデル | ←ギャップ→ | 実装モデル |
| ユーザー頭の中の | | 実際に構築された |
| 動作イメージ | | UIの外観・操作 |
+-------------------+ +-------------------+
特に重要なのは、実装モデル(実際に作られたUI)とメンタルモデル
(ユーザーが頭の中に持っている「こう動くはず」というイメージ)が一致しているかどうかです。
両者が一致していれば、ユーザーは快適に使えます。
「ホーム画面に戻るにはここを押せばいいはず」「保存はCtrl+Sのはず」といった予想が当たり続ける状態です。
逆に設計モデルとメンタルモデルが乖離していると、ユーザーは「思った通りに動かない」とイライラします。
UIデザイナーの仕事は、これら4つのモデルの差異を調停し、一貫した表現を導出すること ──
と捉えると、なぜ原則が必要なのかが見えてきます。原則は、このギャップを埋めるための共通言語なのです。
3つのゴールデンルール ── ギャップを埋める判断基準
UIデザインに迷ったとき立ち返る、最も基本的な3つの原則 ── いわゆるゴールデンルールがあります。
| ゴールデンルール | 対応する具体的な設計指針 |
|---|---|
| ユーザーに主導権を持たせる | モードに閉じ込めない/柔軟な入力手段/中断・取り消し/カスタマイズ/内部構造の隠蔽/直接操作 |
| ユーザーの記憶負担を減らす | 短期記憶への要求最小化/意味あるデフォルト/直感的なショートカット/メタファー/段階的開示 |
| 一貫性を保つ | 文脈の把握(タイトル・アイコン・色)/製品ライン全体での統一/既存パターンの不用意な変更回避 |
ひとつずつ見ていきます。
1. ユーザーに主導権を持たせる
UIは「ユーザーが操作するもの」であって、ユーザーをUIが操ってはいけません。具体的には次のような設計指針があります。
- 不必要なモードに閉じ込めない(自動修正モードに入ったら簡単に抜けられるようにする)
- 柔軟な操作手段を提供する(キーボード、マウス、タッチ、音声など)
- 操作を中断・取り消しできるようにする(アンドゥの重要性)
- スキルレベルに応じたカスタマイズを可能にする(マクロ、ショートカット)
- OSやファイルシステムなどの技術的な内部構造を見せない
- 画面上のオブジェクトを直接操作できるようにする
「ユーザーがコンピューターを制御するのか、コンピューターがユーザーを制御するのか」という視点で自分のUIをチェックすると、主導権の所在が見えてきます。
2. ユーザーの記憶負担を減らす
ユーザーが覚えておかなければならないことが多いほど、操作はエラーが増えます。基本方針はシンプルで、「思い出させる」のではなく「認識させる」ことです。
- 短期記憶への要求を最小化する:過去の操作を再入力させるのではなく、視覚的な手がかりで「認識」させる
- 意味のあるデフォルト値を設定する:かつ「リセット」できるようにしておく
- 直感的なショートカットを定義する:Ctrl+Cの「C」がCopyの頭文字、というように記憶を助ける紐付けにする
- 現実世界のメタファーに基づくレイアウト:請求書アプリなら小切手帳のメタファー、ファイル管理ならフォルダのメタファー
- 情報を段階的に開示する:最初は概要、興味があれば詳細へ
「フォームに10個の項目があるけれど、デフォルト値が8個埋まっていて、ユーザーは2個だけ確認すればいい」という設計が、記憶負担を減らした良い例です。
3. 一貫性を保つ
3つのうち、エンジニアが最も意識しやすいのが一貫性です。情報の提示や入力の受け取り方が場面によってバラバラだと、ユーザーは毎回学び直しを強いられます。
- ユーザーが現在のタスクの文脈を把握できるようにする:ウィンドウタイトル、アイコン、色など
- 製品ライン全体で同じデザインルールを維持する
- ユーザーが慣れ親しんだインタラクションパターンを不用意に変更しない
たとえば「保存ボタンが画面によって右上にあったり下中央にあったり」というのは一貫性違反の典型です。
一度ユーザーの中に「ここを見ればいい」という期待が形成されたら、
それを裏切らないことが品質の基盤になります。
一貫性は強力な原則ですが、絶対視するのも危険です。
明らかに既存パターンが悪い場合や、新しい体験を提供したい場合には、変更する正当な理由があります。
「不用意に変更しない」のであって「絶対変更しない」ではない、という塩梅が大事です。
UIオブジェクトの定義と画面レイアウト
ゴールデンルールという「判断基準」がそろったら、いよいよ具体的な画面を組み立てます。
ここで使うのが、ユースケースやユーザーシナリオから名詞(オブジェクト)と動詞(アクション)を抽出するアプローチです。
オブジェクトには次の3種類があります。
- ソースオブジェクト:ドラッグされる対象(例:センサーアイコン)
- ターゲットオブジェクト:ドロップ先(例:間取り図上の位置)
- アプリケーションオブジェクト:直接操作されないがアプリ固有のデータ(例:バックエンドの処理ロジック)
たとえば「ホームセキュリティアプリで間取り図にセンサーを配置する」というシナリオなら、
センサーアイコン(ソース)を間取り図の位置(ターゲット)にドラッグすると、
内部的には配置情報がアプリケーションオブジェクトとして保存される、という整理ができます。
オブジェクトとアクションが揃ったら画面レイアウトを作ります。
グラフィカルデザイン、アイコンの配置、説明テキスト、ウィンドウの仕様、メニュー項目の定義を反復的に行いつつ、
現実世界のメタファーが有効ならそれを活用します。
UIデザインパターンの活用
GUIが普及したことで、よくある設計問題に対する解決策がUIデザインパターンとして多数蓄積されています。
デザインパターンは「特定の、境界が明確な設計問題に対する解決策の抽象化」と捉えると分かりやすいです。
代表例をいくつか挙げると次のようになります。
| 設計問題 | 代表的なパターン | 解決の要点 |
|---|---|---|
| 未来の日付を入力させたい | CalendarStrip(スクロール可能なカレンダー) | カレンダーの比喩で文脈の中で日付を把握しやすい |
| 大量の項目から1つ選ばせたい | 段階的な絞り込み(カテゴリ→検索→ソート) | 選択肢を段階的に開示して認知負荷を下げる |
| エラーから素早く回復させたい | アンドゥ/確認ダイアログ | 操作の取り消し可能性をユーザーに保証する |
ゼロから設計するのではなく、Web・モバイル向けに蓄積されたUIデザインパターンを活用することで、ユーザーにとっても予測可能な体験を提供できます。
「車輪の再発明」よりも「先人の知恵を活用する」のが基本姿勢です。
モバイル・Webでの設計判断 ── 固有の制約と向き合う
ここまでのUIデザインの原則とプロセスは、デスクトップアプリにもモバイルアプリにもWebアプリにも適用できる、
共通の基盤です。
しかし、モバイル・Webには画面サイズの違いだけでは説明できない固有の設計課題があります。
ここでは、その制約を理解し、制約の中でどう設計判断を行うかを見ていきます。
モバイル開発の技術的制約
モバイルアプリは、現在のソフトウェアシステムの中でも最も開発が難しいものの一つとされています。
エンジニアとして意識しておきたい技術的考慮事項を、設計上の対処方針とあわせて整理します。
| 技術的制約 | 設計上の対処方針 |
|---|---|
| マルチプラットフォーム(iOS/Android等) | プラットフォーム別実装かクロスプラットフォーム実装か早期に判断する |
| 画面サイズと操作方法の多様性 | 表示情報を絞り込み、タッチ・ジェスチャー・音声等の入力に最適化する |
| 短い開発サイクル | アジャイル開発プロセスを前提とする |
| 接続性の不安定さ | ネットワーク切断を前提に設計(オフラインキャッシュ等) |
| バッテリー制約 | バックライト・通信・処理を最適化、無駄な常駐処理を避ける |
| セキュリティとプライバシー | 通信暗号化・端末紛失時の対策。ユーザビリティとのトレードオフを意識 |
| 計算・ストレージの制限 | 重い処理はサーバ側に逃がす、ローカルデータは最小限に |
| 外部サービスへの依存 | API障害時のフォールバック、データのアクセス性とセキュリティを両立 |
これらの制約をすべて完璧に解決するのは現実的ではありません。
「自分のアプリではどの制約が最も重要か」を見極めて優先順位をつける、というのが実務的なアプローチになります。
たとえば動画編集アプリなら計算・ストレージ・バッテリーの制約が最重要ですし、
健康管理アプリなら接続性とセキュリティが最重要、という具合に主戦場が変わります。
コンテキストアウェアネス ── 環境を活かすアプリ設計
モバイルデバイスはその位置情報や周囲の環境情報を活用して、ユーザーに合わせた体験を提供できます。
これがコンテキストアウェアネス(コンテキストを認識した設計)です。
たとえば、訪問介護士が患者宅に到着すると、その患者の情報を端末が自動でダウンロードする、
というのが代表的な活用例です。
位置情報とユーザーIDを組み合わせれば、「いま必要な情報を、いま必要な人に」届けるUIが作れます。
コンテキストアウェアな設計のためには、次のような仕組みが必要になります。
- デバイスの位置、時刻、周囲のオブジェクトを検知する仕組み
- ユーザーの存在・アイデンティティ・権限を認識する仕組み
- 不確実で急速に変化するセンサーデータから信頼性のある情報を抽出する技術
ユビキタスコンピューティング環境では、複数のユーザーが異なるデバイス
(スマホ、タブレット、ウェアラブル)で同時に作業することもあります。
デバイスの構成が頻繁に変わることを前提にした柔軟なインフラが必要、という難しさもあります。
モバイル・Webのアーキテクチャ ── 薄いクライアントか厚いクライアントか
モバイル設計で最も重要なアーキテクチャ上の判断の一つが、クライアント側にどれだけの機能を持たせるか(シンクライアント vs ファットクライアント)です。
この判断を支える2つのパラダイムが、サービス指向アーキテクチャとクラウドコンピューティングです。
- サービス指向アーキテクチャ:サービスのソースコードをクライアントに統合せず、Web API(REST等)を通じて疎結合で利用する
- クラウドコンピューティング:SaaS、PaaS、IaaSの3層。デバイスはいつでもどこからでもクラウドサービスにアクセスできる
そして、モバイル・WebAppで広く使われるアーキテクチャパターンがMVC(Model-View-Controller)です。
アプリケーションのデータ処理、画面表示、操作の制御を3つの役割に分離します。
+----------------+
| ユーザー |
+----------------+
| ^
ユーザー入力 画面表示
v |
+--------------+ +--------------+
| Controller |----->| View |
| 入力を受け取り | | 画面表示を |
| Modelに依頼 | | 担当 |
+--------------+ +--------------+
| ^
| データ処理を依頼 | データを取得
v |
+-----------------------+
| Model |
| データ・処理ロジック |
+-----------------------+
実装戦略の選択肢としては、プラットフォーム別のネイティブ実装か、
クロスプラットフォームフレームワーク(Flutter、React Native等)かの判断があります。
対象プラットフォーム数、性能要件、開発リソースのトレードオフで決まります。
Webアプリケーションについては、「設計ピラミッド」と呼ばれる階層的な整理が知られています。
下から上に向かって、意識する設計領域は次のように積み上がります。
+----------------------------------------------+
| コンポーネント設計 | ← 個別UI部品の組み立て
+----------------------------------------------+
| ナビゲーション設計 | ← ページ間の経路
+----------------------------------------------+
| アーキテクチャ設計 | ← サイト全体の構造
+----------------------------------------------+
| コンテンツ設計 | ← 何を載せるか
+----------------------------------------------+
| 美的設計 | ← トーン・配色・タイポグラフィ
+----------------------------------------------+
| インターフェース設計 | ← 操作・入出力の枠組み
+----------------------------------------------+
ナビゲーション設計 ── ユーザーをどう導くか
アーキテクチャが決まったら、ユーザーがコンテンツや機能にアクセスするためのナビゲーション経路を定義します。
ナビゲーション設計の起点は、ユーザーの種類ごとのユースケースです。
ここで使われる概念がナビゲーション意味単位(NSU: Navigation Semantic Unit)で、
関連するナビゲーション構造のセットを指します。
各ユースケースに対してNSUを定義し、ユーザーがコンテンツやWebApp機能の間をどう移動するかを設計します。
ナビゲーションの実装手段としては次のようなものがあります。
- 個別のリンク
- 水平/垂直ナビゲーションバー
- タブ
- サイトマップへのアクセス
WebAppには、ユーザーがホームページ以外の任意のページから入ってくる可能性があるという特有の課題があります。
検索エンジン経由やSNS共有経由で、いきなり下層ページに着地するケースです。
どこから入ってもナビゲーション機能が利用できるように設計する ── これがWeb特有の制約になります。
モバイル・Web特有のベストプラクティス
ここまでのセクションで紹介した汎用的な原則に加えて、モバイル・Web固有の状況で意識すべき指針があります。
意識すべきこと:
- 使用コンテキストを設計に反映する:飛行機で映画を観るのと、退社前に天気を確認するのではUIが異なる
- プラットフォームの標準に従う:iOS/Androidそれぞれのデザインシステムを尊重し、ユーザーが慣れた操作体系を維持する
- OS/ブラウザ標準の設定を尊重する:ダークモード、prefers-reduced-motion(モーション抑制)、フォントサイズ設定などを反映する
- タッチターゲットを十分に大きく取る:アクセシビリティの国際ガイドライン WCAG 2.2 が示すターゲットサイズ基準(24×24CSSピクセル以上)を満たす
- アイコンには必要に応じてラベルを添える:開発者にしかわからないアイコンを避け、テキストラベルで補完する
- パーソナライゼーションをサポートする:位置情報の自動検出、コンテンツオプションの選択、ユーザー設定の永続化
避けるべきこと:
- 機能を詰め込みすぎる(キッチンシンク):簡潔さは理解しやすさにつながる
- 表示速度の軽視:Webの体験品質指標である Core Web Vitals(LCP=主要コンテンツの表示時間、INP=操作への応答性、CLS=レイアウトのずれの少なさ)を意識する
- オンラインヘルプで使いにくいUIを補おうとする:ヘルプは応急処置であって、UI設計の代替にはならない
ユーザーに試してもらう ── 評価フェーズの実践
「理解」と「設計」を経てUIプロトタイプができあがりました。しかし、開発者がどれだけ原則に従って設計しても、ユーザーの手に渡らなければ品質はわかりません。
UIの評価は、非公式な「試しに使ってもらう」から、統計的手法を用いた正式な調査まで幅広い手段があります。重要なのは、評価のサイクルを早く・何度も回すことです。
プロトタイプレビュー ── コードを書く前にUIを検証する
実は、プロトタイプを作る前 ── まだ設計モデルの段階でUIの品質を評価する方法があります。
早期に問題を発見すれば、評価サイクルのループ回数が減り、開発期間が短くなります。
設計モデルの段階で適用できる評価基準は次の4つです。
- 要件モデルや仕様書の長さ・複雑さ → ユーザーの学習負荷の指標になる
- ユーザータスクの数と各タスクのアクション数 → 操作時間と効率性の指標になる
- デザインモデルが示すアクション・タスク・システム状態の数 → ユーザーの記憶負荷の指標になる
- インターフェースのスタイル、ヘルプ機能、エラーハンドリングの方針 → UIの複雑さとユーザー受容度の指標になる
これらの基準で「明らかに学習負荷が高そう」「タスクのアクション数が多すぎる」といった問題を、コードを書く前に検出できます。
加えて、ペーパープロトタイプ(紙に書いた低忠実度のモックアップ)を使えば、
プログラミングのリソースを投入する前にUIのコンセプトを検証できます。
紙に書いて指で操作してもらうだけでも、
「次に何をしていいか分からない」という致命的な問題は十分に発見できるものです。
ヒューリスティック評価(専門家が原則に照らしてレビューする手法)や、先ほど触れた認知ウォークスルーといった、専門家によるレビューも有効です。
ユーザーテスト ── 実際のユーザーから学ぶ
対話型のプロトタイプが完成したら、ユーザーに実際に使ってもらい、定性・定量の両面でデータを収集します。
- 定性データ:アンケート、自由記述のフィードバック、操作中のつぶやき(思考発話法)
- 定量データ:一定時間内に正しく完了したタスク数、操作の頻度と順序、画面を「見ている」時間、エラーの数と種類、エラー回復にかかった時間、ヘルプの利用回数と頻度
評価のサイクルは次のように回ります。
このループを「修正不要」と判断できるまで繰り返します。
ここで意識したいのは、評価セッションを誰が観察するか、ということです。
UX専門家やテスト設計者だけでなく、開発チーム全員、特にプロダクトの意思決定者が
リアルタイムでユーザーフィードバックに触れることが、学習機会を最大化する鍵になります。
レポートでまとめられたフィードバックを後から読むのと、
ユーザーが目の前で「どこ押せばいいの?」と困っている様子を見るのとでは、
得られる気づきの質が全く違います。
ユーザビリティとアクセシビリティ ── プロセスを貫く品質指標
ここまでのプロセス(理解 → 設計 → 評価)を通じて、UIの品質を作り込む方法を見てきました。最後に、UIの品質を語る上で避けて通れない概念を整理します。
「ユーザビリティ」と「アクセシビリティ」 ── この2つは、プロセスの特定のフェーズだけでなく、すべてのフェーズを通底する品質指標として意識すべきものです。
ユーザビリティ ── 測定可能な「使いやすさ」
ユーザビリティとは「ユーザーがソフトウェアの機能を簡単に、効率的に使える度合い」を指します。
「ユーザーフレンドリー」という漠然とした表現ではなく、
定量的に測定可能な品質特性として捉えるのがポイントです。
ユーザビリティが達成されているかを確認するための問いを並べてみます。
- 継続的なヘルプや指示なしに使えるか
- 熟練ユーザーが効率的に作業できるルールがあるか
- 使い込むほど柔軟になる操作メカニズムがあるか
- 物理的・社会的環境にチューニングされているか
- ユーザーは常に「自分がどこにいるか」を把握できるか
- 論理的で一貫した構造になっているか
- エラーを予測し、修正を助けてくれるか
- 操作はシンプルか
これらの問いに「Yes」が増えるほどユーザビリティは高い、と判断できます。
そしてユーザビリティが高いと、具体的なビジネス効果につながります。
売上と顧客満足度の向上、サポートコストの削減、教育コストの削減、ドキュメントコストの削減 ──
「使いやすさは贅沢品」ではなく「使いやすさは投資」だ、ということです。
ユーザビリティ設計の具体的な原則
ユーザビリティを実現するための具体的な設計原則は、自分のプロダクトのUIチェックリストとしても使えます。
| 原則 | 概要 | 違反した場合のUIの問題 |
|---|---|---|
| 予測 | ユーザーの次のアクションを先回りする | 同じ操作を何度も強いる |
| コミュニケーション | 処理状況をユーザーに伝える | 処理中か止まっているか分からない |
| 一貫性 | ナビゲーション・メニュー・アイコン・美的要素を統一する | 画面ごとに学び直しが必要 |
| 制御された自律性 | 自由な移動を許しつつ制約を維持する | 認可外の領域に入れる、または制限が強すぎて動けない |
| 効率性 | ユーザーの作業効率を最適化する | 開発側都合で操作手数が多い |
| 柔軟性 | 直接的なタスク達成と探索的利用の両方をサポートする | 一本道で寄り道できない |
| 集中 | 現在のタスクに集中させる | 画面に情報が詰め込まれすぎ |
| 遅延の低減 | 待ち時間中も作業可能にし、フィードバックを提供する | 「固まった?」と不安にさせる |
| 学習容易性 | 学習時間を最小化、再学習も容易にする | 久しぶりに使うとまた迷う |
| メタファー | 現実世界の経験を反映したメタファーを活用する | 抽象的すぎてイメージできない |
| 可読性 | フォントサイズ、色のコントラストに配慮する | 読めない・見えない |
| 状態の追跡 | ユーザーの状態を保存し、続きから再開できるようにする | 毎回最初からやり直し |
| 目に見えるナビゲーション | 「同じ場所にいる」感覚でコンテンツを届ける | 自分がどこにいるか分からない |
このリストの中で、自分のアプリで弱い項目を見つけて改善する、という使い方ができます。
アクセシビリティ ── すべてのユーザーが使える設計
アクセシビリティとは、視覚・聴覚・運動機能・認知機能などに制約のあるユーザーが、ソフトウェアを認識し、理解し、操作できる度合いを指します。
倫理的・法的・ビジネス上の理由から、アクセシビリティへの対応はもはや「特殊なニーズへの対応」ではなく、必須要件と捉えるのが自然です。
実務で使える業界標準として代表的なのが、WCAG(Web Content Accessibility Guidelines)2.2です。
「知覚可能・操作可能・理解可能・堅牢」の4原則のもとに、具体的な達成基準が提供されています。
地域ごとの法規制(日本のJIS X 8341-3:2016、欧州のEAA/EN 301 549等)も
WCAGをベースに整備されているので、まずWCAGを押さえておくと汎用性が高いです。
細かい話ですが、JIS X 8341-3:2016 は WCAG 2.0 と内容を一致させた規格、
EAA の技術基準である EN 301 549 は WCAG 2.1 Level AA を要求事項としています
(WCAG 2.2 はベストプラクティス扱い)。
最新の WCAG 2.2 は将来的に各規格に取り込まれる方向ですが、
現時点でも WCAG を押さえておけば各国規制への移行コストは小さくて済みます。
加えて意識したいのが、支援技術への対応です。代表的なものは次のとおりです。
- スクリーンリーダー:画面の内容を音声で読み上げるソフトウェア
- 音声入力:声で操作を行う仕組み
- スイッチデバイス:限られた身体動作で操作するための入力機器
こうした支援技術が正しく機能するためには、セマンティックなマークアップやARIA属性(要素の役割や状態を機械に伝える属性)を適切に使うことが必要です。
これは「特定の人のため」というより「機械が読める=多様な手段で読める」UIを作る取り組みと捉えると意義が見えてきます。
全ユーザーに影響する横断的UI課題
「アクセシビリティ」と聞くと特定のユーザー層への対応をイメージしがちですが、実はすべてのユーザーの体験に影響する一般的なUI設計課題があります。
- システム応答時間:長さだけでなく変動性(ばらつき)が重要。1秒固定のレスポンスは、0.1〜2.5秒のばらつきがあるレスポンスより快適
- ヘルプ機能:インターフェースを離れずに疑問を解決できるオンラインヘルプを用意する
- エラーハンドリング:ユーザーが理解できる言葉で問題を説明し、回復方法を提案し、否定的な影響を示し、決してユーザーを責めない
- メニューとコマンドのラベリング:自明で一貫性があり、カスタマイズ可能なラベル設計
- 国際化:異なるロケールと言語に対応するグローバル化された設計。Unicode標準の活用
応答時間の「変動性」の話は最初聞いたとき意外でした。
「速い方がいいに決まっている」と思っていましたが、
人間は予測できないことに不安を感じる生き物なので、遅くても一定であれば慣れる、
という洞察は実装の優先順位を考えるうえで参考になります。
これらは「特殊なニーズへの対応」ではなく、全ユーザーが快適に使うための基盤です。設計初期から検討することで、実装後の手戻りを減らせます。
おわりに
UIはソフトウェアの中でユーザーが唯一直接触れる部分であり、
ソフトウェア全体の品質を判断する「窓」として機能します。
その品質は偶然ではなく、プロセスによって作り込むものだ ──
というのが、この記事で一番伝えたかったことです。
このプロセスの核心は3つのフェーズの反復にあります。
- 理解:ユーザーを知り、タスクを分解し、環境を把握する
- 設計:ゴールデンルールや設計原則に基づいてUIを組み立てる
- 評価:プロトタイプをユーザーに試してもらい、フィードバックからUIを改善する
モバイル・Webには固有の制約がありますが、基本原則は変わりません。
制約を理解した上で原則を適用することが、プラットフォームを問わず使いやすいUIを実現する道になります。
そして、ユーザビリティとアクセシビリティは特定のフェーズで対応する「機能」ではなく、プロセス全体を貫く品質指標として意識し続けるものだと捉えています。
UIデザインは開発プロセスの一部であり、反復的な検証こそが品質を担保する ──
そう捉え直すと、「次はどのボタンを大きくするか」というミクロな判断にも、
「ユーザーモデルとのギャップを埋めているか」「ユーザーが主導権を持てているか」という軸が生まれます。
自分も「UIはデザイナーの仕事」と思っていた時期があったぶん、
エンジニアリングの一部としてUIを捉え直したときの視界の広がりは大きいものでした。
同じように感じている方の、考える手がかりになればうれしいです。