非可逆圧縮に注意 | 悪態のプログラマ
2007年09月02日(日)

非可逆圧縮に注意

テーマ:ブログ

データ圧縮形式の分類方法として、可逆圧縮・非可逆圧縮という分け方がある。可逆圧縮されたデータは、復元(解凍)すると、圧縮前と 100% 同じものに戻すことができるが、非可逆圧縮だとそうはいかない。一般に、非可逆圧縮とは、人間がデータを利用する際に不都合がない程度に、情報を割愛することだからだ。


非可逆圧縮は、通常は画像や音声、動画の圧縮形式について使われる言葉だが、他の種類のデータも同様の考え方で圧縮できることがある。


例えば、シフトJIS などの文字コードでは、半角の数字やアルファベットは1バイトで表現できるが、全角だと2バイトが必要となる。人間が単に文章として読むだけなら半角でも全角でもよいので、全角の数字やアルファベットを半角に変換することで、データを非可逆圧縮することができる。


このように、用途によっては便利な非可逆圧縮だが、元のデータが欠落することの弊害については、よく考えておかなければならない。



2000年問題(Y2K問題)といっても、若い読者にはもう分からないだろうか。1900年代に作成されたシステムは、日付データを扱う際に「年」の部分を下2桁しか持たないものも多かった。そういったシステムで2000年以降の日付を扱うと、期待しない動作をしてしまう。例えば、1995年を "95"、2001年を "01" と下2桁だけで持っていると、経過年数の計算(引き算)や大小比較の結果がおかしくなる。


これは、「このシステムが2000年まで使われることはない」という前提で、日付データを「非可逆圧縮」してしまった結果であるともいえるだろう。



Web を見ていると、時々、生きているのか死んでいるのか(更新が続いているのか止まっているのか)分からないサイトに出会うことがある。通常は、サイトの更新情報やページの掲載日付などを見れば分かるのだが、そうした日付に、年が記載されていないのだ。「8/1 更新」などと書いてあっても、今年の 8/1 なのか、去年の 8/1 なのか、あるいはもっと前なのか分からない。「1年以上更新が止まることはないだろう」という前提で年の表記を除いたのだろうが、実際には更新が止まっているのだ。


実害は小さいものの、これも2000年問題と同様、日付データを省略しすぎたことによる問題である。インターネットでの情報公開というと、空間的な広がり(グローバル性)ばかりに目が行くが、時間的にも長く残っていくという意識を持っておいたほうがいい。



システム開発では、データ量の削減が求められることは多く、非可逆圧縮的なデータの省略が有効なこともあるだろう。しかし、データの一部が失われることによる影響についてよく考えておかないと、システム稼動後に困ったことになることもあるので、注意したい。







■関連記事
省略してはいけないものもある




JPEG―概念からC++での実装まで
橋本 晋之介 アズウィ
ソフトバンククリエイティブ (2004/12)
売り上げランキング: 52645
おすすめ度の平均: 5.0
5 待ってました!


暦と数の話―グールド教授の2000年問題
スティーヴン・ジェイ グールド Stephen Jay Gould 渡辺 政隆
早川書房 (1998/10)
売り上げランキング: 228563

argvさんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります

コメント

[コメントする]

Ameba人気のブログ

Amebaトピックス