基本情報技術者 2014年 秋期 午前(科目A) 問31
問題文
符号化速度が192kビット/秒の音声データ2.4Mバイトを、通信速度が128kビット/秒のネットワークを用いてダウンロードしながら途切れることなく再生するためには、再生開始前のデータのバッファリング時間として最低何秒間が必要か。
選択肢
ア:50(正解)
イ:100
ウ:150
エ:250
##: 符号化速度192kビット/秒の音声データを128kビット/秒でダウンロードしながら再生【午前2 解説】
要点まとめ
- 結論:再生開始前にネットワークで少なくとも50秒間の事前ダウンロード(バッファ)が必要です。
- 根拠:ファイル全体の再生時間は100秒で、到着速度が再生速度を下回るため差分を事前取得する必要があります。
- 差がつくポイント:バッファ時間は「再生前のダウンロード時間(秒)」で考えること、ビット/バイトとkの定義に注意。
正解の理由
正解は ア です。
手順は次の通りです。ファイルサイズ 2.4Mバイト = 2.4×10^6 byte = 19.2×10^6 bit として、再生に必要な時間(再生時間)は 再生中にネットワークが追加で供給できる量は遅さ分を補えないため、再生開始前にネットワークでダウンロードしておく必要量は再生中の不足分です。再生中の不足速度は 、不足総量は です。これを128kbit/sで事前にダウンロードするときの時間は よって最低50秒のバッファリングが必要で、選択肢はアとなります。
手順は次の通りです。ファイルサイズ 2.4Mバイト = 2.4×10^6 byte = 19.2×10^6 bit として、再生に必要な時間(再生時間)は 再生中にネットワークが追加で供給できる量は遅さ分を補えないため、再生開始前にネットワークでダウンロードしておく必要量は再生中の不足分です。再生中の不足速度は 、不足総量は です。これを128kbit/sで事前にダウンロードするときの時間は よって最低50秒のバッファリングが必要で、選択肢はアとなります。
よくある誤解
- 「再生前に何秒分の音声データをバッファするか」を再生時間(秒)でなく、事前ダウンロードの壁時計秒で混同するミス。問題は後者で解く必要があります。
- ビット/バイトや k の定義(k=1000 と k=1024 の混同)により微小差が出るが、本問の選択肢では k=1000 前提で 50 秒が正解になります。
- 別解で「再生中に必要な初期バファ量(再生秒換算)」を求めると約33.3秒になり、設問の意味(再生開始前のダウンロード時間)とずれて誤答になります。
解法ステップ
- ファイル全体のビット数を求める:2.4 Mバイト × 8 = 19.2 × 10^6 bit。
- 再生に要する時間を求める:T_play = ファイルビット数 ÷ 192kbit/s = 100 秒。
- 再生と並行しての不足速度を求める:192 − 128 = 64 kbit/s。
- 再生中の不足総量を求める:64 kbit/s × 100 s = 6.4 × 10^6 bit。
- その不足分を事前にダウンロードする時間を求める:6.4×10^6 ÷ 128kbit/s = 50 s。
選択肢別の誤答解説
- ア:50 — 正解。上記の通り。
- イ:100 — 「再生開始前にファイル全体をダウンロードする時間(S/R_net = 150s)」や再生時間と混同した誤り。100は再生時間であり、事前ダウンロード時間の答えではない。
- ウ:150 — ファイルを完全にダウンロードする時間 S/128kbit/s = 150秒と混同した誤答。問題は“途切れず再生するための最小事前バッファ時間”を問うているため過大。
- エ:250 — 明らかに過大。単純計算ミスか、単位変換ミスで掛け算を二重に行った結果に相当する誤り。
補足コラム
- 「バッファ時間」の定義に注意:本問は「再生開始前にネットワークでダウンロードしておく壁時計上の時間(秒)」を指します。実務では「何秒分の再生データを確保するか(playback-seconds)」という表現もあり、これらを混同すると解が変わります。
- 単位の取り扱い:通信速度は通常 kbit/s(k=1000)が使われることが多いですが、記憶容量表記の M バイトが 10^6 か 2^20 かで微小差が出ます。本問の選択肢は k=1000, M=10^6 前提で整合します。
- 実運用では変動ビットレート、パケット遅延・損失、ヘッダなどのオーバーヘッドがあるため、余裕を持ったバッファ設計(安全係数)を行います。
簡単な計算確認(参考 Python)
S_bytes = 2.4e6 S_bits = S_bytes * 8 r_play = 192e3 r_net = 128e3 T_play = S_bits / r_play deficit = (r_play - r_net) * T_play t0 = deficit / r_net print(T_play, deficit, t0) # 100.0 6400000.0 50.0
FAQ
Q. 「バッファ時間」は再生秒数で答えるべきですか、事前ダウンロードの秒数ですか?
A. 本問は「再生開始前のデータのバッファリング時間として最低何秒間が必要か」、つまり再生開始前に実際にダウンロードしておく壁時計秒を問います。
A. 本問は「再生開始前のデータのバッファリング時間として最低何秒間が必要か」、つまり再生開始前に実際にダウンロードしておく壁時計秒を問います。
Q. ビットとバイト、kの定義を変えると答えは変わりますか?
A. 少し変わります。例えば M=2^20 や k=1024 を採ると厳密値は変わるが、本問の選択肢(50,100,150,250)では 50 が意図された答えです。
A. 少し変わります。例えば M=2^20 や k=1024 を採ると厳密値は変わるが、本問の選択肢(50,100,150,250)では 50 が意図された答えです。
Q. ネットワークが可変ビットレートの場合はどうしますか?
A. 最悪ケース(最低帯域)で設計し、さらに遅延やパケットロスを考慮した安全マージンを加えます。プレイヤー側では適応ストリーミングや再生バッファを大きめに取るのが一般的です。
A. 最悪ケース(最低帯域)で設計し、さらに遅延やパケットロスを考慮した安全マージンを加えます。プレイヤー側では適応ストリーミングや再生バッファを大きめに取るのが一般的です。
関連キーワード: バッファリング、ストリーミング、ビットレート、帯域幅、単位変換、再生遅延、TCP/UDP、ネットワーク設計、バッファサイズ計算

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

