AD変換(テキスト)

基本・基礎-4
中高年パソコン音痴駆け込み寺
PC駆け込み寺>基本・基礎>AD変換(テキスト)>NEXT

サイト内用語検索です

必要に応じ、ウインドウ巾を調整して閲覧下さい


前項「AD変換-1(音声のデジタル化)」で、バイナリデータのうち、音声情報のデジタル化について見てきました。 ここでは、情報の基本であるテキスト(文字)を、デジタルデータ化する手法について考えて見ます。

Illustrator講座、PC音痴駆け込み寺-共有

 


■ バイナリファイルとテキストファイル

最初にファイル全体に係わることなので、「バイナリファイル」と「テキストファイル」について説明します。 バイナリとは、2進数の、と言う意味です。 コンピュータのCPUは、2進数しか解釈できないし、処理できません。CPUとアクセス出来るよう、2進数で記述されているファイルを、バイナリファイルと言います。

■ 2進数

■マシン語、ネイティブコード

CPUが解釈・実行出来得るデータは2進数です。プログラムやデータは全てCPUが理解出来るよう、最終的には2進数の形でCPUとアクセスします。

※ そもそもデジタルは、電圧のON/OFF、磁気化されている/いない 等、ビット=2進数での処理に必然的にならざるを得ないのです。

CPUと直接アクセス出来るよう、2進数で書かれた命令を、マシン語と言います。 マシン語で記述されたプログラムをネイティブコードと言います(ネイティブは母国語の、と言う意味、CPUにとっての母国語はマシン語)。

■ ソースコード

コンパイラ、アセンブラ ネイティブコードは2進数の羅列、つまり0と1が延々と並んでいて、普通の人は全く理解出来ません。

※ 表記の際は2進数の4桁(4ビット)を一まとめにして、16進数の形に変換して記述します 。

プログラムを作る人にとっても難しいので、通常はより人間の言葉に近い「言語」でプログラミングをします。これをソースコード、或いは上級言語、高水準言語等とも言い、種類としては、C言語、BASIC等が有ります。

ソースコードのままでは当然CPUは理解出来ないので、ネイティブコードに翻訳、変換する必要が有ります。これをコンパイラ或いはコンパイルする、等と言います。 それぞれのソースコードに応じて専門のコンパイラが有ります。

なおアセンブラと言う言語も有ります。
これはネイティブコードにより近いものです。 何れにしても最終的には「マシン語」の形でCPUとアクセスする訳ですが、アクセスの仕方、記述の仕方はプログラムによってそれぞれ独自の仕様を持っています。
記述されているのは同じバイナリデータ(0又は1)ですが、記述の仕方は各プログラムによって違い、通常、異なるプログラム間では互換性が有りません。

■ テキストファイル

※ コンピュータで扱うデータは、本来全てバイナリー CPUとアクセス出来るのは、ネイティブコード(マシン語)だけ、と言う事情が何となく理解出来たことと思います。その意味で、コンピュータで扱うデータ、ファイルは全て「バイナリデータ(ファイル)」です。 その意味で、「テキスト」もバイナリデータなのですが、テキストだけは少し特別扱いする、という事情が有ります。

「さあ、テキストを開いて…」等といいますが、ここでは「テキスト」と言っても、教科書のことでは有りません。「文字」のことです。キャラクタ(Character)とも言います。
テキストファイルと言うのは、純粋に「文字データ」だけが記録されているファイルを差します。 テキストファイルも、本来当然バイナリデータです。 しかし、ファイルの種類としては、同じバイナリであっても、テキストファイルを特別扱いにしています。その辺の事情と中身の説明。

■ テキスト(文字)は、情報の基本

人間の情報伝達の基本は「言葉」です。そして文字はその言葉を視覚信号化したものです。 従ってディスプレーを介して、ユーザと情報のやり取りをしているコンピュータに取って、文字は情報の基本になります。
そしてこの事情は、アプリケーションやデータの違い、MacとWindows等、プラットフォームの違いを超えて共通です。

※ 身振りや表情も情報伝達の手段では有りますし、声の抑揚だけでもある程度の感情表現は出来ます。しかしやはり「言葉」抜きに、情報を伝え合うことが如何に不便で制約が有るか、それは言葉の通じない外国の人と意思疎通を図ろうとする場合を考えて見れば分かるでしょう。

■ テキスト表示は比較的単純で、規格化しやすい

テキストは、数も限られ(アルファベットは26文字、漢字で数万)、分類もある程度法則化されていて、規格化(コード化)しやすい、と言う事情も有ります。
次にテキストのコード化について述べます。

■ テキストのコード化

■ テキストコード・文字コード・キャラクタコード

コンピュータ では文字を表示する為、文字一つひとつに固有の番号(コード)」を付けて定義をする、と言う方法を取っています。これを「文字コード」「テキストコード」、或いはキャラクタコードと言います。
テキストコードも、2進数データ(表記は16進数)で、上記のように本来「バイナリデータ」です。 しかし通常のバイナリデータが、CPUに対し、意味のある命令文として記述されているのに対し、テキストコードは便宜上、文字に対応させた番号付けに過ぎません。

バイナリデータの命令文は、アプリケーションによりその記述方法が違い、アプリケーションが違えば通常、データの互換性は有りません。
しかし、テキストデータは、共通のコード体系を使用している限り、OSの違い、Mac,Windows等、プラットフォームの違いを超えて共通に扱えます。
テキストコードは一番互換性の有るデータ形式です。

■ コード体系

同じコード表、コード体系に基づいたテキストファイルは、全ての環境で互換性が有ります。しかし実際は、コード体系にも実情に応じた幾つかの種類が有ります。 コード体系を大きく分けると、次の2種類になります。

1バイト文字コード 2バイト文字コード

■ 1バイト文字コード

※ コンピュータ では情報を1バイト単位で扱うようになっています。

1バイト=8ビット=256です。 つまり1バイトの情報は、256バリエーションの中の1個を表す事が出来ます。
アルファベットはAからZ迄26文字有ります。 大文字小文字合わせて52文字、これに数字、特殊文字、これで96文字になります。充分に1バイトの範囲でコード化することが出来ます。

■ アスキーコード

「ASCII(American National Standard Code for Informaition Interchange)」は、1963年アメリカ標準協会(ASA)で制定された7ビット符号) コンピュータ はアメリカを中心に発達したものであり、アルファベットも欧米文字なので、アルファベットのコード化はアメリカでいち早く設定されました。1963年 これがグローバルスタンダードとなっているASCII(アスキー)文字コードです。

アスキーコードでは、上記96種類に制御文字32個を加え、128のキャラクタを7ビットでコード化しています。 コンピュータ のOS等は、皆このASCIIコードを使って設計されています。

■ ISOコード

「ISO(国際標準化機構)」によって決められたコード体系。特に1967年制定の、ISO/R646-1967は、英数字に対する各国の定義の基礎になっています。

ほぼASCIIに準じているが、12個の空き符号を設け、各国の事情に応じられるようになっています。

※ JISにも、ローマ字用7ビットコード、カタカナ用7ビットコードが有る。 又、JISローマ字・カタカナ用8ビットコードも有ります。


 

これらのコード体系で表示される文字は、1文字当たり1バイトのメモリを必要とし、「1バイト文字」、或いは、「半角文字」と言います。

「1バイトコード体系」資料参照

 

■ 2バイト文字コード

ところで、では日本語の場合はどうでしょうか。
「50音」と言う位ですから、平仮名だけでも約50個、カタカナも同数。濁音、半濁音等も有ります。そして何より膨大な漢字が有ります。それに英数字も使います。 到底、1バイト・256のバリエーションではコードし切れません。

そこで日本語は2バイト(16ビット・65536バリエーション)でコード化します。 これを「2バイト文字」或いは「全角文字」と言い、1文字表すのに2バイトのメモリを必要とします。

■ JISコード

JIS (日本工業規格)制定のコード体系。 現在、第一水準、第二水準まで制定されています。
JIS第一水準では、漢字2965字、平仮名83字、カタカナ86字、数字10字、英字52字、特殊記号147字、ギリシャ文字48字、ロシア文字66字、罫線文字32字、合計3489字からなる。 JIS第二水準では、多少の部首字形を含めた、3388字が含まれます。

■ シフトJISコード

JISコードは2バイトだが、1バイト、2バイトが混在しても判別出来る様に、なおJISコードを其のまま使える様、日本のマイクロソフト関係者を中心に策定されたコード体系。

日本語表記のデファクトスタンダードになっています。 パソコンは全てシフトJISを採用。

※ 日本語だけでなく、中国語、アラビア語等、文字数が多く2バイト文字コードを使っています。 又ここに記述しただけでなく、色々なコード体系が存在します。

■ 文字化け

■ コード体系による文字化け

この様にコード体系に幾つかの種類が有ります。 英数字(1バイトコード)の場合、キャラクタ数も少ないし、コード体系の違いで、同じ文字に対するコードがが違う、と言う問題は余り有りません。

日本語(2バイトコード)の場合、コード体系の違いで、同じ文字で有りながらコードが違う、と言う場合が有ります。
例えば、「漢字」のコードは、シフトJISで「8AGF 8E9A」ですが、UNIX等で使われているEUCコードでは「B4C1 BBFA」(何れも16進数表示)になります。

つまり、コード体系が違うと、違う文字に変換表示される場合が有るのです。 この様に、作成側と表示側でのコード体系の違いで、全く訳の分からない文字列が表示される事を「文字化け」と言います。
「テキストデータ」は、最も互換性の有るデータ・ファイル形式ですが、この様に「コード体系」が違うと正しく表示されない場合も有りうる訳です。

※ バイナリデータの文字化け 「文字化け」に付いては、もう一つ別の要因が有ります。 テキストデータでない「バイナリデータ」をテキストエディタ(Win付属のメモ帳など)で無理やり開いた場合です。 この件に付いては章を改め「デジタル画像」で。


Column―

テキストファイルサイズ

文字データとそのメモリサイズの関係について、実際に検証して見ましょう。
Winで「秀丸エディタ」等、テキストエディタを使っている人は、以下のことをやって見てください。 無ければWin標準付属の「メモ帳」でも結構です。

エディタを開き、半角文字1個を入力して、そのままデスクトップに保存して下さい。 ファイルを右クリック、プロパティで「サイズ」を見て見ると、チャンと「1バイト」と表示されています。
同じく全角文字を含めいろいろ入力して見ると その都度ファイルサイズを確認できます。 「メモ帳」でもほぼ同じ結果を得られます。

「ワード」「ワードパッド」では、上記のようにキャラクタ1個ごとのファイルサイズは表示出来ません。 実は、ワープロソフトのデータは「テキストデータ」では無いのです。このことについては後でもふれますが。

広辞苑

ところで、ではあの「広辞苑」は大体どの位のサイズなのでしょうか。
とても1文字づつ数える訳に行きませんが、計算すると約930万個の文字が有ります。 図表などを抜きにすると、約1,800万バイト、つまり18メガバイト位になる訳です。

今,ハードディスクは、1台で300ギガバイトなどと言うものが出回って 居ます(2005年8月現在)。単純計算すると、広辞苑約16,700冊分も保存できることに なります。
ですから、ワープロや表計算だけでの使用なら、一生かかっても ハードディスク1台を埋めることは出来ないでしょうね。

そして大切なことは、デジタルでは上記の様に、全て数値で計算可能だと言うことです。

遺伝子 DNA

人間の遺伝子DNAのメモリサイズはどのくらいでしょうか。
30億塩基対、と言いますからともかく文字数は60億個です。 紙に書き出したとすれば、広辞苑約650冊近くになります。
しかしビットで表す情報量、と言うことでは次の様になります。 これは「分子進化の中立説」で世界的に有名な進化生物学者、木村資生氏が、その著書「生物進化を考える(岩波新書)」の中で計算してくれています(94ページ)。 それに基づいて、概要を記載して見ます。

60億個の塩基を文字とした文章は、どの位複雑な命令を表すことが出来るのか。 これは遺伝情報の量を英文に換算して見るとよく分かると思われる。

DNAは、A,T,G,Cの4種類の文字、英文はアルファベット26文字と語間スペースも1文字と数えて合計27文字。 これをビット変換すると、DNAの4文字は2ビットとなり、アルファベット27文字は約4.75ビットとなる。
故に、情報量の上では英文の1文字はDNAの約2.38文字(塩基)に該当する。

これで計算すると、ヒトの受精卵が含みうる情報量は英文換算、約25億字の文章に相当する。
大きな書物の例として、大英百科事典で考えると………、 この1956年版は全体で23巻、各巻およそ1000ページ、全体として2億字を含むと推定される。
したがって単純計算で、DNAは英文換算で大英百科事典12セット分に当たるという。

この膨大な情報量そのものにも驚くけれど、これが目にも見えないほど小さな細胞の、さらにその中の核の中に巧妙に折りたたまれて格納されていることは驚異としか言いようがない。
しかし分子生物学の所見によると、高等な哺乳動物では、DNAの中で、遺伝子として働く部分は「エキソン」と呼ばれるホンの1部で、残りの大部分は「イントロン」と呼ばれる、今のところハッキリした機能が分からない、いわば「ガラクタ」と考えられている。
又「中立説」によれば、どの塩基(文字)が来ても生存に関係なく、そこに何でも文字さえ書いてあれば内容などどうでも良い、と言う部分がたくさん有るそうである。
それらを差し引いた場合、普通の意味の情報量は、大英百科事典1組(23巻)相当と考えられる。それにしても、膨大な情報量ではある。

※ 2005年9月、それまでホンの数%とされていた機能領域が、実は70%以上ある、との研究成果が、理化学研究所などの国際研究チームにより発表された。 それを前提に計算しなおすと、大英百科事典8セット分以上と言うことになる。 なんとなくホッとした感じ。 そしてこのDNAセット(ゲノム)が、赤血球等を除く、約60兆個、或は100兆個と言われる、全ての細胞に入っている訳だ。 生命の不思議に舌を巻くばかりである。


■ バイナリデータとテキストデータの関係

バイナリデータは、プログラム毎に記述の仕方が違うし、作成したソフト毎に違いますがいずれにしても2進数のデータで、この点だけ言えばテキストデータも同じです。
従って、バイナリデータファイルでも、テキストエディタで無理やり開けば開ける場合が有ります。 その場合、全く意味の無い文字の羅列として表示されます。

それは、各プログラムのアーキテクチャーによって記述された2進数字を読み込み、その数字でコードされている文字を表示して来るからです。

■ データの互換

しかしこの手法は、異なるアプリケーション同士のデータ交換に使えます。 表計算ソフトである「EXCEL」と「葉書宛名ソフト」は、そのままではデータの互換が有りません。しかし、CSV形式等のテキストデータに変換すれば両方のソフトで互換が可能です。
一旦CSVで取り込んでから、それぞれのアプリケーションで編集すれば良い訳です。

■ ワープロソフトのデータと、Illustratorのデータ

ワープロソフトは、「ワードプロセッサ」の言葉どおり、主に文字を取り扱いします。 しかし実はワープロデータは、「テキストデータ」では有りません。
フォントの種類や、装飾等、単に文字との関連付けにとどまらない情報を含んでいて「バイナリデータ」です。

Illustratorのデータはどうでしょうか。最もテキストデータと縁遠いように感じられます。
Illustratorのファイルを「秀丸エディタ」等のテキストエディタで開くと、有る程度意味が判別できる文字が表示されます。

実はIllustratorは「ポストスクリプト」と呼ばれる文法で記述された「テキストデータ」なのです。 これは、HTMLファイル等でも同じことです。 このことについては章を改め「デジタル画像」で述べます。


― PAGE-TOP ―