5. 情報のデジタル化(数値・文字)

今回から数回にわたって、様々な情報を「デジタル化」し、コンピュータ(計算機)で扱う手法やその考え方を紹介していきましょう。今回はまず、コンピュータ(計算機)の大本の目的、「計算」で扱う「数」と、結果を人間が読めるようにする「文字」の話から始めます。そして次回、1970年くらいから急速に普及し始めたそれ以外の情報「音、画像、映像」等のデジタル化の話に進み、そして現在重要性が増している「鍵や錠前、承認や許諾(判子やサインにあたる機能)等」のデジタル化(暗号やデジタル認証)の話に進み、最後にデジタルデータの「誤り検出や訂正、圧縮」等、現在、デジタルデータを取り扱う上で必要不可欠ま技術の概略を紹介していく予定です。なお、細かい知識は膨大で多岐にわたりますので、必要があれば必要な時に調べられれば良いと思いますし、この授業では「概略を、なんとなく押さえ、雰囲気がイメージできる」程度で良いと思っています。では、始めましょう


5-1.デジタルとは(^^;

アナログとデジタルの意味、みなさんはもう良いですね。このデジタルという言葉の正しい意味を知らないと「デジタル化」の意味が分かりませんね(^^;;

 アナログ=連続量。実数とか、数直線上の点として表現できるようなもの。

 デジタル=離散量。自然数や整数で表現できるもの。(ノイマン型コンピュータの文脈では、ビット列 = 0 か 1 の組み合わせ = 2進数)

の意味です。計算するための機械も(指で数える、石で数える、そろばんから始まった)主にデジタルの計算機の歴史や仕組みを主に紹介してきましたが、実は「アナログ」の計算機もあります。たとえば、30cm の物差しを2本使って、45㎝の長さを測るとか、これ「アナログ計算機」になります。加減算はふつうの物差しでできますし、「対数」の発見により、長さの加減算で「掛け算・割り算」ができるようになり「計算尺」が生まれました。

算盤、手回し計算機(デジタル)、計算尺(アナログ)、いずれも1960年代まで(=電卓が普及するまで)現役でした。また、エレクトロニクスの時代に入っても、アナログ回路技術、デジタル回路技術が共存しています。電子式のアナログ計算機の中枢部「演算増幅器(OPアンプ)」を組み合わせて複雑な演算、特に瞬時に微分方程式を解くことも可能になり、精密機器の機械制御や戦闘機などの制御に使われてきましたし、今でも様々な部分に「(計算機というよりは)部品として」使われています。たとえば音楽用の増幅器 = 音楽用のアンプ 等は、それ専用に1から作るのではなく、普通は、OPアンプを用いた(アナログの掛け算回路)として、作られます。このようなアナログ技術は「連続的な値」を扱うため「ノイズ」や「誤差」という問題を高度な素子技術や回路技術等で克服する必要があります。一方デジタル回路の技術電圧が基準値より高いか低いか(= 0 か 1 か)で動作するため、回路技術としては、簡単で、ノイズにも強い技術です。つまり、0 か 1 の2つに一つ(これをビット(bit)と言います)の組み合わせ(bit列)、つまり「2進数で全てを表す」というのが、ノイマン型コンピュータの文脈での「デジタル」の意味になります。なお、0 と 1 しか扱えないデジタル回路でも「桁数を大きくすることにより」実質的に「連続に近いとみなせる」情報を扱える場合があり、ムーアの法則のスピードで「扱えるデータ量(桁数)」が増えてきたため、アナログとして扱うべき情報も、十分高い精度で「デジタルで近似して」扱えるようになりました。現在では「人が感じ取るための情報」であれば、本来アナログであっても(音、視覚、等)「人が違いを知覚できない程度の精度で」デジタルデータとして扱えるようになっています。アナログデータをデジタルデータに変換して扱う機器を「デジタル機器」と呼ぶ場合もあります。たとえばデジタルプレーヤーなど。でも、デジタルプレーヤーなども、少なくとも人間が聞く「音」を作る部分は「アナログ」技術であることに注意しておきましょう(実際、そのアナログ技術の差が、音質の差になります)。また、計算結果を「数値で見る」のがデジタル「グラフで見る」のが結果のアナログ化です。一般に人は、「数値(デジタル)より、長さなど(アナログ)の方が把握しやすい」ですので、「可視化(バズワードでは「見える化」)」といわれる技法は「アナログ化」であることが多いですし、特に入出力や利用方法については「アナログ的なセンス」がとても重要になります。また、人がアナログと感じられる精度の入出力を、細かくデジタルで近似して実現することもできるようになってきています。例えば「ペン」も、昔は「触れたか触れなかったか」というデジタルなもの(2値的なもの)でしたが、現在は「筆圧」というアナログなものを、1024段階のデジタルで疑似的に実現できるようになっています。未来は... 多分何段と言うことが全く感じられない「アナログとしか感じられない(例えば筆みたいに感じで、使える)デジタル式のペン」でしょう。現在のデザイン用のペンタブレット等はかなりアナログの世界に近づいていますが、ペン先の精度とか、タッチ感だとか、まだまだ「アナログの世界(毛筆等の世界)」を十分には再現できていないですので、今後発展が期待される分野です。また、デジタル回路は、電圧を扱うアナログ回路の一種とも考えられ、高速で動くデジタル回路を作るときには、かならず「高度なアナログ技術」が必要になります。つまり、最先端の世界で「アナログ技術」がカギになっています。

もしバズワードに振り回されて「デジタル=新しい、アナログ=古い」という感覚だと、こういう時代の流れから取り残されていきますので、注意しましょう。一般にはアナログ技術のほうがデジタル技術より高度な(いろいろなノウハウがあり、一般的に難しい)技術になりますし、先端的なデジタル技術が目指している目標が、人間には「アナログとしか感じられない世界」ですから、まあそれが「現在の最先端、および未来の技術」と言っても良いかもしれません。

ではコンピュータで、様々な情報をどのように「デジタル化」して扱っているのか、概要を見ていきましょう。



5-2. 数のデジタル化

コンピュータは「計算機」ですから、まず最初に計算されるもの=数が、どのようにデジタル化されるかから見ていきましょう。「え?数は元々デジタルだろ?」って思った方。中学生に笑われますよ(^^;

小学校ではまず「自然数(指(digit)でかぞえられる数=1,2,3,4,5... = digital)」を教わり、その後、負の数まで拡張した「整数(.... -3,-2,-1,0,1,2,3,...)」という数を教わったと思います。この範囲の「数」は、比較的簡単に「デジタル=ビット列」で表現できます。しかし次に、小数(正確に言うと有限小数)・分数、と教わったと思います。中学に入ると、分数は一般には有限小数で表せず「無限小数(循環小数)」で表せることや(この範囲の数を「有理数」と呼びます)、「循環しない無限小数(無理数)」を教わります。その後、巡回するしないにかかわらず「無限小数も全部」考えるときは、それを「実数」と呼び、数直線上の1点で表すことができることを、知識としては教わります。なお、自然数あるいは整数で表せる情報を「デジタル」、実数(数直線)で表される情報を「アナログ」と言います。

つまり、世の中にはデジタル(自然数)ではない、広い数の世界(実数=アナログ)があります。では、小数や実数などの、様々な「数」をどう「デジタル(ビット列)」で表すか? もっとも簡単な自然数から順に見ていきましょう。


【自然数(正確には0または自然数)】

まず、数を数値で表す時、普通、人類の文明では「10毎に桁が上がる、位取り記数法(=10進数)」が用いられています。これは人類の指が両手合わせて10本であり、最初は指で物を数えていたからです。いつの間にかそのことが当たり前の時代が数千年以上続き... そのことにあらためて気がついたのが、17世紀のライプニッツ。一番単純な数として「2毎に桁が上がる、位取り記数法(=2進数)」を発見します。当時は何のために使うか分かりませんでしたのであまり注目されず、まあ数学者の遊びの一種のようにとれられていたと思います。それが1950年ごろ「デジタル回路(電圧の高低で2つの状態0と1)を表現する電子回路」の登場により、「デジタルコンピュータで計算(数を表し、演算し、答えを出す)するには最適な記数法」であることが認識され、以後のコンピュータでは「基本的に(そのままビット列で表現できる)2進法を使う」ようになりました(=ノイマン型コンピュータ)。

しかし多くの人は2進法による記法に慣れていませんので、できれば入出力は10進数を使いたいですし、場合によっては「10進法で演算する必要がある」ものもあります。例えば、「小数点以下第2位で四捨五入」とか「小数点以下1桁で切り捨て」とか、これらは「10進法の位取り記数法を使う前提」の演算であり、しかも利息の計算などにはよく使われる処理です。そこで「初期のコンピュータや、事務処理用のコンピュータ、および事務計算用の電卓」などには「10進演算」も使われました。現在でも「必要な部分」には(2進演算ではなく、2進数でコード化された)10進数演算が使われます(Binary Coded Decimal(BCD) : 2進化10進法)。また、2進数をそのまま書くと「とても桁数が大きくなる」ため、2進数4桁を一纏めにしたと解釈できる16進数も、よく使われます。このようにして、「0または自然数」は、「2進数・16進数、10進数(BCDコード:Binary Coded Decimal:2進化10進法)」で表す方法が、必要に応じて使われます。なお、このような「0または自然数」の表現を「絶対値表現」と呼ぶ場合があります。それは「負の数を表せない」からです。


【整数(負の数を含む場合)、補数表現】

計算には「負の数」が必要になる場合があります。日常使う10進数だと、「符号」を付けて、例えば、-3などと表します。これを「符号付き絶対値表現」と言います。2進数の世界でも、一番左(数の最上位の左)に「符号ビット」を付加し「符号付き絶対値表現」で表す場合もあります。この方法は「0の表現が2種類」出てきます(+0、-0)。そのため、演算回路が複雑になるため、通常は「2の補数表現」が使われます。これは「桁数を決めた演算(剰余系)」をする場合に、負の数と同じ働きをする数(補数)が存在することを利用します。通常のCPUの内部には「絶対値表現での加減乗除、補数表現での加減乗除」を行う回路が組み込まれています。なおその桁数は「2進数で32桁(32ビット演算:単精度)、あるいは2進数で64桁(64ビット演算:倍精度)」です。


【小数(固定小数点数)】

さて、これだけだとある範囲無いの「整数の計算」しかできません。しかし数には整数で表せないものがあります。そのようなものは「小数」で表わします。整数は数値データの一番右に(何処にも書かれていないけど)小数点があると解釈することができます。この小数点を左に移動させて考えると、(加減算については)同じ演算をしていても「小数の演算」と同じ結果になります。乗除算の桁だけ気をつければ(例えばプログラムで補正してやれば)、整数の演算回路で「小数」の演算ができます。これを「固定小数点表示」と言います。CPU内の回路は整数演算用ですが、一部のプログラム言語でこの補正を自動的に組み込む仕組みがあります(CPUとしては固定小数点演算は整数演算を行うだけなので、固定小数点演算も含め「整数」演算と呼ぶことも多いです)。


【小数(浮動小数点数)】

しかしこれだけでは「科学技術計算に使うような、大きな数や小さな数」が表現できません。日常では、こういう大きな数や小さな数は、例えば \( 3.2 \times 10^{-5} \)とか\( 6.02 \times10^{23}  \)とか、10のベキを掛けて「小数点を移動させて」書きます。これを「浮動小数点表示(floating point exception)」と呼びます。英語なら自明ですが不動(ふどう)ではなく浮動(ふどう)ですので、言葉(音)で聞く時には気をつけてください(^^; なお、この例でいえば、3.2 や 6.02 にあたるものを「仮数」、10の肩に乗っているものを「指数」、10を「底」と呼びます。 今は10進法での例ですが、実際はこれを「2進法の世界」で底を2にして「仮数部や指数部」を、2進法の整数あるいは固定小数点数として、ビット列で表現します。方法は何種類かありますが、現存するCPUのほとんどは「IEEE754規格の浮動小数点表示」を使っていますので、精度や表現できる範囲などの細かいことは、規格を(webで調べて)見てください。32bit 表現を単精度、64bit表現を倍精度と呼ぶことがあります。なお「インテルのCPU」での浮動小数点演算は実際には「80ビットの演算回路(1種類)」で演算し、その後に必要な精度に丸める回路を使って答えを出しています。なお、計算機内部では2進法の浮動小数点数で計算しますが、入力や出力(人間が読み取るところ)では、10進数の浮動小数点表示が使われます。なお\(6.02 \times 10^{23}\)みたいな指数は1行でかけないので、「6.02e23」のように入力・出力します。この記法はコンピュータで浮動小数点数を扱うときには普通に出てくる記法なので、覚えておくとよいでしょう(電卓でも、Excel等でも、こう書きます)。


【標準的な数の表現法のまとめ】

以上をまとめると、「CPUが演算できる数は、基本的に2進数」であり、整数(絶対値表現、2の補数表現)、浮動小数点数(IEEE754規格)だけである、と言って良いと思います。また、内部演算で「10進数による処理が必要な場合」には「BCDコード」と呼ばれる2進化10進法による演算が行われる。なおBCDコードにも、整数以外に浮動小数点数もありIEEE754規格で規定されています。なお、浮動小数点数を「実数(Real Number)」と呼ぶ場合もい多いですが、本当に全ての実数を表現できるわけでは無いので、注意が必要です(その場合には実数と言わず、正確に、浮動小数点数と言います)。どちらも「表せる範囲や精度が限られており、全ての数を正しく表せるわけでは無い」ことに注意が必要です。また、10進数では有限小数であっても2進数では無限小数になる場合もあるため、特に10進数での小数点以下での切り上げ切り捨て四捨五入の場合、(Excelなどの内部表現でも使われる)2進数では、最終桁が誤っている場合があるので、要注意。そういう計算が必要な場合には、内部演算まで全て10進数で計算するソフトを作って計算します。いわゆる専用の「会計ソフト」は、そのようにして最終桁まで「お金の計算としては正しい」処理ができるようにしてあります。特に「オーバーフロー、丸め誤差、桁落ち」には要注意です。例えば、「 2-1=1 ですが、(X+2)-(X+1) は、(Xの値が大きいと)1にならずに0になることがあります」(この現象を「桁落ち」と言います)ので、要注意です(Excelでの例(LOD.xls))。正しい計算をするには計算式が正しいだけではなく、適切な順番で計算を行い、このような誤差や誤り(デタラメな答え)が生じないように工夫する必要があります。


【その他の表現法】

その他、「数をできるだけ正確に表現する」必要がある場合には、「任意精度多倍長」や「分数」という表現が使われます。任意精度多倍長は「任意の桁数の整数を扱う」技術です。これはCPUには組み込まれていませんので「ソフト(プログラム)」で実現します。この技術を使うと、例えば5万桁の数とか表したり演算したりすることができます。また、有理数であれば「小数で表すと無限小数(循環小数)になるようなもの」も、有限の整数の比率として「分数」で簡単にしかも正確に表すことができる場合があります。そのような場合には(CPUには組み込まれていませんが、ソフトで)分母分子を2つの整数の組みで表現し「分数」で正確に表現・演算を行う場合もあります。演習室に入れてあるソフトではmxMaximaを使うと、そのような「正確な」演算ができます


【アナログ量(本当の実数)のデジタル(整数)化】

浮動小数点数(有限の桁数の小数)ではなく、本当の実数(連続量:アナログ)を正確に整数(デジタル)で表すことは不可能です。ただし「正確にではなく、およそであれば良い」という場合には、「近似的に」整数あるいは固定小数点数で表現することは可能です。これを「アナログデータのデジタル化」と呼びます。考え方は、連続量を数直線で表した時、そこに「飛び飛びの目盛り」をふり、近くの目盛りの値で「近似する」という考え方です。後で(次回)出てきますが、「時間という連続量を、短い時間に区切る」ことを「サンプリング」ある時刻におけるアナログ量(例えば電圧)を段階に区切り近い整数値で表すことを「量子化」と呼びます(なお量子という用語は元々物理学用語(量子力学)から来ています。エネルギーや電荷などはあらゆる実数値をとるのではなく、ある最小値の整数倍しか取れない、という現象を表現するための用語として生まれました)。時間、位置、圧力(空気圧)、明るさ... などは全て「アナログ量」ですが、これを電気信号に変換し(電圧というアナログ量)、電圧を数値に変換する回路(アナログーデジタル変換器:ADコンバータ)に通すことにより「量子化されたデジタルデータ」が得られます。また、短い時間を刻む「クロック」信号に同期してセンサーからの信号を取り込むことにより「サンプリングされたデジタルデータ」が得られます。

このようにして、本来アナログ量であるものを、デジタル化し(整数で表すこと)、その後、デジタルコンピュータ(計数型計算機)で、整数の演算として様々な処理を行い、結果の数値を(デジタルーアナログ変換器:DAコンバータ)という回路を通して電圧に変え、そこから音などのアナログ情報を出力します。



5-3. 文字のデジタル化(文字コード)

【文字コード】

「計算機」で計算した答えを人間が読み取れるようにするには結果を「文字」で表示すると便利です。そろばんでは「玉の位置」で数を表し、歯車式計算機では「歯車に書かれた数字を人が読み取る」方法が使われましたが、記録に残らないため大量の計算を行うには不十分です。そこでバベッジは「印刷機(プリンタ)」を使って、結果を「印刷された数字」で出力することを考案しました。なお「数値(数の値)」と「数字(数を表す文字)」は意味が全然違いますので、区別して下さい。機械に取っては単なるビット列(0と1の集まり)でも、その意味する内容を、人間が0,1だけで表すのは、とても面倒で覚えにくいし、できれば人間は「文字」を使っているので「数字」だけでなく、様々な情報を「文字」および文字の集合体(文字列=単語、文、段落、文章...)で表現できると便利です。コンピュータの黎明期「文字を扱う機械」として「タイプライター(レバーで活字を叩く機械式)」が生まれており、それが「電動タイプライター(キースイッチを押して、電気信号でその情報を電磁石に伝え、電磁石で活字選び、活字を叩く。)」に進化し、キースイッチの信号を(有線あるいは無線通信で)遠方に伝達し、離れたタイプライターから文字を打ち出す装置(テレタイプライター )が生まれました。その装置(キーボード)を使えば文字の入力を、キースイッチの信号としてデジタル(0と1の集まり)にできますし、キーからの信号の代わりにコンピュータからの信号をテレタイプライターに与えて「文字で出力する」そこで、初期のコンピュータでは、テレタイプで使われる電気信号を「文字を表すデジタルデータ」として、使い始めました。


【ASCIIコード=半角英数字】

しかし、テレタイプの仕組みや文字と電気信号の対応などは、メーカーにより異なっていたりし、互換性を確保する必要性が出てきました。そこで1963年に米国で「ASCII(American Standard Code for Information Interchange)コード」が制定され、その後徐々に(20年ほど掛けて)、コンピュータで「文字」を扱うときは「ASCIIコード」を用いるように、世界中で統一されていきます。このような「それぞれの文字に対して、対応するビット列を割り当てる」表現方法を「文字コード」と総称します。実際のASCIIコード表などは、Web検索などをして、一度は見ておいてください。しかしASCIIコードは、名前からわかるように「アメリカ(英語)なら」ASCIIコードで十分ですが、他の言語(ドイツ語、フランス語、ロシア語、日本語、等)ではASCIIコードで表現される文字だけでは不十分ですので、各国別に様々な工夫(変更)が加えられていきます。しかしその場合でも「ASCIIコードの部分は、できるだけ共通にし、変更は拡張部分」という形で行われることが多いでした。ASCIIコードは「英語で使われるアルファベット大文字・小文字・数字・特殊記号」を中心とし、それにテレタイプを動かすときに必要となる「改行など」の制御文字を加えても、128個未満です。これを7ビットで表現するのが初期のASCIIコードです。この中にも使っていない文字があるので、ドイツ語やフランス語はそこに独自の記号を割り当てていきます。

しかし日本語の場合、ローマ字で表現すればほぼASCIIコードで表現できますが、お金の単位「¥」が無いと、お金の処理にコンピュータが使えないため、(空き部分ではなく)当時はほとんど使われなかった記号「バックスラッシュ:\」を「¥」に割り当てました。そのため、黎明期から(円で扱う)会計処理にコンピュータを用いることができました。しかしその後、世界では「バックスラッシュ:\」は、区切りを示す特殊記号や数式を書くときに多用される記号になりましたので.... その後数十年間、日本のコンピュータだけが特殊(国際的互換性がない)という時代が続き、この問題は現在でも続いています(フォントを切り替えると、「¥」を「バックスラッシュ:\」の表示に切り替えることができますが、今度は¥が「¥」と表示されなくなります)。抜本的な解消は「円記号を使っている全てのデータ・全てのシステムの文字コードを(後で述べる)UNICODE(UTF-8)に移行し、そのうえで、元データの¥が、「¥」の意味か「バックスラッシュ:\」の意味かにより、正しい文字コード変換・修正し、そのうえで、2つの文字を別の文字として正しく扱うようにシステムを組みなおす」必要がありますので...(^^;;;

コンピュータで扱うデータが「8ビット(bit)=1バイト(Byte)」が標準になってくると「7ビット」は中途半端ということで通常は「8ビット」で1文字を表す時代に入ります。8bitASCIIとか言われますが、残りの128種類のコードにギリシャ文字や絵文字などを割り当てたりしました。日本ではここに「半角カナ文字」を割り当てることにより、「ローマ字あるいはカナ文字」で表現することにより、コンピュータで文字列も処理できるようになり、日本語の名簿や事務処理などにコンピュータが使われ始めます(1970年代)。


【漢字=全角=マルチバイト文字】

しかし日本語の文章を扱うには「漢字」を使いたい。そこで「2バイトのビット列を使い、漢字1文字と対応させる」漢字コードが生まれ、メーカーによる差異をなくすため「JIS漢字コード」が制定されます。正確には2バイト=16ビットではなくそのうちの「14ビット」が漢字と対応しています。これは7bitASCII向けに作られた装置でも漢字を使う拡張を組み込めるようにするためです。日本の「JIS漢字コード」のような「マルチバイト文字」を用いることにより、英語以外の文字も広く表現できる可能性が生まれました。日本で「PC」によるOA化を進めるためには、JIS漢字コードよりもっと単純な、低性能なPCでも実現できる方法が必要となりました。NECとマイクロソフト社との共同開発により、現在「Shift-JISコード」と呼ばれる、1バイト系の文字と2バイト系の文字をエレガントに共存させる文字コード体系が生まれ、その後PC・携帯電話・スマートフォンでも、「漢字が使える」のが普通になっていきます。さらに日本だけでなく「世界中の他の言語でも同様なマルチバイト化の拡張で、全ての文字を扱える」ことから、「インターネットの仕組みを構築するために使われていたOSであるUNIX」に、その機能を組み込み、「EUC(Extended Unix Code:拡張UNIXコード)」と呼ばれます(EUCコードという、頭が頭痛みたいな用語も使われます(^^;)

そのため「日本語」のコード化にはいわゆる「JISコード」「Shift-JISコード」「EUCコード」の3種類が存在するという、世界に例を見ない複雑な状況になりました(メールやWebではJISコード、PCや携帯電話はShift-JISコード、ネットワーク機器やサーバーマシンはEUCコード)。他の英語圏以外の国々では「EUCコード」のみですが、それでも「国(言語)によって、文字コードが違う」という複雑な状況になりました。同じビット列で表された文字でも、それがどのコード体系であるのかを知らなければ別の文字になってしまいます(文字化けと言います)。なお、日本語の文書の場合「半角カナ」を使わなければ、文字コードのビットパターンからほぼ確実にどの文字コードを使っているのかが識別できるますビットパターンからどの文字コードで書かれているのかを自動的に判別し、そのコードからソフトで使っている文字コードに自動的に変換する仕組みが、随所に組み込まれており、大抵の場合には、文字化けを自動的に解消しています(解消されない場合には手動で文字コードの設定を行うことが必要になります)。


【UNICODE (ゆにこーど:UTF)】

1970年ごろから「世界中の言語で使われる文字を、単一の文字コードで表す」ことが検討されていきますこれが現在「UNICODE」と呼ばれるものです。初期の頃は「世の中知らない学者さんたちの戯言(^^;」「文字は言語と密接なつながりがあるから、言語の仕組みや特に表意文字の意味を無視して文字だけ統一はナンセンス」と思われていました。しかしマイクロソフト社が「WindowsXP(2001年)」を世界各国向けに開発するときに「国別にWindowsを作るのはとても大変。UNICODEで一括して作り、メニューの内容などだけ、各国向けの「文字列」を入れておく(取り替え可能)」という手法で開発し、各国の文字コードとUNICODEの変換フィルタを随所にかますことにより「見かけは各国の文字コードに対応した各国向け、中身はUNICODEで1つ」というシステムが「十分に実用的であり、開発コストも格安になる」ことが実証されました。続くWindowsVista(2006年)では「全面的にUNICODE採用。その上で既存機器との互換性のため、各国の文字コードとの変換フィルタを内蔵し必要に応じてそれを使う」という形になりました。この「マイクロソフト社の成功」によって、以後全てのOS、全ての機器が「UNICODE」を使えるように変化し、現在では「新しく発売される機器やソフトなどは、ほぼ全てUNICODEが使える」ようになっています、ただ「古い機器」ではUNICODEが使えないものも、まだ若干ありますので、互換性重視の場合には、まだ若干の配慮が必要です。

世界中の文字を単一の文字コード「UNICODE」で表すことにより「世界中、どの言語のページやメールでも、その言語の文字で表示される(文字化けが起こらない)」という世界になります(現在、一部の例外を除き、そうなりつつあります)。昔は、例えば「アラビア語で書かれたページを、日本のPCでみると読めない」ということが普通でした。アメリカで日本語のメールを読むには、日本語対応のPCを使う必要がありました。昔は携帯電話の絵文字はPCで正しく表示されませんでした。現在では、ほとんど全てのPCやスマートフォン、ほとんど全てのOSで、「UNICODE(UTF-8)」が標準サポートされており、また、いくつかの機器ではその文字コードを使うことが「既定」になっています。なお、UNICODEに絵文字が組み込まれたのは、日本の携帯電話での「絵文字文化」が大きく影響したと言われています。昔は携帯電話会社ごとに絵文字が異なり、またPCでは携帯メールの絵文字は正常に表示されませんでした。

現在はまだ「移行期」ですので、このようなことを知っておいた方が良いですが、多分あと10~20年もしたら「地球人の文字は全てUNICODEで表す」ことが普通になり、それ以外の文字コードが完全に使われなくなれば、「文字はUNICODE」だけの知識で良い時代がくると思いますし、現在その方向に向かっています。


【フォントとレイアウト】

文字は文字コードで表され、文字コードを並べることにより「文や文章」をあつかうことができます。このようなデータを「テキストデータ」あるいは「プレーン・テキストデータ」と呼びます。これがコンピュータ内での「文や文章」の表現です。なおこの中には「活字やレイアウトの情報は、一切含まれていない」です。テキストデータを編集するソフトとしては「テキストエディタ」と言われるものが使われます。なおWindows標準添付のテキストエディタは「メモ帳」と呼ばれています。フォント情報やレイアウト情報を必要としない場合、「文書の入力にはテキストエディタが使われる」ことを知っておくと、様々な場面で効率的な作業ができます。

テキストエディターを使うと文章を記憶したり編集したりできますから、1960年代に、「コンピュータを文書を書くために使う」使い方が生まれます。「文書」を保存したり編集して、一気にプリンターで出力する。このことを行うソフトウェアも生まれ、個人用コンピュータ(PC)の普及に伴い、特に、1976年にPCで動くWordProcessor(ワードプロセッサ:ワープロ)である WordStar の登場以後、「人が直接タイプライターを打つ」という場面は急速に失われ「タイピスト・キーパンチャー」という仕事が消滅していきます(なお MS Word はだいぶ遅く、1983年です)。

テキストエディターの扱うデータは「テキスト(=文書)」だけですが、ワードプロセッサは、「文字列(テキスト)+レイアウト情報」を扱います。特に暫定ダイナブックの「Alto」では複数の活字(マルチフォント)がサポートされ、市販品としてはAppleのMacintoshが、マルチフォントをサポートし、それ以後、活字の大きさや種類を変えた「見栄えの良い文書」をつくる道具へと発展していきます。さらに日本語処理や日本語フォントなどもサポートしたものが、いわゆる日本で「ワープロソフト」と言われるものです。

なお、文章を書くときに「(MS Word等の)ワープロソフト」を使う人が多いと思いますが、これは「文書+レイアウト情報」を編集するものですから、「文書データ(テキストデータ)のみ」を編集するには、やや面倒で不都合な部分が多いです。そのような場合には「テキストエディタ」を使いますし、特にコンピュータに対する指示を書くとき(=プログラムを書くとき)などは、(ワープロでなく)高機能なテキストエディタが使われます。なお、Windowsに付属している低性能なテキストエディタとしては「メモ帳」があります。

なお、Webを多用する現在では、レイアウト情報を「HTML言語」で表現する場合も多くなっています。HTML言語とは、元々Webページを記述するために開発された言語ですが、フォントやレイアウトを指定したメールを送るときなど「HTMLメール」と言う形で実現することも多くなっています。ただしレイアウト情報の部分には(リンクなどの形で)ウィルスなどを仕込むことも可能なので「セキュリティを意識したメール」の場合には、そのようなものが入る隙間が無い「プレーンテキスト」のメールを使うことを知っておくと良いでしょう。なお、moodle(Web) での表示にもHTMLが使われており、この教材も全て、(MS Word などではなく)HTML言語で記述しています。なお、皆さんに moodle で毎回提出していただいている「課題」も、HTML言語でフォントやレイアウト情報が記述されています。「あなたの答え」の文章を入力する欄の上にある一番左のボタン[  ̄↓ ]を押すと、さらに多くのボタンが表示されます。その一番最後[ </> ]のボタンを押すと、直接、HTMLでの表示や入力ができます。もう一度[ </> ]のボタンを押すと、HTMLで記載されたレイアウト情報を反映した形式での表示に戻ります。フォントの大きさ(ヘッディング)、文字の太さ(ボールド)、斜体(イタリック).... など、いろいろな書式やリンクがボタンから使えますから、そのレイアウト情報がどのようにHTMLで表現されているのかを、[ </> ]のボタンを押して「眺めてみる」のみも良いでしょう。なお、皆さんが使っている moodle(UOKLMS) は、HTML言語のうち「HTML5(あるいはHTML Living Standard)、及びCSS3)」を使っていますので、もし、HTML5やCSS3の書き方を学べば、ボタンに無い表現、たとえば、 とかとか、でか!とかちいさ!とか、さらには、\[ \int_{x_1}^{x_2} \frac{(x+3)^2}{ \frac{x^2+5}{\sqrt{x+3}}} dx \]なんて複雑な記号のレイアウトも、簡単にできます。

-------------------
補足:ここで提示した例は、

 
たとえば、
<span style = "color:red">赤</span>とか
<span style = "color:blue">青</span>とか、
<span style = "font-size:200%" >でか!</span>とか
<span style = "font-size:50%">ちいさ!</span>とか、さらには、
\[ \int_{x_1}^{x_2} \frac{(x+3)^2}{ \frac{x^2+5}{\sqrt{x+3}}} dx  \]
 なんて複雑な数式のレイアウト
と、HTML(HTML5+CSS3+TeX)の文法で、直接打ち込んでいます。なお、TeX(てっく、てふ)は、数学者が作った「数式を含む文書を記述するシステム」で、そこで使われる数式の表現方法が、殆どの数式レイアウトを扱うソフトウェアで(内部的に)使われていますし、また TeX(あるいはそのサブセット)形式での入出力も、殆どの数式を扱うソフトで、使えるようになっています。
------------------

なお、moodle だけでなく、Webで入出力するサービスでは一般に「処理ソフト内部でHTMLによるレイアウトを使っています」から、たとえば BLOG(WebLog) や BBS(電子掲示版)やいくつかのSNS等でも、使えるタグは制限されますが、ある程度 HTML言語 によるレイアウトが使える場合がありますので、機会があれば、調べたり体験したり学んでおいたりすると良いかもしれません(ちなみに文化学部(夜間も含む)の学生さんは、学部科目で学ぶ機会があります)。


今日はこの辺で終わりにし、次回は「音、画像、動画」等の情報の、デジタル化の話に進みます。