文字化けについて

この記事はpyspa Advent Calendarの19日目の記事として書かれました。 昨日はrokujyouhitomaの「アクアリウム始めたいので商品をしらべる。そして始める日は来るのか」でした。私もデスマが終わったらアクアリウムやりたいと思いもう10年くらい経っている気がします。

rokujyouhitoma.hatenablog.com

TL;DR

文字化けは人類の進歩の証、人々の営みと企みの間に生まれたグリッチ

はじめに

「文字化け」という言葉が生まれたのはいつのことなのかはわからない。だが、文字化けというものを、言語の表現に必要な構成要素 (音素など) を符号化し並べたものがあったときに、その符号の並びの解釈が送り手と受け手との間で相異なった状態であると定義するならば、文字化けの誕生はすなわち文字の歴史ということになるだろう。アドベントカレンダーとして本当はもっと卑近な話題を書いて終わるつもりだったが、文字の歴史から文字化けについて論じてみようと思う。筆者の調査力の限界から出典があやふやなものも含まれているが、追って加筆・修正していく予定である。

文字の歴史

現在表音文字として使われている文字の多くは、その起源を古代エジプトエジプト語話者の発明であるヒエログリフに辿ることができる。ヒエログリフは当初こそ表意文字として用いられていたが、時代を経るにつれ、個々の文字が表す単語の頭字を表音する文字としても利用されるようになった。同じくして、当初は特権を持つものにのみ利用が許されていたヒエログリフ自体の「民主化」が進み、ヒエログリフヒエラティック、デモティックなどの派生を生み出した。エジプト王国は多民族国家であり、同じアフロ・アジア語族ではあるものの音韻体系の違う言語を使用する民族も支配域に多く居住していた。原カナン文字はこうした民族の一部が自らの言語の音素を表記するためにヒエログリフヒエラティック表音文字として借用したことで生まれた派生の一つである。原カナン文字から派生したフェニキア文字フェニキア人の商人によって地中海の交易で幅広く利用されることとなり、おそらくは独自の文字を持たなかった印欧語族 (アフロ・アジア語族とは全く異なる) の言語を用いるギリシア人やラテン人といった民族たちにも自らの言語を表記する文字として借用されるに至った。本来はアブジャド (子音のみを音素として表記する文字体系) であったフェニキア文字の一部の文字を母音に代用する試みが生じたのも、こうした後世の借用の中でのことだった。

一方、楔形文字も同時期にヒエログリフとは独立して古代メソポタミアのシュメール語話者によって発明された。これも当初は絵文字からなる表意文字が、葦の茎で直線的な構成要素からなる記号を粘土板に刻むことで表現されるようになり生じたと考えられている (諸説あり)。また、一部の文字は時代を追うごとに音節文字 (子音+母音など複数の音素を表す文字、日本語のひらがなやカタカナもこの一種) に変化した。当初はシュメール語の表記のための文字体型であったが、シュメール人の王国が征服され公用語や日常言語としてのシュメール語が地位を失っても、アッカド人、バビロン人 *1 などほかの民族に借用され、利用されつづけた。早い段階で表音文字化したヒエログリフの辿った歴史とは違い、表意文字としての性質はそのまま借用先の言語でも引き継がれ、表意に用いられる文字は意味を保ちつつ音価を変えた一方で、音節として用いられた文字はそのままの音価で継承された点は興味深い点である。

この文字の歴史から示唆される内容とは何かというと、古代から同じ文字が複数の言語の表記に使われるという事象は発生しており、「文字自体は読めるが文章が読めない」という事態が発生していたことである。文字化けではないが、人類が初めて体験した「文字情報の交換において送り手と受け手の前提に相違があることで起こる」現象はここで発生したと考えてよいだろう。

文字の符号化の歴史

文字の符号化の起源をどこに求めるかは難しい。たとえばシーザー暗号として知られる暗号化スキームは、個々の文字に順序性があることを暗黙に仮定することで初めて成り立つものであるから、ユリウス・カエサルの時代である紀元前100年ごろにはすでに符号化という概念が生じていたともいえる。しかし、近代的な電子的な通信という文脈に限定するならば、1800年前後に始まった電信の発明がその起源という見方ができる。

技術革新と電信

最初期の電信の仕組みは静電気とライデン瓶のようなキャパシタに依存し、利用する文字種ごとに電線を必要とするというものだった。これは、安定的な直流電源を用いて時系列的な信号を作ることができなかったことによる。アレッサンドロ・ボルタ1800年に化学電池を発明したことで人類は初めて一本の電線を通る電流に符号を多重化する術を手に入れた。1825年にウィリアム・スタージャンが電磁石を発明、1835年のジョセフ・ヘンリーとエドワード・デイビーがそれぞれ独立にリレーを発明すると、減衰するパルス信号を増幅することが可能になり、電信が長距離の通信手段として一気に実用性を帯びることとなった。

最初の商用電信機構は1839年にチャールス・ウィートストーンらによって開発された。これは機械的な機構を用いてパルスを発生させ、受信側にある円盤上の針を電磁石で所定のステップ数だけ回転させ文字を指針させることにより伝達するものだった。この方式では送受信にそれぞれ1本づつ、2本の電線を必要とした。当然だがこの機構を繰り返し用いて通信するには、通信の終了後にかならず送信側と受信側の針をスタート位置に戻さなければならない。もしこの操作を怠った場合には、意味のない文字列が受信側に現れることとなる。

電信の発明はもっぱらイギリスを中心に進んでいたが、1844年にアメリカ人のサミュエル・モールス、アルフレッド・ヴェイルらが文字を符号化することにより、半二重通信を単線で行う電信方式を発明する。モールスらの発明はオーストリアプロイセンバイエルンザクセンから成るドイツ=オーストリア電信連合 (AGT) において1850年に国際電信の方式として採用されるが、ここで採用された符号化方式はモールスのオリジナルの符号とは大きく異なるもので、フリードリヒ・ゲールケの改良をベースとしていた。この改良にはドイツ語の表記に必要なウムラウトと子音 (ch音) が符号に含まれている。一方、フランス・ベルギー・サルデーニャ王国・スイスの4カ国で1855年に西部欧州電信連合 (WETU) が発足した。

電信の需要が急速に増加し、両者の連携が密になる一方で、経路のポリシーに関する差異などが問題になることも少なくなかった。統一を希望する声が高まる中、1865年のパリ万国電信条約で今日も電気通信の標準を統括する国際電気通信連合 (ITUもしくはUIT) が発足し、1868年のウィーン万国電信条約では新たにフランス語とスペイン語の表記に用いられる文字が含められた標準が定められた。これが国際モールス符号である。

電信は1875年にアメリカのアレクサンダー・グラハム・ベルによって電話が発明され、AT&Tによって商用化されると、電気通信の舞台からは少しずつ影を潜めることになる。

テレタイプ (テレプリンタ)

テレタイプ (テレプリンタ) は電信の機構にタイプライターを結合したものである。最初の商用化されたテレタイプは1846年にロイヤル・アール・ハウスが発明したもので、受信側は56のタイプヘッドを持つデイジーホイールプリンタのような機構を持ち、送信側はピアノの鍵盤のような28鍵とシフトキーを持っていた。文字の選択にはパルスを用い、1時間に2000語の送受信が可能だった。

フランスのエミール・ボドーの最初の発明はこうしたテレタイプの信号線を一定の時間間隔で切り替え、単一線で複数のメッセージを同時送信する時分割多重化だった。しかし、文字ごとの送信時間が異なるため、時分割間隔を広くせざるを得ず、さらに効率を高めるには文字によらず一定の時間で信号を送出する必要があった。そこでボドーは、当時あった様々なアイディアをつなぎ合わせ、1874年 (諸説あり) には5ビットのコードで文字を送受信するボドー・システムを完成させる *2。ボドー・システムは5つの鍵盤を持っており、機械から音がするまで文字コードに対応する鍵盤の組み合わせを押し続けることで1文字を送信する。この手順によりおよそ1分間に30語の送信が可能であった。このシステムは一つの信号線を時分割して4つのテレタイプを接続可能だったので、信号線あたりのスループットとしてはハウスのシステムの3.6倍ということになる。ボドー・システムのコードの特徴はいくつかあるが、特筆すべき点は2つあり、1つはレターケースとフィギュアケースと呼ばれる2つのシフト状態を持ち、コード表を切り替えて文字を送受信する状態を持つコードセットであったということ、もう1つはBlank (空白の挿入) とErasure (1文字削除を表す) という制御コードを持っていたことである。

ボドー・システムは1875年にフランス電信局に正式採用された、また、1878年のパリ万博でも公開されると、各国の興味を引くことになる。1897年には英国郵政公社がボドー・システムを導入し、イギリス国内に広まっていった。しかし、イギリスではフランス語の記述に必要な一部のアルファベットを必要としなかったため、そこに別の記号を割り当てた独自のコードセットを採用した。記録に残っているわけではないが、筆者はこのコードセットの違いにより国際テレタイプの利用時に文字が「化ける」事態が発生していたのではないかと推測する。

1901年ごろ、オーストラリアでシドニーの新聞社にエンジニアとして勤務していたドナルド・マレーはタイプライター状のキーボードとテレタイプを結合したシステムを考案する。当時の新聞社ではタイプライターが広く普及しており、多くのオペレータがいわゆるQWERTYキー配置に慣れていた。マレーは、低い教育コストでテレタイプを利用可能にするシステムとしてこの構成を生み出した。マレーのシステムは、タイプライターと同じキー配列を持ち、紙テープに穿孔を空けるためのパーフォレータと、その紙テープに記録された文字コードに基づいてメッセージを送出するトランスミッタの2つから構成されていた。ボドー・システムのコードはオペレータが覚えやすいような割り当てがされていたが、マレーはこのシステムではそのような考慮はもはや不要であることに気づき、機械の摩耗を考慮して使用頻度の高い文字についてはより少ない穿孔で済むようなコード体系を新たに考案した。また、現在ではキャリッジ・リターンやライン・フィードと呼ばれるような制御コードを生み出した。

アメリカのテレタイプの大手であったウェスタンユニオンは、このマレーのコードを採用し、さらにいくつかの制御コードを追加する改良を行った。この新しいコードはさらにITUの一部門であるCCITT (現ITU-T) でITA2として標準化される。ITA2のコード表は次のようなものであった。

ビットパターン レターケース フィギュアケース
00000 (0) n/a n/a
00001 (1) T 5
00010 (2) CR CR
00011 (3) O 9
00100 (4) SP SP
00101 (5) H 各国文字用
00110 (6) N ,
00111 (7) M .
01000 (8) LF LF
01001 (9) L )
01010 (10) R 4
01011 (11) G 各国文字用
01100 (12) I 8
01101 (13) P O
01110 (14) C :
01111 (15) V = または ;
10000 (16) E 3
10001 (17) Z + または "
10010 (18) D アンサーバック
10011 (19) B ?
10100 (20) S '
10101 (21) Y 6
10110 (22) F 各国文字用
10111 (23) X /
11000 (24) A -
11001 (25) W 2
11010 (26) J ベル
11011 (27) フィギュアシフト フィギュアシフト
11100 (28) U 7
11101 (29) Q 1
11110 (30) K (
11111 (30) レターシフト レターシフト

各国文字用 (National Use) という言い方は現代では不適切であるが、これらのコードは、テレタイプの利用国で必要とされる文字を割り当てるというものであった。たとえばドイツであればウムラウトである。

このITA2は第二次世界大戦後、ITU-T T.50もしくはISO 646もしくはASCIIとして知られるようになるコードセットの原型となる。

パンチカード

機械で読み取り可能な情報媒体としての、等間隔にパンチホールが空けられた紙テープは1700年代から織機の制御に用いられ、1801年のジャカート織機の発明に結実するなど、すでにその応用性については知られていたが、情報処理に使われるまでには19世紀末、ハーマン・ホレリスの作表機とパンチカードの発明を待たなければならなかった。ホレリスの設立したTabulating Machine Companyは他の4社と合併し、のちにInternational Business Machineと名前を変えるComputing-Tabulatiing-Recording Companyとなる。

1920年代の終わり、45桁12行というパンチカードの容量の増大を求める顧客への対応として、IBMの社長であったトーマス・J・ワトソンはパンチカードの大きさを変えずに容量を増やす方法を考案するよう二人の社員に要求した。その結果、穴の形状を長方形にし、カラム幅を狭めて80桁12行にするという方法に落ち着いた *3。この規格に基づいて、1932年にIBMはゾーンパンチ位置を含む12行のパンチカードで英字の大文字、数字と一部の記号を表現可能な符号を考案する。これはBCDIC (Binary Coded Decimal InterChange Code) として知られる符号化方式の元となった。

最初のバージョンのBCDICのコード表は次のようなものであった。

- A B BA
0 SP n/a - &
1 1 n/a J A
2 2 S K B
3 3 T L C
4 4 U M D
5 5 V N E
6 6 W O F
7 7 X P G
8 8 Y Q H
9 9 Z R I
10 0 n/a n/a n/a
11 n/a n/a n/a n/a
12 n/a n/a * n/a

この縦13行のうち、0行目は穿孔なしを意味しており、それ以外はパンチカードの12行に対応している。上記のコード表の行とパンチ位置の対応は以下のようになる。

パンチカードの行位置 コード表の行位置 ゾーンパンチ?
12 12 y
11 11 y
0 10 y
1 1 n
2 2 n
3 3 n
4 4 n
5 5 n
6 6 n
7 7 n
8 8 n
9 9 n
8-X 8 + X n

また、A B BA は0, 11, 12行目のゾーンパンチの穿孔状態を示している。

  • パンチカードの0行目のみに穿孔がある場合、これは文字 0 を表す。
  • パンチカードの0行目と2行目に穿孔がある場合、これは文字 S を表す。
  • パンチカードの11行目のみに穿孔がある場合、これは文字 - を表す。
  • パンチカードの11行目と8行目と4行目に穿孔がある場合、これは文字 * を表す。

このコード体系はあくまで作表機のために生まれたものであったが、作表機が電気的な方法によってパンチカードの情報を処理していたことから、第二次世界大戦後に商用化されたコンピュータの記録媒体として用いられるのは自然なことだった。1953年に発表されたIBM 702は、この40文字のコードをさらに48文字にまで拡張し、このコードをBCDICと名付けた。時を同じくして、FORTRANのような高水準のプログラミング言語が生まれ特定の記号への需要が生じたこと、英語以外の言語を用いる国での需要が生じたことから、BCDICの文字の一部を入れ替えたコードセットのバリエーション (duals) が複数生まれた。このことで、従来の文字セットを前提とした環境でFORTRAN用のBCDICコードセットを用いると記号が「化ける」という事態が生じた。例えば

X=(A+B)*(C-D)/(E+F*G)

というFORTRANのプログラムはオリジナルのBCDICでは

X#%A&B¤*%C-D¤/%E&F*G¤

となってしまう。特にこの問題は、特定のコードセットを前提に作られていたプリンタの利用において深刻であった。

すぐに人々はこの問題に苦しめられることになり、さらなるBCDICの拡張が求められたが、最終的な解決はEBCDICの誕生を待つことになる。

参考文献

*1:旧約聖書の「バベルの塔」は一説によるとバビロニアに建立された塔であるという。

*2:現代のシリアル通信で用いられるボーレートと呼ばれる概念は、ボドーの名から来ている

*3:余談だがこの80桁という数字は端末の標準的な桁数のもととなったものである。