質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

4回答

1843閲覧

作業量を計算する方法とは?

sponge_yukari

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/11/09 07:26

こんにちわ。

やりたいこと

インストーラーなどでよく見る**[現在○%][残り○%]**表記。
これをプログラムで再現しようとしたとき、どのような方法を取るのが最適でしょうか?

作業内容は、自作の処理と、プログラム言語に付属している画像読み込み等の自分では手が出せないであろう処理の2つ。

  • 1.時間で動かして、最後をごまかす
    自作の処理なら処理内容や何かしらの基準からの予測。

 画像読み込みならサイズから予測して、想定より少し遅い時間でカウントアップ。
最後は100%に達してなくても、作業が終わったなら無理やり100%にして終わらせます。

  • 2.1行ごとにカウントする

 自分で作ったものならステップ数がわかっているので、手動でカウントして、現在完了した個数から%を出します。
ステップ数が自動でカウントできるならそれがよいのですが、よい方法が見つかりませんでした。

インストーラーは、2が近い感じでしょうか?
1つ1つの作業時間を見ずに、作業個数で%を割り出しているように見えます。
もちろん、物によるでしょうけども。

条件

考え方の基礎が知りたいので、言語は限定していません。
でもJavaやPythonで知ることができるなら是非とも知りたいです。


以上です、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

自分では手が出せない処理についてです。外部API呼び出しとか。
これは終了時間が見通せないので通常はパーセンテージが出せません。
それでも進行状況バーを出そうとしたらどうするか?

https://qiita.com/mono0926/items/ead7c576170277a5e83d

以前、「ランダムに進行状況バーを進めると非常にそれっぽい表示になる」というノウハウが紹介され話題になっていました。

進行状況バーの目的がユーザーを不安・不快にさせないことである場合、正しさとは別のところに答えがあるのだなと。

投稿2018/11/09 08:51

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sponge_yukari

2018/11/15 00:31 編集

回答ありがとうございます。 フリーズしたように見せない点を重視して、後は待ってもらうしかなさそうですね。 計りようがないということが知れただけでも助かりました。 ランダム表示についてですが「表示は適当でもいいけど、処理が終わったのなら即座に返すべき」という考えが強かったので、考えていませんでした。
guest

0

ベストアンサー

プログレスバーの考え方はMSDNが詳しい気がします。

進行状況バー

基本的にはユーザのストレスを軽減するためのものなので、制約と効果で実装方法などを以下から選択すればよいかと。(案1と案2)ですね。

完了した処理のおおよその割合を示すバー (確定型) と、単に処理が進行中であることを示すバー (不確定型) があります。

適当にやるとストレス軽減のためのプログレスバーがストレスになるというのもあるみたいです。

  • 時間
  • 計測可能な指標
  • チェックポイント(作業工程のような)

このあたりから、要件をすりあわせていけばいいかなぁ。

4秒超えたらプログレスバーという記事もあります。
なんでプログレスバーってあんなにいいかげんなの?も面白かったです。

投稿2018/11/12 02:07

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sponge_yukari

2018/11/15 00:32

回答ありがとうございます。 MSDNの内容が非常に詳しくて参考になりました。 やはり作業の重量が計りにくいものは、何かしら適当にやるしかなさそうですね。
guest

0

文字通り「%」でいいなら、基準値を適当に決めてやればいいんじゃないですかね。

画像読み込みなら、
全ての画像の個数 ÷ 処理済みの画像の個数でもいいし、
全ての画像のサイズ合計 ÷ 処理済みの画像のサイズ合計でもいいし、
全体個数を元にした%と現在処理中ファイルのサイズを元にした%の2つを併記でもいい。

自作プログラムなら行ごとでもメソッドごとでも、
やりやすい方で「全体の数」と「現在の数」を設定すればいい。

あるいは「(内部処理はちゃんと動いているが)画面上の%が一向に進まない」という表示はダメ!ということなら、時間予測も必要になってくるかもしれない。

なのでやっぱり結局は仕様次第、要件次第です。

言語問わずとのことなので、ご参考までに。

投稿2018/11/09 07:58

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sponge_yukari

2018/11/15 00:23

回答ありがとうございます。 自分で基準を決めて、それっぽく見せるしかなさそうですね。 こだわり始めると、途中でこのシステムを追加するには非常に手間がかかるものができそうです。
guest

0

物によるかな?たとえば大量のDBレコードを読みたいとか、この場合にはselectでデータを取得する前に、
抽出件数を最初に抑えて、処理したレコード数に対して計算したり、大きいサイズdos形式などのファイルを読む場合には、そのファイルサイズを取得してレコード読み込み件数から読み込みバイト数を計算したり、
複数の処理がある場合には、その進捗から算出したりですね!

投稿2018/11/10 11:49

akirafudo6

総合スコア341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akirafudo6

2018/11/12 08:38

1分以上だんまり(APからの応答)がないと、OSでそのAPをウィルスと認識されます。ってのが 本音かな?
sponge_yukari

2018/11/15 00:28

回答ありがとうございます。 select前に件数把握可能なんですね? SQLをそこまでやったことないので知りませんでした。 DBを使うということ自体、失念しておりました。 SQL発行に時間がかかるケースというのはあんまりないイメージで、時間がかかるのはその後のプログラム側での処理かなと思っています。 SQL発行後なら予測時間は立てられるはずなので、まだ楽な部類ではありそうです。
akirafudo6

2018/11/15 14:40

>select前に件数把握可能なんですね?  こんなやつです。実際にデータを検索するのではないので、応答が速いです。   SELECT COUNT(*) AS CNT FROM scm.tblname;  このほかに、もともとの統計情報(ディレクトリ)から持ってくる方法もありますが件数自体が曖昧な ためあまり使うことはないと思います。
sponge_yukari

2018/11/19 00:36

>SELECT COUNT(*) AS CNT FROM scm.tblname; Countによる件数検索なんですね。 それほど複雑なSQLではないのであれば、大体の場面で使えますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問