プログラミングなどのITについて学ぶ「情報I」が2022年度から高校の必修科目となり、2025年1月の大学入学共通テストからは多くの大学で必須科目となる。その内容を社会人向けに解説した中山心太さんの新著『高校生だけじゃもったいない 仕事に役立つ新・必修科目「情報I」』(PHP研究所)から一部を紹介する――。
写真=iStock.com/mapo
※写真はイメージです - 写真=iStock.com/mapo

■語源的には「デジタル」=「数字で表現された情報」

デジタルとは何か、を考えるためには、まず英語の“digital”とは何か考えましょう。これは“digit+al”です。digitは「(個々の)アラビア数字」を意味し、形容詞語尾の-alは「〜の性質の」や「〜式の」を意味します。したがって、たとえば“a digital clock”は「数字式の時計」となります。つまり、語源的には数字で表現された情報は、基本的に全て「デジタル」なのです。

一方で、アナログ(analog)とは、「似ている」「類似品」という意味です。技術や工学の分野では、ある物理量が、別の物理量と似ている、同じであると見立てることです。もともとはギリシャ語の“analogos”に由来し、“ana-”(〜によると)と“logos”(比率、理由)が組み合わさった言葉です。

■「デジタル」と「アナログ」の違い

たとえば、アナログ式時計は、人間が針の角度を読み取ることで、時間を知ることができます。針の角速度は常に一定であり、経過時間と針の角度が比例関係にあります。アナログ式温度計は、温度により赤く着色された灯油が膨張し、温度が長さという物理量に変換されます。そして、人間が長さを読み取ることで、温度を知ることができます。つまり、ある物理量と別の物理量の対応関係を利用するのがアナログ式です。そして、物理量(長さや温度や電圧や電流)というのは基本的に連続値です(1cmと2cmの間の距離にある長さはいくらでも存在する)。

一方で、デジタル時計やデジタル温度計では、物理量を最初から数字で表現します。数字で表現する場合、離散値(飛び飛びの値)で表現されます。たとえば、小数点以下1桁まで表現できる温度計では「36.5℃」と「36.6℃」は表現できますが、その中間の値は表現できません。これが、デジタルの特徴です。アナログ式であれば「35.55℃」に相当する物理量は存在します。

■「表現できない値」があるからデジタルに価値がある

一見逆説的ですが、「値が離散値であり、表現できない値が存在すること」というのがデジタルの価値なのです。なぜならば、離散値であれば、誤りなく伝えることができるからです。また、適度な桁で捨てられていることも大切です。連続値を数字で正確に伝えるには、無限に続く小数点以下の値を述べなければならないので、無限の時間がかかるからです。適度な粗さの離散値は適切な情報量(通信時間)で伝えることができるのです。

アナログの連続値は伝送の過程でノイズが乗り、元の情報が損なわれてしまうという問題もあります。これを「数字や言葉を使わないで人から人に情報を伝える伝言ゲーム」で考えてみましょう。

アナログの連続値、たとえば「自分の親指の長さ」という物理量を伝えたいとしましょう。最初の人は、自分の親指の長さと同じだけの長さの紐を作って、次の人に渡します。紐を渡された人は、また同じ長さの紐を作って次の人に渡します。これが何回も繰り返されたらどうなるでしょうか? 寸分違わぬ長さで伝わるのは不可能でしょう。ひょっとしたら紐の長さは何倍にもなっていたり、半分以下になっていたりするかもしれません。

■縄の結び目で情報を伝える手法

この思考実験は、連続値を連続量のまま伝えようとすると、伝送の過程でノイズが乗り、ノイズが増幅されていく様を示しています。アナログの値は物理量なので、物理的な仕組みで取り扱いやすい反面、情報を伝える過程で変質してしまい、正しく情報を伝えることが困難なのです。

これが「7cm」という離散値のデジタル情報であれば、紐に7つの結び目を作って表現することができます。この紐を次の人に渡すことで、次の人は同じように7つの結び目がある紐を作ることができます。結び目が意味を持っているとわかっている人同士でこの伝言ゲームを繰り返すと、紐の長さは最終的には変わるかもしれませんが、7つの結び目がある紐であることは変わらないはずです。これがデジタルの力です。離散値は値を正確に伝えることができるのです。ちなみに縄の結び目で情報を伝える手法は、世界中の多くの文明で用いられており、日本ではアイヌや琉球で用いられていたようです。

写真=iStock.com/filipfoto
※写真はイメージです - 写真=iStock.com/filipfoto

■コンピュータは「2進数」で動作している

コンピュータはその物理的な特性から、内部的には2進数で動作しています。2進数と10進数が互換であることを知ることで、前述の離散値を2進数で伝達できることが理解できます。2進数における1桁の数字をビット(bit)と言います。ビット数が増えると、1ビットごとに表現できる値(種類)は2倍ずつ増えていきます。2bitでは4種類、3bitでは8種類、4bitでは16種類の情報を区別することができます。

現代のコンピュータでは、8bitをまとめて1byte(バイト)として扱います。かつては、1byteは1つの文字を表すために必要な情報量として定義され、コンピュータの種類よって1byteは5bitから10bitまでマチマチでした。

■1バイトが定義されたのは15年前

中山心太『高校生だけじゃもったいない 仕事に役立つ新・必修科目「情報I」』(PHP研究所)

アルファベットは26文字なので、大文字だけであれば5bit(32種類)あれば表現することができます。大文字小文字と数字を全部表現しようとすると62文字なので6bit(64種類)必要です。さらに記号まで表現しようとすると7bit(128種類)が必要です。この7bitで大文字小文字数字記号制御コードを表現する文字体系として規格化されたものがASCIIコードです。ASCIIはAmerican Standard Code for Information Interchange(情報交換用米国標準コード)の略で、1963年に策定されました。

その後、IBMからSystem360という大型汎用コンピュータ(メインフレーム)が1965年に発売されました。同機は1文字7bitのASCIIコードを採用しつつも1byte=8bitとし、余剰の1bitをパリティビット(エラーチェック用のビット)に利用しました。同機が爆発的にヒットした結果、多くのCPUはそれに倣うことになり、1byte=8bitがデファクトスタンダードとなりました。最終的に2008年に国際標準化組織であるISO/IECによって8bit=1byteと正式に定義されました。実は半世紀以上の間、1byteの定義が無かったのです。

----------
中山 心太(なかやま・しんた)
機械学習コンサルタント
NextInt 代表取締役。電気通信大学大学院博士前期課程修了後、NTT情報流通プラットフォーム研究所(現ソフトウェアイノベーションセンタ、セキュアプラットフォーム研究所)にて情報セキュリティ・ビッグデータ関連の研究開発に従事。その後、統計分析、機械学習によるウェブサービスやソーシャルゲーム、ECサービスのデータ分析、基盤開発、アーキテクチャ設計などを担当。2017年に株式会社NextIntを創業し、現在は機械学習に関するコンサルティングや、ゲームディレクター、グループウェア開発を行っている。
----------

(機械学習コンサルタント 中山 心太)