CodingIntroduction

6. 符号化の基礎

6.1. 概要

コンピュータサイエンスの世界では,「コード」という言葉には様々な意味があります.よく使われるのはプログラミング関係で,プログラムは「ソースコード(Source code)」と呼ばれます.ただしこの章(と次の3つの章)では,たとえば暗号のような,効果的な方法による情報の表現に関する「符号(code)」を扱います.前の章では,バイナリ表現であらゆる種類のデータ - 数,テキスト,画像その他など - を格納するのを見てきました.しかし,単純なバイナリ表現はあまり有用でないことがしばしばあります.大量にデータ領域を取り過ぎたり,データ内の小さなエラーが大きな問題を引き起こしたり,時には他の誰かが簡単にメッセージを読めてしまうことを心配したり.ほとんどの場合これら3つ全てが問題になります!これから見ていく「符号」はこれらの問題を克服するもので,重要な情報の格納や転送に広く使われています.

バイナリデータをより複雑な表現にして利用する3つの主な理由は,

  • 圧縮: データが必要とする格納領域を縮小する(例えば,音声ファイルをMP3圧縮を使って圧縮すると,元のサイズの10%以下にまでサイズを小さくできます)
  • 暗号化: データ表現を変化させることで,メッセージを解読するのに「鍵」が必要になる(例えばWebブラウザで,Webサイトと'http'でなく'https'でやりとりしている時はいつも,暗号化が使われ,たとえ盗み見しようとする者がいても何も情報が得られないようになっています)
  • エラー制御: データに追加情報を付け加えることで,記憶装置や転送中に小さな故障が起こっても,データが破損したことを検出でき,情報を復元することもできる(例えば,バーコードには追加の数字が1つ付け加えられていて,もしレジでバーコードを正しくスキャンできなければ,誤った製品の料金を請求される代わりに,警告音をだしてくれます)

これら3つ全てが同じデータに適用されることもよくあります.
例えば,カメラで撮影された写真は大抵JPGで圧縮され,エラー訂正が出来る状態でカメラのメモリーカードに保存され,さらにバックアップディスクに暗号化された状態で格納することで,ディスクが盗まれてもデータにアクセスできなくします.

これらの符号化手法なしには,デジタル端末は非常に遅く,データ容量も限られ,信頼性がなく,個人情報をプライベートに保つこともできません.

6.2. The story of coding

画像の説明

データの符号化で表現をよりコンパクトに,冗長にあるいは安全にするというアイデア自体は非常に古くからありますが,情報時代における符号の実現に必要な確固たる理論が確立されたのは,1940年代でした - その技術が第二次世界大戦 - 効率性,信頼性と秘密性が非常に重要視されていた時代に重要な役割を担ったことは,想像に難くないでしょう.その分野で最も成功した研究者の一人は,データを効率的に表現する手法に関するあらゆることを扱う「情報理論」の分野を構築した,クロード・シャノン(Claude Shannon)でした.

Curiosity: Entropy
シャノンの業績で肝となる理論は,「エントロピー」という情報の尺度です.これによりファイルがどれだけ小さく圧縮できるかや,必要な信頼性を得るために必要な追加ビット数はどれくらいか,といったものの数学的な限界を定めることができます.エントロピーの概念は本章の対象外ですが,次にどの文字が来るかを推測することで情報コンテンツを"量る"方法を感覚的に体験できる,楽しいゲームがいくつかあります.例えば,CSアンプラグドのアクティビティである二十の扉http://csunplugged.org/information-theoryや,文推測オンラインゲームです.

6.3. 参考文献

James Gleick 著 The Information: A History, a Theory, a Flood は,コーディングに関連するいくつかの分野の歴史について,興味深い視点で紹介されています.

6.3.1. 関連サイト

powered by Quick Homepage Maker 5.1
based on PukiWiki 1.4.7 License is GPL. QHM

最新の更新 RSS  Valid XHTML 1.0 Transitional