0
1
様々なソフトウェアに導入されているプログレスバーですが、あれは実際どのように実装されているのですか?
今まで使ったことが無く、調べても基本的なこと(毎秒ゲージが増えるだけとか)しか出てこなくて疑問に思いました。
仕組みはわかるんですが、実際に使用するとなるとよくわからないです・・・
ダウンロードなら総ファイル数から現在のパーセンテージを計算できますけど、
ファイルの送信や保存、画面のロードといったものはどうやって決められてるんですか?
メインで使用している言語はC++、C#、JavaScriptあたりです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
#1
総合スコア146544
投稿2023/05/22 03:24
ファイルの送信なら送信した量をとる手段もありますし、中には適当に出している例もあるようです。
#4
総合スコア12151
投稿2023/05/22 09:59
編集2023/05/22 10:11プログレスバーって,見せられる側の感覚としては「時間的な意味での進捗」(8分経過時点で80%表示になってたら→あと2分で終わるのかな,みたいな)を示していると捉える気がしますが,
実際にはそうでもなくて「99%まではさくっと進んで,それ以降ひたすら待たされる」みたいなのをわりとよく見かける気がします.
なので(?),実施する処理内容を{それらの所要時間とは無関係に,何らかの意味で}N個の小処理のシーケンスだとみなし,それらの小処理が完了する毎に表示を進める,みたいな使い方でも良いんじゃないかな,とか.
ただ,個人的にプログレスバーに期待する役割というのは,
相応に長くかかる処理に関して「コレ,止まっちゃってるんじゃねーの?」という疑惑を払拭することなので,
前記の「99%でずっと動かない」みたいなのは「意味ねーな」と思ってしまいます.
なので,自分で使う際には「ちょっとずつでも着実に進んでいることを示す」ようにこまめに更新するようにしています.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
#5

退会済みユーザー
総合スコア0
投稿2023/05/23 01:09
当たり前の話ですが、プログレスバーを使って全体の何 % まで終了したかを表示するためには、何らかの方法で定期的にその時点での進捗状況を取得できる必要があります。
例えば、以下のようなプログレスバーのライブラリがありますが、それらは定期的に進捗状況を取得して全体の何 % まで終了したかの表示を更新するようにして使います。
C# (.NET のライブラリ)
ProgressBar クラス (WinForms 用)
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.progressbar?view=netframework-4.8
ProgressBar クラス (WPF 用)
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.controls.progressbar?view=netframework-4.8
実装例は以下の記事を見てください。
WPF/Windowsフォーム:時間のかかる処理をバックグラウンドで実行するには?
https://atmarkit.itmedia.co.jp/ait/articles/1512/02/news019.html
JavaScript (jQuery プラグイン)
Progressbar
https://jqueryui.com/progressbar/
実装例は以下の記事を見てください。
なので、
ファイルの送信や保存、画面のロードといったものはどうやって決められてるんですか?
という場合、その処理中に定期的にその時点での進捗状況が取得できないとするとお手上げです。
そういう場合でも、処理の終わりは分かるケースがあると思いますので、進捗状況は適当に出しておいて、終わったら完了を通知するとかはできると思いますが。
ただ、そういう場合はプログレスバーで適当な数値を出すよりは、以下の画像のような表示の方が良さそうだと個人的には思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。