2016年の発売直後から大きな話題を呼び、中国・ドイツ・韓国・ブラジル・ロシア・ベトナムなど世界各国にも広がった「学び直し本」の圧倒的ロングセラーシリーズ「Big Fat Notebook」の日本版が刊行された。藤原和博氏(朝礼だけの学校 校長)「プログラミングは新しい言語の獲得だ」、野田クリスタル氏(お笑い芸人・マヂカルラブリー)「プログラミングがやりたくなる! まるでゲームの攻略本みたい!」、尾原和啓氏(元グーグル・IT評論家)「プログラミングを通して、ビジネスにも応用できる考え方が見えてくる!」と絶賛されている。本記事では、全世界700万人が感動した同シリーズのプログラミング編『アメリカの中学生が学んでいる 14歳からのプログラミング』より、本文の一部を抜粋・掲載します。
データをエンコードする
データは、コンピュータが理解できる形式で書かなくちゃいけない。つまり、コンピュータが処理できるように、データをエンコード(符号化)する必要があるということだ。情報をエンコードするとは、画像、動画、文章などを、コードへと変換する。
たとえば、第二次世界大戦中、モールス信号の通信士は、文章を長点と短点の列へと符号化して、電信線で送っていたのだ。
逆に、情報をデコード(復号)するときは、コードを理解できる通信形式へと戻す。
たとえば、モールス信号の通信士が、長点と短点を使ってエンコードされたメッセージを受け取ったら、その長点と短点からなるメッセージをデコードして、もとの言葉に戻すというわけだ。
コンピュータが入力データを理解できるようにするためのデータ符号化方式は、何種類かある。データ符号化方式とは、コンピュータが理解できるような形で、いろいろな種類の情報を表現する方法のこと。
実は、コンピュータが理解できるのは、数字の1と0の列だけなのだ。
バイナリコード
1と0を使ったコードのことをバイナリコードという。
符号化方式は、コンピュータがデータを理解したり、解釈したり、生み出したりしやすいようつくられたものだ。コンピュータは、画像、音声、動画、数値、色、記号など、どんなデータだって、1と0の列に置き換えるのだ。
たとえば、コンピュータが、1と0の列を使って、どう画像を保存するのか、再現してみよう。0が白いボックス、1が緑色のボックス。左側の1と0の列で表されたデータを使えば、5×5のマス目の上にシンプルなキリンの絵が描けるだろう。
色をエンコードする
色、数値、写真など、データの種類によって、エンコードのしかたが変わってくる。
たとえば、色をエンコードする方法でいちばん多いのは、RGBや16進数という符号化方式を使ったものだ。
スキャナを使うと、古い写真をコンピュータが理解できるデジタルデータへとエンコードできるのは、どうしてだろう?
スキャナは、センサーで色を読み取って、写真全体を一連の数値へとエンコードする。そうしたら、その数値をコンピュータが理解できる順序に並べて、コンピュータ画面上で元の画像にまた組み立て直すというわけだ。
RGBとは
RGBとは、0~255の数値3つを、カンマで区切って並べた色の表現法のこと(ただし、0~255の数値は、コンピュータ内では2進数で表されるけどね)。
この3つの数値は、左から順番に、赤、緑、青の色の濃さを表している(R=赤、G=緑、B=青)。濃さのちがう赤、緑、青を混ぜることで、どんな色だってつくれるのだ。
0~255の3つの数値の組み合わせは、何通りあると思う?
なんと、約1600万通りもある!
つまり、RGBの符号化方式で表せる色は、約1600万種類もあるということだ。
16進数とは、6つの文字を使って、RGBと同じ約1600万通りの色を表すことのできる色の表現法のこと。16進数では、RGBとちがって、0~9の数値とA~Fの文字の組み合わせが使われる。
たとえば、ピンク色を表す#FF00B4には、文字FとB、数値0と4が使われているのがわかる。左から順番に2個ずつの文字(いまの例だと、FF、00、B4)が、ひとつの色を表している。
最初のふたつの文字が赤、次のふたつの文字が緑、最後のふたつの文字が青に対応していて、RGBのときと同じように、数値と文字の組み合わせによって、赤、緑、青の色の濃さを表すという仕組みになっているのだ。
色のようなデータには、いろんな表現方法があるけれど、大事なのは、コンピュータがその情報を理解できるような符号化方式を使うということなのだ。
色を表現する
次の表の左側のふたつの列は、コンピュータが色を読み取る方式(方法)だ。
ただし、どちらの符号化方式もコンピュータが読み取るときには、バイナリコードに変換される。右側の3つの列は、人間が色を読み取ったり、識別したりする方法の例だ。同じ色にもいろんな表現方法があるのがわかる。
色を数値や文字へとエンコードするのは、コンピュータが情報を読み取れるようにする、ひとつの方法にすぎない。音声、キーボードの入力、タッチパネルのタップ、指紋、GPSの位置情報……。
どんなデータも収集されたあと、コンピュータが理解できる形式へとエンコードされるのだ。