UIパーツ10分で読める

プログレスバー・ローダーのデザインガイド:進捗表示UIの種類と実装パターン

プログレスバー・ローディングインジケーターのUIデザインを解説。リニアプログレスバー・円形プログレス・ステップインジケーター・アップロード進捗・スケルトンローダーとの使い分けなど、進捗表示UIの種類と実装パターンを紹介します。

プログレスバーローディングUIパーツフィードバックアニメーション

プログレスバー(進捗バー)は、処理の完了度・目標達成状況・フォームの入力完了度などを視覚的に伝えるUIコンポーネントです。ユーザーに「今どのくらい進んでいるか」を伝えることで、待機中の不安を軽減し、タスクへのモチベーションを維持します。本記事では、プログレスバーの種類と適切な使い分け・実装パターンを解説します。

プログレスバーの種類

リニア(直線型)プログレスバー:

最も一般的な横長の帯状プログレスバー。ファイルのダウンロード・アップロード・フォームの入力進捗・ページ読み込みなどに使います。

サーキュラー(円形)プログレスバー:

円の外周を時計回りに塗りつぶす形のプログレス表示。ダッシュボードのKPI・モバイルの読み込みインジケーター・アプリのオンボーディングゴール達成度などに使います。コンパクトなスペースに数値と組み合わせて表示できるのが特長です。

ステップインジケーター:

複数ステップのフォーム・ウィザードの現在位置を示すUI。円または数字のノード+線で構成され、完了・現在・未完了の3状態を視覚化します。

インデタミネート(不定型)プログレス:

完了までの時間が不明な処理で使う、進捗率が示せないローディングUI。アニメーションで「動いている」ことを示しますが、何%完了かは分かりません。

リニアプログレスバーの設計

高さとサイズ:

  • 最小(シンプル表示): 2〜4px
  • 標準: 6〜8px
  • 大(ダッシュボード・目標達成率): 12〜16px

カラー設計:

  • 進行部分(filled): プライマリカラーまたはセマンティックカラー(成功:緑・警告:黄・エラー:赤)
  • 未進行部分(track): ライトグレー(#E5E7EB)

アニメーション:

進捗が増加する際は滑らかなCSSトランジション(300〜500ms ease-out)でバーが伸びます。インデタミネートの場合は左から右へ光が走るシマーアニメーションを使います。

数値の表示:

バーの右端または上部に「34%」「3.2 MB / 10 MB」のような進捗数値を表示します。数値があるとユーザーの体感待ち時間が短縮されます。

ステップインジケーターの設計

視覚的状態:

  • 完了ステップ: プライマリカラー + チェックマークアイコン
  • 現在ステップ: プライマリカラーの枠線 + ステップ番号(白)
  • 未完了ステップ: グレーの枠線 + ステップ番号(グレー)

ステップのラベル:

ノードの下(または横)にステップ名(「配送先」「支払い」「確認」等)を表示します。モバイルでは幅が限られるため、現在ステップのみラベルを表示する実装が有効です。

クリッカブルvs非クリッカブル:

完了したステップをクリックで戻れる場合は、完了ステップをクリッカブル(カーソル変化・ホバー状態あり)にします。一方向のフロー(決済フロー等)で戻れない場合は非クリッカブルにします。

サーキュラープログレスの設計

SVGによる実装:

円形プログレスはSVGの stroke-dasharraystroke-dashoffset を使って実装します。

.circle-progress {
  stroke-dasharray: 283; /* 2π × r(r=45の場合) */
  stroke-dashoffset: calc(283 * (1 - var(--progress, 0)));
  transition: stroke-dashoffset 300ms ease;
  transform: rotate(-90deg);
  transform-origin: center;
}

中央の数値表示:

サーキュラープログレスの中央に進捗率・達成値などを重ねて表示することで、コンパクトなスペースに多くの情報を収められます。

アクセシビリティ

`role="progressbar"` と ARIA属性:

プログレスバー要素に role="progressbar"aria-valuenowaria-valueminaria-valuemax を設定し、スクリーンリーダーに進捗率を伝えます。

<div
  role="progressbar"
  aria-valuenow="45"
  aria-valuemin="0"
  aria-valuemax="100"
  aria-label="ファイルのアップロード進捗"
>
  <!-- ビジュアルプログレスバー -->
</div>

インデタミネートの通知:

進捗率が不明な場合は aria-valuenow を省略し、aria-label で「読み込み中」を伝えます。

まとめ

プログレスバーはユーザーの待機体験と目標達成モチベーションを支える重要なUIコンポーネントです。処理の性質(確定的・不確定)・表示スペース・利用シーンに応じてリニア・サーキュラー・ステップインジケーターを使い分け、アクセシビリティ対応も忘れずに実装することが重要です。UI ZUKANではプログレスバーの実装例を多数掲載しています。

関連記事

実際のUIを見てインスピレーションを得る

UI ZUKANのギャラリーには、国内主要アプリのUI画面を豊富に収録。 記事で紹介したUIパターンを実際の事例で確認できます。

ギャラリーを見る