「このファイル、メールで送れない」
陸が困った顔をしていた。画像ファイルが50MBもある。
「圧縮すればいい」葵が提案した。
「圧縮?潰すってこと?」陸が首を傾げた。
由紀が笑った。「データを小さくする技術ですよ」
葵がノートを開いた。「圧縮の基本は、冗長性の除去だ」
「冗長性…同じ情報の繰り返し?」
「そう。例えば、『AAAAAABBBBCCCC』という文字列」
陸が見た。「AとBとCが繰り返してる」
「これをランレングス符号化すると、『6A4B4C』になる。14文字が6文字に」
由紀が興奮した。「半分以下!」
「これが圧縮の基本原理。パターンを見つけて、短い表現に置き換える」
葵がホワイトボードに別の例を描いた。
「辞書符号化。よく出る単語やフレーズを、短いコードで表す」
「『情報理論』を毎回書かずに、『IT』と略すみたいな?」
「まさに。LZ77とかLZWとか、有名な圧縮アルゴリズムは、この原理を使う」
陸が考えた。「じゃあ、パターンがないデータは?」
「圧縮できない」葵がきっぱり言った。「ランダムなデータは、エントロピーが高いから、圧縮の余地がない」
由紀が尋ねた。「画像はどうやって圧縮するんですか?」
「いくつか方法がある。まず、隣接ピクセルは似た色が多い。この相関を利用する」
葵がスマホで画像を見せた。空の写真。
「青いピクセルが並んでる。『青、青、青…』と繰り返さず、『青を1000個』と表現できる」
「なるほど」
「さらに、人間の目は細かい変化に鈍感。高周波成分を削っても、見た目は変わらない」
陸が反応した。「それがJPEG?」
「正解。JPEGは周波数変換して、重要でない成分を捨てる」
葵が補足した。「DCT、離散コサイン変換を使う。画像を周波数成分に分解して、高周波を削る」
由紀がノートに書いた。「可逆圧縮はパターン探し、非可逆圧縮は情報を削る」
「良いまとめだ」
陸が疑問を持った。「じゃあ、圧縮されたファイルを、さらに圧縮できる?」
「一般的には無理」葵が説明した。「すでに冗長性が除去されてるから。圧縮済みファイルは、ほぼランダムに見える」
「へえ、圧縮にも限界がある」
「エントロピーが限界。それ以上は減らせない」
由紀がふと思いついた。「暗号化されたファイルも圧縮できない?」
「鋭い!良い暗号は、ランダムに見える。だから圧縮できない」
葵が続けた。「逆に、圧縮できるデータは、パターンがある。セキュリティ的には弱点になることもある」
陸が真剣になった。「圧縮って、情報を見抜く技術でもあるんだ」
「そう。データの構造を理解しないと、効率的に圧縮できない」
葵が陸のファイルを見た。「この画像、同じ色の領域が多い。PNG形式で保存し直せば、かなり小さくなる」
「試してみる!」
数分後、ファイルサイズが10MBになった。
「すごい!5分の1だ」
「画像の性質に合った圧縮形式を選ぶのが重要」葵が言った。
由紀が微笑んだ。「データの性格を理解して、最適な方法を選ぶ。人間関係みたいですね」
「面白い比喩だ」葵が認めた。「圧縮も、相手を理解するところから始まる」
陸がファイルを送信した。「伝わった!ありがとう、葵先輩」
「重いデータも、理解すれば軽くなる」葵が静かに言った。
情報理論は、いつも実用的だった。