ボーレート(baudrate)と転送速度(bps)

はじめに

非常に高い頻度で誤解される言葉に「ボーレート」と「bps」があります。ボーレートを取得する API の戻り値として bps が指定されていることが多々あります。しかしこれは正しくない、ということを解説したいと思います。

ボーレートと転送速度

シリアル通信(主に RS-232 系 / EIA-232 系)において、転送速度を設定するパラメータとして「ボー(baud)」あるいは「ボーレート(baudrate)」を用いることがあります。そしてその単位は転送速度の単位である「bps」を用いることが多々あります。このことから、“ボーレート(baudrate) = 転送速度(bps)”であるという誤解が広まっていますが、これは不適切です。

「ボーレート」とは本来「変調回数」を示すものです。例えば 300baud (300ボー、と読む)であれば、1秒間に300回の変調を行うということを指します。ここで重要なのは、1回の変調で必ずしも1ビットを示すわけではないということです。複数回※1の変調で1ビットを表すこと※2もあれば、複数ビットを1回の変調で表す※3こともあります。このため、例に挙げた 300baud は必ずしも 300bps にはなりません。つまりイコールではないのです。

例えば 300baud で、1回に2ビットを変調するとなると 600bps となります。

しかし、実際には Windows の API に用いる構造体や Java ME の MIDP 2.0 で用いられているシリアル通信用の API では、不適切にもこの2者を混合してしまっています(シリアル・ポートに限れば、1回に1ビット転送するので必ずしも誤りではありませんが、概念的に単位を bps とするのであれば、それをボーレートとするのは不適切なのです)。

私が書いた MIDP 2.0 API リファレンスの CommConnection において、オプション・パラメータの「baudrate」の説明に「本来の意味のボーレートではありません。」と追記があるのはこのためです。

まとめ

今回取り上げたボーレート(baudrate)以外にも、いくつか広まってしまっている誤用があります。これらはそれぞれがそれぞれに意味を持っていて交換不可能なものが多くあります。このような言葉が独り歩きしてしまっていると、せっかくの用語が台無しになってしまいます。細かいことのように感じるかもしれませんが、こういった言葉の誤用を少しずつでも減らしていくことで、無用な誤解を防ぐことができないものかと思います。

とはいえ、私も「100%間違っていない日本語で文章を書くこと」ができない人間であり、それが如何に難しいことであるかも理解していたりする矛盾もあるわけですが・・・。

とりあえず、このメモが1つでも間違いを減らす助けになれば幸いです。


  • 必ずしも整数倍ではない。
  • 主にエンベデッド・クロック系や磁気記録系の技術で用いる。ただ、実際にはクロックやスタートビット、ストップビット、パリティなどを追加しても bps を変化させずに表記することも多い。
  • 主に電話専用の高速モデム。
このエントリーをはてなブックマークに追加