こんにちは!UIデザイナーのYunyです。
- 画面の読み込み中にスピナーを回しているが、ユーザーに「待たされている」ストレスを与えていないか不安な方
- スケルトンスクリーンとスピナーの使い分け基準(秒数やコンテンツ特性)を論理的に整理したい方
- 読み込み完了時のレイアウトシフト(CLS)を防ぎ、心地よい待機体験を設計したい方
Webサイトやアプリを操作していて、画面中央でぐるぐる回るスピナーを見つめながら「まだかな…」と指を止めた経験はありませんか。
通信速度が向上した現代でも、大量のデータ取得や外部APIとの通信において、画面の読み込み待ち時間をゼロにすることは困難です。
そこで重要になるのが、ユーザーが感じる待ち時間の心理的負担を軽減する「ローディングUI(Loading UI)」の設計です。
近年では、読み込み後のレイアウトを薄いグレーの枠線や面であらかじめ予告する「スケルトンスクリーン」が広く普及しました。
しかし、「スピナーを全廃して何でもスケルトンにすれば解決する」というわけではありません。
適切な場面を見極めずにスケルトンスクリーンを採用すると、かえってユーザーに画面のフリーズを疑わせたり、待ち時間を長く感じさせたりする逆効果を生んでしまいます。
今回は、認知心理学やシステム応答基準の理論を土台に、スケルトンスクリーンとスピナーの明確な使い分け基準と失敗しない設計原則を実務目線で整理しました。
ローディングUIは、「処理にかかる時間(0.1秒/1秒/3秒)」と「コンテンツ構造の予測可能性」で使い分けます。0.1秒未満は表示不要、0.1秒〜1秒未満の局所処理には「スピナー」、1秒〜3秒の確定した画面・リストには「スケルトンスクリーン」が最適です。3秒以上かかる重い処理はプログレスバーや進捗メッセージへ切り替え、ユーザーの不安を解消します。
- 1. なぜスピナーだけだと「遅い」と感じるのか?体感時間のUX心理学
- 1. 受動的待機(Passive Waiting)と能動的期待の認知的差異
- 2. 巨大スピナーで「画面が重い」と指摘された実務の苦い経験
- 3. レイアウトシフト(CLS)防止という視覚的安定性の確保
- 2. 【判定早見表】スピナー vs スケルトンスクリーンの使い分け基準
- 1. NN/gの応答時間3基準(0.1秒 / 1秒 / 10秒)に基づく時間判定
- 2. 処理時間 × コンテンツ特性の判定マトリクス
- 3. スケルトンスクリーン設計で失敗しない4つの原則
- 1. 実際のコンテンツ寸法と正確に一致させる(ズレ・誤タップ防止)
- 2. シマーアニメーションは左から右へ自然な速度で流す(1.2〜1.5秒周期)
- 3. 無彩色(薄いグレー)で控えめに組む(コンテンツより目立たせない)
- 4. ゼロ件(エンプティ)やエラー時のフォールバックを想定する
- 4. スピナーを採用すべき4つの場面
- 1. ボタン内のアクション待機(送信・保存・決済)
- 2. 構造が予測不能な動的コンテンツや外部埋め込み
- 3. 無限スクロールの追加読み込み(フッター直下)
- 4. プルリフレッシュ(Pull-to-refresh)による画面更新
- 5. UI Stackで捉える「ローディング状態」の実務連携
- 参考リンク
- 終わりに
1. なぜスピナーだけだと「遅い」と感じるのか?体感時間のUX心理学
画面の中央でインジケーターが回転し続ける従来のスピナー表示は、実装が容易であるため長年多用されてきました。
しかし、認知心理学の観点から見ると、スピナーにはユーザーに待ち時間を実際以上に長く意識させてしまう構造的な欠点が存在します。
1. 受動的待機(Passive Waiting)と能動的期待の認知的差異
2013年、プロダクトデザイナーのルーク・ウォブロフスキー(Luke Wroblewski)は「Avoid The Spinner」と題した論考の中で、スピナーが抱える心理的課題を指摘しました。
画面の中央でスピナーだけが回転している状態では、ユーザーは「今、自分は待たされている」という行為そのものに意識を集中させてしまいます。
これは心理学において「受動的待機(Passive Waiting)」と呼ばれ、意識が待ち時間に向かうほど、実際の経過時間よりも体感時間が長く感じられる傾向があります。
一方で、あらかじめコンテンツの配置枠をグレーのブロックで提示するスケルトンスクリーンは、ユーザーの視線を「次に表示される情報の構造(能動的期待)」へと向けさせます。
「ここにタイトルが入り、下に画像と文章が並ぶ」という骨組みが見えていることで、脳は次に受け取る情報を事前に予測して準備を始めます。
その結果、実際の通信時間は全く同じであっても、認知的な体感待ち時間を約10〜30%短縮させる効果が複数のUX調査で実証されています。

上図のように、スピナーは「回転の繰り返し」に視線を固定させてしまうのに対し、スケルトンスクリーンは「コンテンツの輪郭」を先行して見せることで、待ち時間を次の行動への準備時間へと転換させます。
このわずかな視覚的アプローチの差が、ユーザーが感じるストレスやサービス全体の速度印象を大きく左右します。
2. 巨大スピナーで「画面が重い」と指摘された実務の苦い経験
自分自身も過去の実務において、ダッシュボード画面を設計した際に手痛い失敗を経験したことがあります。
複数のグラフやデータテーブルが並ぶ複雑な管理画面で、画面全体の読み込み中に画面中央へ1つの巨大なスピナーを配置してリリースしました。
すると、ユーザーテストや社内レビューにおいて「この画面は異常に重くて使いづらい」「毎回待たされてストレスが溜まる」という厳しい意見が相次ぎました。
エンジニアに確認したところ、APIの平均レスポンス速度は1.4秒程度であり、決してシステム的に極端に遅いわけではありませんでした。
そこで、各カードの寸法に合わせたスケルトンブロック(見出しの線、グラフの枠、テーブルの行)を配置するUIへと改修を行いました。
APIの通信速度は1ミリ秒も変わっていないにもかかわらず、ユーザーからは「見違えるほどサクサク動くようになった」「読み込みが速い」と正反対の評価を得ることができました。
この実務経験を通じて、自分は「ユーザーが評価しているのは物理的な通信速度ではなく、視覚的な進行感(Progress)である」という事実を強く認識しました。
3. レイアウトシフト(CLS)防止という視覚的安定性の確保
スケルトンスクリーンが現代のWeb標準において不可欠とされるもう一つの決定的な理由は、累積レイアウトシフト(CLS: Cumulative Layout Shift)の防止です。
画面中央のスピナーが消えた瞬間に、上下からテキストや画像が突然現れて画面全体がガタッと押し出される現象は、多くのユーザーに強い不快感を与えます。
ボタンを押そうとした瞬間に上部の画像が読み込まれて画面がズレ、誤って別のリンクをタップしてしまう誤操作は、離脱の直接的な引き金になります。
スケルトンスクリーンは、コンテンツが読み込まれる前からその要素が占有する高さと幅を物理的に予約(Reserve Space)します。
データが届いた際には、予約されたプレースホルダーの中に中身が滑らかに差し替わるため、画面の跳ねやガタつきが一切発生しません。
視覚的な安定性を保つことは、単なる見た目の美しさだけでなく、GoogleのCore Web Vitalsにおける検索評価や操作精度の向上にも直結します。
2. 【判定早見表】スピナー vs スケルトンスクリーンの使い分け基準
スケルトンスクリーンの効果が高いからといって、あらゆる読み込み画面に適用すれば良いわけではありません。
ローディングUIの選定において最も基準とすべき尺度は、「システムが応答するまでの所要時間」と「コンテンツの構造が予測可能か」の2点です。
1. NN/gの応答時間3基準(0.1秒 / 1秒 / 10秒)に基づく時間判定
ユーザビリティの権威であるニールセン・ノーマングループ(Nielsen Norman Group)のヤコブ・ニールセンは、システムの応答速度に関して3つの重要な時間的境界を定義しています。
この時間基準を実務のUI設計に当てはめると、採用すべきインジケーターの境界線が明確になります。
| 応答時間 | ユーザーの心理状態 | 推奨されるローディングUI | 実装のポイント |
|---|---|---|---|
| 0.1秒未満 | 即座に反応したと感じる(Instantaneous) | 表示なし(None) | インジケーターを出すとチラつき(Flicker)になり逆効果 |
| 0.1秒〜1.0秒未満 | 思考の中断は起きないが遅れを認識する | 局所的なスピナー | ボタン内の極小スピナーなど、控えめな手応えを返す |
| 1.0秒〜3.0秒 | 待ち時間を意識し始める境界線 | スケルトンスクリーン | 確定したレイアウト枠を提示し、体感速度を最大化する |
| 3.0秒〜10.0秒 | 画面がフリーズしたのではないかと不安になる | 進捗メッセージ + バー | スケルトンを放置せず「データ取得中」などの文字を併記 |
| 10.0秒以上 | 他のタスクへ注意が逸れて完全に離脱する | パーセント表示 / バックグラウンド | 残り時間見積もり、バックグラウンド処理への退避導線 |
特に注意すべきは「0.1秒未満」の高速通信環境です。
わずか数十ミリ秒でデータが返ってくる高速なAPIに対してスケルトンを設定すると、画面が一瞬だけグレーに光って消える「画面のチラつき(Flicker)」が発生します。
このチラつきはユーザーの視覚的なノイズとなり、かえって画面の品位を損なうため、200〜300msの遅延タイマーを設けてからインジケーターを表示するディレイ処理が推奨されます。
2. 処理時間 × コンテンツ特性の判定マトリクス
応答時間に加えて、「表示される中身のレイアウトが事前に分かっているか」というコンテンツの性質も、UI選定の重要な分岐点です。
構造が予測できる画面と、予測不能な動的データでは、最適な表現手法が根本から異なります。
| コンテンツの性質 | 0.1秒〜1.0秒未満 | 1.0秒〜3.0秒 | 3.0秒以上 |
|---|---|---|---|
| 固定カード・リスト・記事詳細 (レイアウトが事前に確定) | 控えめなフェードまたは無表示 | スケルトンスクリーン (シマーアニメーション付き) | スケルトン + 進捗インジケーター |
| 動的グラフ・外部埋め込み (高さや幅がデータ依存で可変) | 領域中央のスピナー | 枠線付きコンテナ + スピナー | プログレスバー + 処理状況テキスト |
| ボタン押下後のフォーム送信 (ユーザーのアクション待機) | ボタン内インラインスピナー | ボタン内スピナー + テキスト無効化 | モーダルプログレス + キャンセル導線 |
| 無限スクロールの次ページ読み込み | リスト最下部のスピナー | リスト最下部のスケルトン行 | スクロール一時停止 + 再試行ボタン |
このように、2つの軸を掛け合わせて整理することで、「ここはスケルトンにすべきか、スピナーで十分か」という迷いをチーム内で論理的に解消できます。
下図は、処理にかかる応答時間とコンテンツ構造の確定度合いに応じた具体的なUI選定フローチャートです。設計に迷った際の判断基準として活用してください。

このように、0.1秒、1秒、3秒という明確な境界線を設けることで、デザイナーとエンジニアの間でインジケーターの選択基準を自然に統一できます。
3. スケルトンスクリーン設計で失敗しない4つの原則
スケルトンスクリーンは強力なUI手法ですが、雑に作るとかえってユーザビリティを破壊します。
米国のデザイン会社Vigetが実施した136名規模の被験者実験(論考『A Bone to Pick with Skeleton Screens』、2017年)では、粗悪に設計されたスケルトンスクリーンは、通常のスピナーよりも待ち時間を長く感じさせたという意外な結果も報告されています。
実務でスケルトンを導入する際は、以下の4つの設計原則を厳格に守る必要があります。

上図の4つの原則について、それぞれの実務的な注意点と具体的な実装アプローチを解説します。
1. 実際のコンテンツ寸法と正確に一致させる(ズレ・誤タップ防止)
スケルトンスクリーンのプレースホルダーは、読み込み完了後に表示される実要素の寸法(幅・高さ・角丸)と完全一致させなければなりません。
たとえば、見出しテキストのスケルトンを実際の文字サイズ(20px)より極端に細い8pxのバーで描画してしまうと、表示切り替え時に周囲の要素が跳ねてしまいます。
特に複数行の段落テキストを表現する場合、最終行の長さを意図的に短く(幅50〜60%程度)設計することで、読者に「これは文章のブロックである」と自然に認識させることができます。
カード内の画像アスペクト比(16:9や1:1)やボタンのパディングも実物と同一に保ち、データが流し込まれた瞬間のズレを0ピクセルに抑えることが鉄則です。
2. シマーアニメーションは左から右へ自然な速度で流す(1.2〜1.5秒周期)
スケルトンブロックを単なる「静止したグレーの長方形」のまま配置することは避けてください。
静止したグレーの箱は、ユーザーに「権限がなくて操作できない無効化状態(Disabled UI)」や「ブラウザが固まった状態」と誤認されるリスクが極めて高くなります。
そのため、淡い光が左から右へと滑らかに通過する「シマーアニメーション(Shimmer Effect)」を適用することが標準的です。
アニメーションの周期(Duration)は、速すぎると画面が激しく点滅して不安を煽り、遅すぎると重苦しい印象を与えます。
視覚的な心地よさを担保するためには、1.2秒〜1.5秒程度の周期で、Ease-outイージングを効かせた左から右への光の移動を設定するのが最も効果的です。
また、実装時のアクセシビリティ配慮として@media (prefers-reduced-motion: reduce) への対応を忘れてはなりません。前庭感覚障害や視覚過敏を持つユーザーは、画面全体の明滅・シマーの動きによって強い不快感やめまいを覚える場合があります。OS側でアニメーション削減が設定されている環境では、シマーを停止して静止した控えめなプレースホルダーにするか、ごくわずかな静的透明度変化に抑える配慮が必要です。
3. 無彩色(薄いグレー)で控えめに組む(コンテンツより目立たせない)
スケルトンスクリーンの役割は、あくまで主役であるコンテンツを引き立てるための「黒子」です。
強いコントラストの濃いグレーや、ブランドカラーなどの有彩色でスケルトンを作ってしまうと、待機中の画面が非常に騒がしくなってしまいます。
背景色が真っ白(#FFFFFF)の画面であれば、ベースのスケルトン色は極めて薄いグレー(#F1F5F9 や #E2E8F0 など)に設定します。
シマーのハイライト部分も、背景に近い半透明の白(rgba(255, 255, 255, 0.6))を重ねる程度に留め、画面全体のコントラストを極力抑えて静かに待機させることが上質な仕上がりを生みます。
あわせて、スクリーンリーダーなどの支援技術(WAI-ARIA)に対しても、スケルトン要素には aria-hidden="true" を付与して無意味なブロック読み上げを防ぎ、読み込み中の親コンテナに aria-busy="true" や aria-live="polite" を指定して状態を正確に伝達します。
4. ゼロ件(エンプティ)やエラー時のフォールバックを想定する
スケルトン画面を設計する際、多くのデザイナーが見落としがちなのが「データが0件だった場合」や「通信エラーが発生した場合」の挙動です。
検索結果画面などで3つのスケルトンカードを堂々と表示した結果、通信終了後に「該当する商品が見つかりませんでした」という一行のエンプティステートへ突然切り替わると、ユーザーの期待を大きく裏切ることになります。
データが存在するか不確定な一覧画面では、過度に具体的なスケルトンを並べすぎない配慮が必要です。
また、APIエラーが発生した場合は、スケルトンを直ちに解除し、明確なエラーメッセージと再読み込みボタンを表示するフォールバック処理をあらかじめ設計仕様に含めておく必要があります。
4. スピナーを採用すべき4つの場面
スケルトンスクリーンの優位性を解説してきましたが、スピナーにも「スピナーでなければ成立しない明確な役割」が存在します。
以下の4つのケースでは、無理にスケルトンを作ろうとせず、迷わずスピナーを選択するのが正解です。
1. ボタン内のアクション待機(送信・保存・決済)
ユーザーがフォームの「送信する」や「購入を確定する」といったCTAボタンを押した直後の待機状態には、ボタン内に収まるインラインスピナーが最適です。
このシチュエーションでは、ボタン自体の形状を変化させてスケルトンにする意味はなく、ユーザーの視線は押下したボタンそのものに集中しています。
ボタン内の文字を一時的に非表示にし、同色のスピナーを回転させてボタンの再押下(二重送信)を無効化することで、「操作を正常に受け付け、現在処理中である」という事実を最も端的に伝達できます。
2. 構造が予測不能な動的コンテンツや外部埋め込み
読み込まれるデータの量や形状が事前には全く予測できないコンポーネントでは、スケルトンスクリーンを作成できません。
たとえば、ユーザーの投稿内容によって画像の有無やテキスト量が不規則に変動するSNS埋め込みや、動的に描画される分析グラフなどがこれに該当します。
無理に架空のスケルトンを配置すると、実際のデータが表示された瞬間に大幅なレイアウト崩れが発生し、逆効果になります。
このような不定形コンテンツでは、固定高さを設けたコンテナ枠の中央にスピナーを配置し、境界線を明示して待機させるアプローチが最も安全で誠実な設計です。
3. 無限スクロールの追加読み込み(フッター直下)
SNSのタイムラインや商品一覧で、画面を下にスクロールした際に次の20件を追加取得する場面では、リスト末尾に配置する小さなスピナーが最も適しています。
ユーザーはすでに上部のコンテンツを閲覧しており、画面全体が待機状態になっているわけではありません。
視界の端に小さなスピナーが見えるだけで、「次のデータが読み込まれつつある」という状況を直感的に把握できます。
ここにあえて巨大なスケルトン行を何段も挿入すると、スクロール位置が予期せずジャンプして閲覧を妨げる原因になります。
4. プルリフレッシュ(Pull-to-refresh)による画面更新
スマートフォンアプリにおいて、画面最上部を下方向に引っ張って最新情報に更新する「プルリフレッシュ」操作では、上部から引き出される回転インジケーターが業界標準のメンタルモデルとして定着しています。
ユーザー自らが指を動かして手動でトリガーした操作であるため、指の動きに追従してインジケーターが回転し、指を離した瞬間に通信を開始する挙動が最も自然に感じられます。
この操作に対して画面全体をスケルトン化してしまうと、閲覧中だった既存データが一瞬で消え去り、ユーザーに強い喪失感と不安を与えてしまいます。
既存の画面をそのまま維持しながら、ヘッダーの隙間でスピナーが静かに回り、完了後にコンテンツが滑らかに差し替わる設計がベストプラクティスです。
5. UI Stackで捉える「ローディング状態」の実務連携
デザイン実務において、ローディングUIが後回しにされたりエンジニア任せになったりしてしまう最大の原因は、デザイナーが「理想的な完成画面(Ideal State)」しかFigma上に作らないことにあります。
画面遷移やコンポーネントを設計する際は、常にUI Stack(状態設計)の概念を意識し、初期段階から読み込み状態を仕様に組み込む必要があります。
Figma上であらかじめ「Default」「Hover」「Loading」「Empty」「Error」の各バリアントを定義しておくことで、開発段階での認識ズレや手戻りを劇的に削減できます。
特にボタンコンポーネントやカードコンポーネントのローディング設計については、以下の記事で詳細な設計ルールを解説していますので、あわせて参考にしてください。
状態設計の全体像を把握し、エンジニアとの連携手戻りを防ぐための包括的なチェックリストは、以下の記事で詳しく解説しています。
また、ボタン内のインラインスピナーやタップ領域(44pt基準)の具体的なサイズ設計については、以下のガイドで実践的なルールを整理しています。
参考リンク
- Mobile Design Details: Avoid The Spinner (Luke Wroblewski)
- Response Times: The 3 Important Limits (Nielsen Norman Group)
- Progress Indicators Make a Slow System Less Insufferable (Nielsen Norman Group)
- A Bone to Pick with Skeleton Screens (Viget)
終わりに
最後までお読みいただき、ありがとうございます!
ローディングUIの設計は、単に「通信中の退屈を紛らわせるためのアニメーション」ではありません。
ユーザーが次に目にするコンテンツの構造をあらかじめ提示し、操作に対する不安やストレスを解消して次の行動へとスムーズに導くための大切なコミュニケーションです。
スピナーとスケルトンスクリーン、それぞれの強みと適性を正しく理解し、応答時間やコンテンツの性質に合わせて適切に使い分けること。
その細やかな配慮の積み重ねが、プロダクト全体の信頼性と心地よい体験を形作っていきます。
これからも、心地よいUX/UIの設計と細部のデザインを一緒に楽しんでいきましょう。
それでは、良いデザインライフを!





