Contents

進行状況バーの表示方法 (およびダウンロードが 99% で停止する理由)

<本文>/images/three-progress-bars-on-a-blue-background-each-with-speech-bubbles-showing-question-marks-and-99_.png

概要

  • プログレスバーは正確な時間ではなく、完了した作業部分を測定するため、誤解を招く可能性があります。

  • ダウンロードが 99% で停止するのは、再構成、チェックサム、またはパケットのリカバリが原因で、画面外で作業が行われることがよくあります。

  • 完璧なプログレスバーは不可能です。これらは主にユーザーを落ち着かせるためのものであり、正確な完了時間を予測するものではありません。

プログレスバーはどこにでもありますが、私たちはそれを改めて考えることはほとんどありません。ただし、彼らには少し謎があります。ダウンロードやファイル転送が 99% で停止する場合があることに気づいたかもしれません。時にはジャンプしたり失速したりすることもあります。場合によっては99%で失敗することもあります。これは、プログレスバーが常に少しだけ嘘をついているために起こります。

プログレスバーのない世界

コンピューターに進行状況バーやインジケーターがなかった時代がありました。プログラムの実行中に画面が空白になるかフリーズするだけで、コンピューターがクラッシュしたのか、プログラムがまだ実行されているのかわかりませんでした。

/images/ms-dos-boot-up.png

MS-DOS または Apple II シリーズ コンピュータを実行している IBM PC は、操作の実行中にアイドル画面を表示するだけであり、プログラムが完了したときにのみ、それらの操作が成功したかどうかがわかります。実際、タスクの進捗を示唆する唯一の手がかりは、ライトの点滅とディスクから発せられるヒューヒューという音です。

最終的に、コンピューター科学者はユーザー エクスペリエンスを重視するようになり、ユーザーが操作が完了するのを待っている間、時間の経過とともに表示されるグラフィカルなプログレス バーを提案しました。科学者たちは、これらのバーの精度や精度は重要ではないことに気づきました。たとえ不正確であっても、ユーザーはコンピューターが稼働していることがわかるため、ユーザーの不安を軽減するのに役立ちました。それが最初からこのプログレスバーの哲学であり、今日に至るまでそれは変わりません。

/images/a-steck-deck-downloading-a-game-with-a-message-asking-if-the-user-wants-it-to-wake-up.jpg クレジット: Valve

プログレスバーが実際に測定する内容

一部の進行状況バーは経過時間のみを測定しますが、ほとんどの場合、一定の作業単位を時間の経過とともにカウントしています。たとえば、一定期間にわたる一定の操作数やファイルのダウンロード、すでにダウンロードされたファイルのチャンクの数などです。

すべての操作またはファイル チャンクを含む To Do リストがある場合、進行状況バーには、現在リストのどの部分まで進んでいるのかが表示されます。バーは、タスクの 1 つがチェックされたときにのみ移動するため、新しい情報で常に更新されるわけではありません。

0% から 100% まで進む進行状況バーには正式な名前があります。これらは「完了パーセント」バーと呼ばれ、最も一般的なタイプの進行状況インジケーターです。彼らが測定するのは、作業の総量と比較して完了した作業の「チャンク」の数です。ただし、これらの進行状況バーに含まれる推定時間は、ほとんど正確ではありません。プログレスバーが 50% まで表示されるまでに 5 分かかり、すぐに 99% に達する可能性があるのはこのためです。

プログラムは保留中の作業量を把握している可能性がありますが、各作業単位にかかる時間を正確に事前に予測することはできません。まず、処理作業は決して均一ではありません。大きな単一ファイルの操作はより簡単で高速ですが、多数の小さなファイルを含む操作は複雑になり、時間がかかります。また、コンピューターのハードウェアは大きく異なるため、考慮されていません。進行状況バーがスムーズにロードされない主な理由は、これら 2 つです。

ダウンロードが 99% で止まることがあるのはなぜですか

ダウンロードが 99% または 100% で止まっていると感じることがあるのは、進行状況バーがスムーズに読み込まれない理由でもあります。説明させてください。インターネットから何かをダウンロードする場合、それは単一のモノリスとしてダウンロードされるわけではありません。それはチャンクまたはパケットに分割され、1 つずつ送信され、マシンはそれらを 1 つのファイルに戻します。

/images/ubuntu-gnome-software-downloading-catalog.png

接続が安定している場合、パケット転送は比較的予測可能ですが、最終的な再構築シーケンスは予測できません。コンピュータは、転送中にパケット損失がなかったことを確認する必要があり、ドロップされたパケットがある場合は、それらを回復する必要があります。場合によっては、ダウンロード マネージャーがチェックサム検証を実行して、ダウンロードが改ざんまたは破損していないことを確認します。

それはすべて、最後のパーセントポイントで起こっています。そのため、ダウンロードが停止しているように見えても、コンピューターはバックグラウンドでまだ動作しており、進行状況バーにはその兆候が表示されないだけです。

正確な進行状況バーを難しくしているもの

0% から 100% までスムーズに進む正確なローディング バーを作成するには、プログラムは実行すべき作業量を正確に計算し、それにかかる時間を正確に予測する必要があります。既知のサイズのファイルを安定した転送速度でダウンロードまたはコピーする場合、それは多かれ少なかれ簡単です。ただし、複数のファイルやファイル タイプを含むより複雑な操作はほぼ不可能です。

たとえば、ソフトウェアのインストールは、特定のコンピューティング環境に大きく依存します。正確なローディング バーは、特定のハードウェア構成と、並行またはバックグラウンドで実行されている他のプログラムのリソース使用状況を事前に把握している必要があります。システムには、インストールしようとしているゲームやアプリのソフトウェア依存関係がある場合とない場合があり、進行状況バーはそれを考慮する必要があります。

/images/sshot512cccaa7b199.png

すべてを終えた後でも、正確な進行状況をリアルタイムで更新できるように、進行状況シグナルを読み込み中のユーザー インターフェイスに常に送信する必要があります。だからこそ、完璧なプログレスバーは存在せず、おそらく今後も存在しないのです。彼らの仕事はあなたの不安を和らげて安心させることなので、何らかの作業が行われていることを伝えさえすれば、ほとんどの開発者にとってはそれで十分です。

次回プログレス バーが 99% または 100% でフリーズした場合、読み込みバーがそうでないことを示していても、コンピューターはまだ懸命に動作しているので安心してください。操作全体をキャンセルするのではなく、さらに数秒または数分待つことをお勧めします。

*️⃣ 出典リンク:

IBM PC、MS-DOS、Apple II、ユーザー エクスペリエンス、チェックサム検証、リソース使用量、