前号: No 384 / 次号: No 386 / 一覧(note.com)へ / ブログページに戻る

メールマガジン「がんばりすぎないセキュリティ」No385 (24/12/23)

FAXはデータ圧縮技術の基本(385号)


皆さんもZIPなどのデータ圧縮ソフトを使う場合があると思います。

不思議ですよね、データが欠落することなく圧縮したり元に戻したりできるって。

現代のデータ圧縮技術はかなり複雑なものですが、その基本的な考えは意外にシンプルです。

今回は、データ圧縮の元祖とも言えるFAX(G3 FAX)で採用されているランレングス法というデータ圧縮技術のお話をします。


1. データ圧縮という技術

大きなデータを小さくしたいという要望は誰もが考えるもので、実に様々なシーンで使われています。 実際に、画像データなどでもデータ圧縮技術は利用されていますが、データ圧縮を必要とする代表格といえばやはり通信でしょう。 一般に通信路は、使用時間や使用データ量に応じて課金されます。 例えば、固定電話なら3分10円(今は9円だったかな)とか、ケイタイなら20秒毎に10円の費用がかかりますよね。 スマホのパケット使用料もたくさん使えば料金は高くなります。 つまり、こういった通信路を使う時には、少しでもデータ量を少なくしたいわけです。 これは最近に始まったことではなく、従量制の通信路では常に求められていました。 その最古の世代となるのがFAX通信です。

2. FAXのデータ圧縮

FAX(ファクシミリとも)は電話回線(固定回線)を使って、画像(特に注文書や請求書といったビジネス文書)を送付するのによく使われていました。 電話では「言った、言わない」になりがちでも、FAXなら記録が残せるというメリットがありますから、20世紀(特に1980年代以降)にはビジネスの必須ツールとなりました。 とはいえ、電子メールなどが普及するにつれてFAXの利用頻度は落ち、2024年現在では一部の業態でしか使われなくなってきています。 さて、このFAXですが、普及において大きな課題がありました。 それは、転送に時間が必要だという点です。 FAXでは1ページの内容をおおよそ横1600ドット、縦2300ドットくらいに分解します。1ページで360万画素となります。 この360万画素のデータを何の工夫もせずに送ると、380秒(9600bpsで送った場合)かかります。380秒というと6分強です。 1ページ6分なら、10ページの文書を送るのに1時間以上かかるわけです。 これではさすがに使いづらいと言わざるを得ません。 そこで、FAXでは非常にシンプルながら、効果的なデータ圧縮技法が採用されます。それがランレングス方式と呼ばれるものです。

3. ランレングス法

最初に書いておきますが、このFAXの方式というのは1980年代に定められたもので、今のデータ圧縮に比べて非常に原始的なものです。 当時はコンピュータは高価なものでしたので、FAXに搭載などできませんでした。できるだけ安価な電子回路で実現できるチープな方式が必要とされたのです。 現代的なデータ圧縮方法としては、画像でよく使われているDCT法(離散コサイン変換)やデータ圧縮ソフトで使われる動的ハフマン法などがありますが、いずれもずっと複雑な技術です。 その点、ランレングス法はシンプルですのでデータ圧縮の考え方を知るには最適です。 さて、そのランレングス法ですが英語では Run Length encoding と呼ばれます。 これは、同じデータが続く(run)場合に、その繰り返し回数(length)を記録することで、全体のデータ量を減らす方式です。 例えば、 「あああいいいううう」という9文字のデータがある場合、これを「あ3い3う3」と書くことにしてしまえば、データ量を6文字に減らせます。 9文字が6文字になるのですから、2/3に減ったことになります。 「あああああああああいいいいいいいいいううううううううう」なら「あ9い9う9」です。元が27文字で圧縮後が6文字ですから、6/27=約26%です。かなりの圧縮率ですよね。 実はこのランレングス法の考え方が、紙をスキャンするFAXの特性と非常に相性が良いのです。 FAXでは1ページの内容全てを「白黒の絵」と考えます。 そして、上から順に0.1mm程度をスキャンしては、白部分と黒部分を識別していきます。 A4の紙なら、横1600ドット、縦2300行くらいに分けてスキャンをするわけです。 例えば、全て白の行を送るとします。非圧縮なら「白白白白...(1600ドット分繰り返し)」というデータになります。ですが、ランレングス法なら「白1600」というデータを送るだけです。圧倒的にデータ量が減ることがわかりますよね。 一般に文書というのはほとんどが白地です。つまり白というデータが大半を占めていて、上記のように「白1600」で済んでしまう行がとても多いのです。 もちろん、文字が書かれた部分はここまで極端なデータ圧縮はできませんが、それでも白地の部分は多いですから、データ圧縮して送った方が明らかに効率が良いのです。 このランレングス法は実際に非常に効果的で、非圧縮なら1ページ6分以上かかるところを1分以内で送付できることも多くなります。

4. ランレングス法の限界

一方で、ランレングス法にも限界があります。 つまり、ランレングス法では圧縮できないデータ、むしろデータが大きくなってしまうデータというのがあります。 ランレングス法にとって、最悪のデータは白と黒が交互に来るデータです。 「白黒白黒白黒白黒」といったデータです。 これをランレングス法で圧縮するとこうなります。 「白1黒1白1黒1白1黒1白1黒1」 あれあれ、圧縮どころか元データよりも膨らんでしまいます。 もちろん、ランレングス法の設計者もこんなパターンの存在はわかっています。 なのでデータ圧縮できない場合は、非圧縮のままでデータを送り込むといった工夫をこらして無用にデータが大きくならないようにしています。 写真データを含むページをFAXで送ったらやたら時間がかかったという経験のある読者もおられるかもしれません。この理由は上記の通りでして、ランレングス法には写真のように白黒が入り乱れるようなパターンには全く向いていません。 これはランレングス法に限った話ではありません。 どんなデータ圧縮法でもその方式が効果を発揮しやすい条件があります。 ランレングス法は、白黒の文書(特にビジネス文書)に最適化されたデータ圧縮法なのです。 どんなデータ圧縮法でも適材適所がある点は同じです。 全てのデータ形式を等しく圧縮できる圧縮法というのは存在しません。

5. まとめ

通信路を使う場合、通信の量に応じて料金がかかることが多いです。 そのため、通信料を減らすにはデータ量を減らすことが効果的です。 FAXでもそのためにデータ圧縮という技術が用いられています。 FAXにも複数世代があるのですが、一般に使われているのはG3FAXと呼ばれるもので、これにはデータ圧縮技術が使われています。 工夫なしでは1ページ送信するのに5分以上かかるところが、G3FAXでは1分程度で送付できるようになっています。(G2まではデータ圧縮技術は含まれていなかったようです) ここで使われているランレングス法というのは、同じデータの繰り返しに着目して、その回数を書いておくことで送付するデータを減らそうというものです。 ごくシンプルな方式で、安価な電子回路で実現できるため、G3FAXはまたたく間に普及し、20世紀末頃にはビジネスの必須ツールの一つでした。 データ圧縮技術はその後、コンピュータを一般の方が利用できるようになってますます発展しており、ZIPを含めて様々な圧縮ツールが登場しています。 今回は、データ圧縮技術の基本であるランレングス法についてお話しました。 次回もお楽しみに。 (この記事は2024年12月に執筆しました)

前号: No 384 / 次号: No 386 / 一覧(note.com)へ / ブログページに戻る