4.2.1 オーディオデータの再生
・ このプログラムはほとんどAPIを用いて構成されています。APIリファレンスを参照しながら、またクラス名や変数名などからその機能を類推して、一行ずつ何をやっているのか考えてください。
・ ストリームとは、デバイスとデバイスを繋ぐ仮想的な水道管のようなイメージです。台所で蛇口をひねると水源の水を使いたいぶんだけ取り出せるように、ストリームからreadすることで指定したサイズのデータを配列に格納することができます。
・ 通常、ストリームを扱うプログラムでは、ストリームから流れてくるデータを1Byteずつ読み込んでそのつど処理する、といったことはしません。読み込みと処理、書き出しを細かく頻繁に繰り返すことはプログラムの流れを悪くし、利用効率を低下させるからです。
・ そのため、通常はバッファと呼ばれる領域にある程度のデータを貯めておき、そのバッファが満タンになったときまとめて処理するという手法が用いられています。本プログラムでもバッファリングを行っており、byte配列型変数のabDataがバッファです。バッファ領域の大きさは任意ですが、あまり小さすぎるとプログラムの流れが悪くなり、あまり大きすぎてもバッファが満タンになるまで時間がかかり遅延が生じるため、適切なサイズを指定する必要があります。