進捗インジケータ
進捗インジケータは、コンテンツの読み込み中や時間のかかる操作の実行中にあなたのアプリが停止していないことを人々に知らせます。
一部の進捗インジケータはまた、何かが完了するまでに人々がどれくらい待たなければならないかを見積もる方法も提供します。すべての進捗インジケータは一時的なもので、操作の進行中にのみ表示され、操作が完了すると消えます。
操作の所要時間は既知または不明であるため、2 種類の進捗インジケータがあります。
ベストプラクティス
可能な場合は、確定進捗インジケータを使用してください。 不確定進捗インジケータは、プロセスが発生していることを示しますが、タスクにかかる時間を人々に見積もるのには役立ちません。確定進捗インジケータは、人々がタスクが完了するのを待っている間に別のことをするか、別の時間にタスクを再開するか、またはタスクを放棄するかを決定するのに役立ちます。
確定進捗インジケータで進行状況を報告するときは、できるだけ正確にしてください。 タスクを完了するのに必要な時間について人々が自信を持てるように、進行のペースを均等にすることを検討してください。5 秒間で 90% の完了を示し、5 分間で最後の 10% を表示すると、人々はあなたのアプリがまだ機能しているかどうか疑問に思い、誤解を招く可能性さえあります。
進捗インジケータを動かし続けて、人々が何かが起こり続けていることを知るようにします。 静止インジケータは、停止したプロセスやフリーズしたアプリに人々は関連付けられる傾向があります。何らかの理由でプロセスが停止した場合は、人々が問題とそれに対して彼らが何をできるかを理解するのに役立つフィードバックを提供してください。
可能であれば、進捗バーを不確定から確定に切り替えます。 不確定プロセスが、その期間を特定できるポイントに到達した場合は、確定進捗バーに切り替えます。何が起こっているのか、どれくらいの時間がかかるのかを人々が判断するのに役立つため、人々は一般的に確定進捗インジケータを好みます。
円形スタイルからバースタイルには切り替えないでください。 スピナーと進捗バーは形状とサイズが異なるため、それらの間を移行するとインターフェイスが崩壊し、人々を混乱させます。
役に立つ場合は、タスクへの追加のコンテキストを提供する説明を表示します。 正確かつ簡潔であること。ロード や 認証 などのあいまいな用語はほとんど価値がないため、使用しないでください。
一貫した場所に進捗インジケータを表示します。 進捗インジケータに一貫した場所を選択することで、プラットフォーム間、アプリ内またはアプリ間で操作のステータスを人々が確実に見つけることができます。
可能であれば、人々に処理を停止させます。 負の副作用を引き起こさずにプロセスを中断できる場合は、[キャンセル] ボタンを含めます。処理を中断すると、ファイルのダウンロード部分が失われるなどの悪影響が生じる場合は、[キャンセル] ボタンに加えて [一時停止] ボタンを提供すると便利です。
処理を停止すると悪影響が生じる場合は、人々に知らせてください。 処理をキャンセルすると進行状況が失われる場合は、キャンセルを確認するか、処理を再開するかを選択できる アラート のオプションを提供すると便利です。
プラットフォームの考慮事項
tvOS または watchOS に関する追加の考慮事項はありません。
iOS、iPadOS
進捗インジケータには 2 つの異なるスタイルがあります。
進捗バー には、タスクの進行状況を示すために、先行側から末尾側まで塗りつぶされるトラックが含まれます。進捗バーは、iOS および iPadOS では常に確定的です。開発者向けガイダンスについては、UIProgressView (UIProgressView) を参照してください。
タスクの実行中に アクティビティインジケータ が回転します。アクティビティインジケータは、iOS および iPadOS では常に不確定です。開発者向けガイダンスについては、UIActivityIndicatorView (UIActivityIndicatorView) を参照してください。
ナビゲーションバーとツールバーでトラックの未充填部分を非表示にします。 デフォルトでは、進捗バーのトラックには、塗りつぶされた部分と塗りつぶされていない部分の両方が含まれます。ナビゲーションバーまたはツールバーで進捗バーを使用する場合 (たとえば、ページの読み込みを表示する場合) は、トラックの塗りつぶされていない部分を非表示にするように構成します。
コンテンツコントロールの更新
次の自動コンテンツ更新が発生するのを待たずに、通常はテーブルビューで、コンテンツを直ちに再読み込みするために、更新コントロールが手動で開始されます。更新コントロールは特殊なタイプのアクティビティインジケータであり、デフォルトでは非表示になっており、ビューを下にドラッグして再読み込みすると表示されます。たとえば、メール では、受信トレイのメッセージのリストを下にドラッグして、新しいメッセージを確認できます。
自動コンテンツ更新を実行します。 すぐにコンテンツの更新を人々が開始できることは喜ばしいことですが、定期的に自動更新が行われることも期待しています。すべての更新を開始する責任を人に負わせないでください。定期的に更新して、データを最新の状態に保ちます。
付加価値がある場合にのみ、短いタイトルを付けてください。 必要に応じて、更新コントロールにタイトルを含めることができます。ほとんどの場合、これは必要ありません。コントロールのアニメーションがコンテンツの読み込み中であることを示しているためです。タイトルを含める場合は、更新の実行方法を説明するために使用しないでください。代わりに、更新されるコンテンツに関する価値のある情報を提供してください。たとえば、ポッドキャストの更新コントロールでは、タイトルを使用して、ポッドキャストの最新の更新がいつ行われたかを人々に伝えます。
開発者向けガイダンスについては、UIRefreshControl (UIRefreshControl) を参照してください。
macOS
進捗インジケータには 2 つの異なるスタイルがあり、それぞれ確定型と不確定型があります。
進捗バー とも呼ばれる バーインジケータ は、水平バーで進行状況を示します。確定バーインジケータは先端側から末尾側まで塗りつぶされますが、不確定インジケータにはアニメーション化された拍動があります。開発者向けガイダンスについては、NSProgressIndicatorBarStyle   廃止   を参照してください。
確定進捗バー
確定進捗円
スピナー とも呼ばれる スピニングインジケータ は、進行状況を円形で示します。回転する確定インジケータは、進行が進むにつれて塗りつぶされる円ですが、不確定インジケータはアニメーションが回転します。開発者向けガイダンスについては、NSProgressIndicatorSpinningStyle   廃止   を参照してください。
不確定進捗バー
回転進捗インジケータ
バックグラウンド操作の状況を伝達するため、またはスペースが限られている場合は、回転する進捗インジケータが望ましいです。 スピナーは小さくて邪魔にならないので、サーバーからのメッセージの取得など、非同期のバックグラウンドタスクに役立ちます。スピナーはまた、テキストフィールド内やボタンなど特定のコントロールの隣など、小さな領域内で進行状況を伝えるのにも適しています。
回転する進捗インジケータにラベルを付けることは避けてください。 通常、人々がプロセスを開始するとスピナーが表示されるため、普通ラベルは不要です。
リソース
開発者用文書
UIProgressView — (determinate) UIKit (UIProgressView)
UIActivityIndicatorView — (indeterminate) UIKit (UIActivityIndicatorView)
UIRefreshControl — UIKit (UIRefreshControl)
NSProgressIndicator — AppKit (NSProgressIndicator)
NSProgressIndicatorBarStyle — AppKit (NSProgressIndicatorBarStyle)   廃止  
NSProgressIndicatorSpinningStyle — AppKit (NSProgressIndicatorSpinningStyle)   廃止