研究会報告


| 1 | 2 | 3 | TOP |

開会・挨拶

開会 [入江] 第2回ライブラリー研究会を始めます。今回司会を務めさせていただきます入江と申します。第1回以降いろいろな論議があった訳ですが,第2回では芝野先生に文字コードに関するご講演をいただいて、方向性を出していきたいと思っております。

この会は本来個人加盟ということで始めておりますが同じ機関から何人もの参加希望がございましたので、大変申し訳ありませんが、席をご用意させていただいたのは機関の代表者1名とさせて頂きました。

では、今回の開催館であります早稲田の金子さんの方より開会の挨拶をいただきたいと思います。

[金子] 本日はお忙しいところ、お集まり頂きましてありがとうございます。私は今ご紹介いただきましたように早稲田大学図書館の学術情報課の金子と申します。よろしくお願いいたします。今、ご説明がありましたように第2回研究会では文字コードの問題ということで芝野先生にご講演をいただくことと、いくつかの事例報告を後半に予定しております。

第1回の研究会はご出席いただいた方はご存知だと思いますけれども、いろいろな話題が出まして、それなりに盛況であったと思っていますが、引き続き第1回の成果を踏まえて、さらに発展させていければと思っております。この場は図書館システムを核にして、図書館の方、関係する企業の方、研究者の方とハイブリッドな集まりになっていますが、そうした中でいろんな立場を出し合って論議を展開できればと個人的にも期待しております。

それから、会場校の立場としてもご挨拶させていただきますが、参加人数がなかなか読み切れなかったということもございまして、思ったよりもかなり参加が増えたということで、若干席がご不便なところもあろうかと思います。ここでお詫びを申し上げます。また、この会場・図書館の設備も、いろいろとご制約があろうかとは思いますが、できるだけご活用いただければと思います。

今日は早稲田のスタッフも後ろの方に参加しておりますので何かございましたら早稲田のスタッフあるいは私にお申し出いただければと思います。以上簡単ではございますがご挨拶とさせて頂きます。

[入江]それでは第一部のご講演の方に入らせていただきます。今回の講演会は前回の研究会で文字コードに関するいくつかの論議がありまして、その整理をしたいと講演をお願いできる方を探しました。探すという以前に、気持ちとしては芝野先生にお願いしたいと思っていたのですが、JISの委員長をはじめ、日本における文字コードの規格化など全体的な整理をしている上、図書館のいろいろな規格についてもご見識のあられる芝野先生にお願いいたしました。芝野先生は現在東京外国語大学アジア・アフリカ言語文化研究所の所長をされています。その他、国際機関の経験もたくさんありますので、どのようにご紹介していいかわからないので先生の方から自己紹介を含めお願いしたいと思います。芝野先生よろしくお願いいたします。

第1部 講演会 「文字コードと図書館」

[芝野]外国語大学の芝野と申します。図書館の人たちとは、付き合いがいろんな箇所で長くて、もともと私の専門は基本ソフトがメインで、データベースから始めて、DB、DCとやってるうちにコンテンツ側にも行ってしまったと。今やってることも、20年間続けているISOJISのSQLというデータベース言語の開発がありまして、データベースと名前がつきますと、ISBN・ISSNのJIS化を始め、いろんなところで図書館情報の方に間違われてインヴォルドされてくれというのが永遠と続いております。主にやっている仕事は、SQLの国際規格あるいはJIS規格と、私の提案で始めているSQLマルチメディアというSQLMMという、SQLの上にもう少しアプリケーション寄りの皮をかぶせるという規格になります。現時点では、地理情報を扱うスぺーシャルと全文検索を行うフルテキスト、静止画像のスティルイメージ、今新しく開発している途中のものがデータマインドの機能を持ったパッケージです。基本的にはオブジェクトオリエンティッドのSQLのライブラリを作っている、と思っていただけるといいかと思うのですが、JAVAのまわりにいろんなライブラリがあるのと同じように、SQLランゲージのまわりのライブラリを開発していますが、こちらの方は国際委員長もしています。 マルチメディアデータベースから派生いたしまして、1980年代の前半にSGMLとぶつかってしまって、電子文章をどういう形でデータベースの中にいれるかということで、一番初期にはOEDのセカンドエディションのデータベース側のサポートの話とか、そういうところからSGML入りまして、89年から5年程通産省でSGML懇談会を作って、代表幹事というものをやりました。その結果として、日本語文書処理の問題がいっぱいあるということで、仮名漢字変換とか日本語のソート順、照合順番と言いますが、それの規格とか、日本語の組版機能ms-wordをはじめ、ほぼほとんどの日本語のワープロソフトが採用していますが、JISの日本語組版というものをやっています。そしてその後、今度は文字もおかしいということで、JIS規格の委員長と国際対応の委員長を93年に初めて兼ねました。それ以前は、国内と国際対応は別の先生がやるという形で出てたのを、私が初めて兼ねることになりました。それ以降、JIS化していた文字コード関連の規格を全部改正しました。97年からISOの文字コードを担当しておりますSC2の委員長をやっております。国際委員長は3年任期でそれが2期ですから、もう4年目に入りましたので、あと2年で無事任期満了ということになります。2年間で残りのいくつかの課題を改良したいと思っております。

図書館情報関係のところと関わりというのは、NIIというか、昔の学情とのお仕事をはじめ、もう20年ぐらいありますので、それとインフラのDBとかDCとか基本ソフトというのも長いことやってきましたので、むしろ何かそういう関連の話がありましたら、基本的にはほぼ何でも答えられると思って下さい。 今日は、ISOでの符号化文字集合規格を中心に、正確な話を皆さんにしたいと思います。出来る限りお分かりにならない点とか、ご質問とかご意見とかあればどんどん聞いて下さい。必要なものは、ほとんどのものはこのコンピューターの中にありますので、それこそ康煕字典の初版本が3冊この中に入っているとか、諸橋大漢和のインデックスは全部持っているとかですね、それ以外にもいろんなものがいっぱい入ってますので、何か言っていただければ、その場でお答えできると思います。

今日は、ISOの規格をきちっと理解していただきたいと思いまして、そのためには技術というのは一つの体系の中に存在します。ある一点だけをとってみても、それは正しい認識には至らないと、実際に一つのものとして動くためには、その一個だけではなく関連するもの全てが整備されて動くということが必要です。その意味では、文字コード、正確には我々coded character setと言っておりまして、日本語に訳すと符号化文字集合は、分かりやすそうに見えるので、世の中にあまりにもいい加減なことが氾濫しておりますので、全体の体系をお話いたしまして、なおかつ歴史的にこの技術がどういう形で開発されてきたのかをお話します。特にSC2という委員会は、一番小さなナンバーを持った委員会で、情報分野の中でシングルナンバーコミッティーと言うのですが、国際標準が作り始められた時の一番最初にできた委員会のうちの一つです。もう残っているのは、多分SC2とSC6かな、通信と文字コードのところだけがオリジナルナンバーのまま残っていて、それ以外は1のヨウガですら2年ほど前に解散してしまいましたし、3とか4とか紙テープとか磁気テープとかやってたのも、はるか前になくなりまして、オリジナル委員会で最初から残っている、30何年の歴史をもった委員会がこのSC2です。

この中で、一体どういう形で我々の技術開発をしてきたのかというのを含めて、今日はお話したいと思います。最初に符号化文字集合が体系だと言いましたけれど、それがどんな体系なのかと、どんな種類があるのかをまず最初にお話して、その中で一番中心になるのが、当然ながら皆さんが普通文字コードと言うときには図形文字の符号化の問題だと思いますが、どういう形で開発されたのか、開発意図で、なぜこういうものをこういう形で開発出来たのか、何を解こうとして、どういう技術を作ったのか、そしてそれが現在にまでどう至ったかと、具体的には後でご説明しますが、この後にある少し前まで、というか93年以前はISOのバイブルというのは、今でも文字コードのバイブルはあるかと思うのですが、OLD BIBLEはASCIIだったのです。ASCIIというのはISOの646という1バイトコードの規格があって、現在でもこれは一番広く使われている訳です。それからこの646のいろんな問題を解決していく、現在のNEW BIBLEと言う形で位置づけることができるのが10646です。この辺りの話を順番にしてご説明いきたいと思います。

まずですね、符号化文字集合の種類ですが現在3種類の規格に分かれます。一つは図形文字の符号化、二つ目が符号の拡張法、どう拡張するの?、三つ目が制御機能です。あまり細かいやつは一部外したりしてますが、その代わりちょっと変わっているのは、実は図形文字の符号化のところでは646の1バイトの一番ひろく使われているのがASCIIだとか、もう最近そういう言葉も聞かなくなりましたが、JISの1バイトコードも昔はJISCIIと言ってましたね。あるいは、インドなんかはまだISCIIと言ってたりますが、そういうSCIIで言われるStandard Cord for Information Interchangeと言った時の1バイトコードがこの646から始まる各国規格です。もう一つメジャーなのは特にHTML WEBなんかでは最初にスタンダードなセットとして取り上げたのが8859シリーズで、具体的には8859 part1, 2 LATEN1という西ヨーロッパで使う文字コードです。そして現在のベースになっているのが10646、あるいはUnicodeと言ったりするかわかりませんが、基本的にはUnicodeと10646のISOの開発はシンクロしてやっております。もう一個はですね、符号拡張法というのがあります。符号拡張法とは基本的には二種類の世界があって、7ビット8ビット系で使う2022の世界、正確には2022の上に8ビットは4873という規格でもう少し8ビット系を正確に書いておりますが、それと16ビット32ビット系を主とする10646の二種類の符号拡張法があります。そして制御機能は6429という制御機能があります。最近では、あんまりご存知ない方が増えてるかと思いますが、少し前のキャラクターディスプレイのターミナルとか、10年くらい前のパソコンとか、今でもDOS窓を開くとそこで動くコントロールが6429、昔はASCIIのエスケープシーケンスとかASCIIのコントロールと言ってたやつですが、この6429です。それを含みながら、なおかつ一部、6429の基本思想とは異なる思想の制御機能をもつのが10646です。ある意味で10646は従来バラバラにやってきたものを全部統合的に扱っている見方が出来るかと思います。

芝野先生 ちょっと細かいところは説明できないかもしれないので、何か分からないことがあれば後で言っていただけると何でも説明いたします。

このISOの体系がどう動いてきたのかということを、主な規格と主なアイデアというか、考え方を流れ図の形にしたのがこれです。最初に、文字のコード化あるいはデジタルで文字を扱うと言うときの長く使われたのがCCITT、今だとITUと言いますが、通信分野のCCITTのアルファベットナンバー2というのが最初の文字コードになります。そして、これを受けてアメリカで情報処理が広がってくる、1960年代になると、情報処理分野では文字コードの標準化が要請されて、その時にCCITTの通信の世界と情報の処理の分野と両方で共通のコード化を目指して、情報の分野としては初めての文字コードとなったのがASCII63です。これが現在のASCIIと言っているものの、簡単にいうと小文字がないものです。7ビットASCIIじゃなくて最初の63は6ビットのASCIIです。そして、それからこれをもとに63から世界の国際規格の開発が始まる。ヨーロッパでもECMAという、最近名前をアクロニムではないと言い始めましたが、もともとはEuropa Computer Manifactures Association、ヨーロッパコンピューター製造者協会での標準化、日本では和田弘先生の電気試験場でのコード会というActivity等がこの60年代に入ると起こってきます。これらのものを統合して作られたのがISOのR646、当時レコメンゼーションと言ってまして、まだStandardではなかったのですが1967年に出ています。実はこの間に、幻のASCII65があります。幻のASCII65とは何かというと、後で文字コード表をお見せしますが、大文字の後に続く、ちょっと変な特殊文字がありますが、それの一部をアメリカが入れ替えようとしたのです。そして7ビットの小文字も追加すると、それは前の63からの異互換変更であるということで、ヨーロッパを主に大反対がありまして、国際規格というかアメリカ規格の出版直前に取りやめた。国内の処理は全部終わっていて、アメリカナショナルスタンダードとしては全部通っているにも関わらず、国際整合性のためにASCII65は廃規格としています。ですから、いろんなところで、この文字コードと文化を一緒にして、国粋的な理論がここ数年長い間あったのですが、それはアメリカですらヨーロッパとの整合性、国際整合性のために、自分の所でちゃんと作っていたASCII65を潰して67のISOが出るまで2年間待つということをしています。後でISO646あるいはこの後でご説明したいと思いますが、646は簡単に言うと大きくは94の図形文字と32の制御文字という文字コードの空間を、二つの種類に分けているのが、まず一つ大きいことです。次に94文字のうち82文字は全部共通よ、これは変えちゃいかんよ、逆に12文字は変えても良いとしたこと。そして12文字を入れ替えた各国の、あるいはアプリケーションの用途によって別の版を作るという、普通の国際規格と違うこの646の特殊な性格があります。理由は646が、例えばラテン文字はアメリカの侵略だというバカな話が出たりすることがある訳ですが、世界で一番ひろく使われているのがこのラテン文字で、日本語でもローマ字だとか中国語もラテンで書ける、世界中でラテンで言語は書ける訳です。なおかつ皆さんの分野の図書館の書誌情報というのは、トランスリタレーションしてラテントランスリタレーションの国際規格がいっぱい出ている訳で、世界で一番広く使われている文字で一番共通部分の核からスタートしたのが、ISOの文字コードの規格です。それの最初のとっつきが、当然ながらラテンであるという論理的な帰結かと思います。ただこの6ビット7ビットの世界はあまりに狭い訳です。そのために後で詳しい話をいたしますが、基本的にここから単に32ビットとか64ビットをやればいいんだと言われますが、我々システム屋というのは、いつもあるメモリのどの範囲で動くんだということを常に言われていて、文字コードのユニットサイズがトンと大きくなると、突然2倍3倍のメモリがかかる訳ですね。あるいは、1バイトから4バイトに行くと、そこで突然4倍になるとハードディスクも高くなるよ、メモリも高くなるよと皆に言われる訳です。そうしますと6ビットから7ビットにするのも、かなり大変でしたし、7ビットから8ビットというのもこの1ビットづつでもかなり大変なことだった訳です。そして94文字で足らないというのは明らかで、どうするのか、それと共通の基本ラテン以外の文字も扱いたいという問題が起きるわけです。そのために一つ2022という符号拡張法というのが開発されるのです。この符号拡張法の開発というのはもう一つの意図がありまして、日本ではこのR646が1967年に出て、すぐに現在のJISのX0201という1バイト規格、JISカナ、いわゆるJISカナで1バイトのカナは最近みんなに嫌われますが何ら悪いことをしてる訳ではなくって、それを69年に出しまして、その後すぐに実は漢字コードの開発にはいります。情報処理学会の規格委員会でスタートしてる訳ですが、それとともに当時の日本はちゃんとした国で国際規格に対してもちゃんと漢字を通るその枠組みを国際規格の中に作る、それが2022の開発に繋がります。2022がマルチバイトをサポートしてるというのは日本で漢字をやるためにはシングルバイトでは無理と,当然94では無理ですから94×94のダブルバイトでの符号化というのを、国際的に認められる国際整合性をもった規格として作ると、そのための基盤が2022です。ただし、2022があって何とかと言い方はウソです。2022は646アーキテクチャーの上にたって、それを拡張するものであって2022があるからと言って、2022から見るという言い方はほとんどウソです。過去、残念ながら、3年か4年前に2022のJISを改正しましたが、その前のJISの2022は500とそれと規格にない注みたいなうだうだした変なものを追加するという、とっても変な規格でしたから、昔にJISのx0202と言いますが、それをご覧になられた方はもう一度読み直していただく必要があるかと思います。

そしてもう一つは646で始めた基本ラテン文字、簡単にいうとa-zまでの26文字に大文字小文字で52文字に、ベースがそれに一部の特殊文字と数字が追加された、こういう世界では足りないという話から一つはテキストコミュニケーション用に、もっとちゃんと言語を扱うことができる文字コードが必要であるというのが出てきます。それで開発されたのが6937という。それともう一つは646における文字合成というのが曖昧である、あるいは一意の文字の符号化ができないというかなり技術的な欠陥がありまして、それを解消しようと、なおかつヨーロッパ系のアクセント付き文字を含むラテン文字全体に適用しようと、ヨーロッパ全域と考えたのが6937の世界です。ここではバックスペースとかキャリッジリターンとか、そういうものでやる合成文字とは違うノンスペーシングアクセントと言いますが、字送りなしのアクセントを使うという方式で合成を6937はやっています。これから数年経つと、今度は合成は嫌だと合成なしにしたいということで、ただしヨーロッパ全域ではなくて各パート毎にヨーロッパ一部地域をやると、具体的には当時何を考えたかというと、実はこういう技術がかわっていく後ろには、想定しているテクノロジーが変わっていくんだということを理解いただきたいと思います。具体的には、646の時にはタイプライターで重ね打ちをすると。最近バックスペースで字消えますけど、本来バックスペースは一度字打っちゃってバックスペースでも字消えないんですね。字を消すのはデリートなんです。ただしデリートは紙テープに全部穴をあけるからコードはすべて1をたっているという、そういうところから来ていまして何らかの形でベースになっているインフラ技術というものの影響を受ける訳です。646が単純タイプライターの重ね打ちだったのに対して、タイプライター技術がいろんなアクセントを打つときには文字送りなしのアクセントを使って94文字じゃなくて、もう少し多いJISを使えるようなタイプライターが開発された。それに合わせて6937という規格ができたんです。ですから、ここまでがタイプライター技術です。

80年代にはいるとパソコンが急激に普及し始める訳です。ですがパソコンのキャラクタージェネレターでは文字の合成ができないと、どうするんだというところから、パソコンが普及し始めてキャラクターターミナルになったとたんに当然合成が全部落ちてくるのです。それで出来てくるのが8859のアーキテクチャーです。具体的には8859のラテン1を作ったとき、当時IBMの基礎研究所にいたんですが、この時はDECのPCコードとIBMのコードページでマルチリンガルコードページというのがあったのですが、そのIBMPCのヨーロッパ向けの多言語対応のコードページのその二つがぶつかって、主としてIBMをベースにしてラテン1ができあがったんです。そしてこういうヨーロッパ地域で先行する、8859はヨーロッパに隣接地域のギリシャだとか、あるいはキリルだとかヘブライ語でイスラエルだとか、アラビアとかそういう地域にも国際規格としての文字コードが広がっていった訳です。これを全世界にひろげようというのが、8859とほぼ時を同じくして1983年に提案されるんです。それが10646です。ただし最初はちゃんとした仕事がなかなか進まずに、普通現在のISOのやり方ですとオフィシャルなコミッティードラフトとかドラフト段階になるまでに3年でいかなければプロジェクトはダメよという世界があるんですが、実は10646の開発には10年かかってしまった。

最初はうまい具合に開発が進まずに既にある646の系を引きづりながら、自分たちである意味では文字コードの文字というものに直接向き合うことなしに何とかできないか、とやっていたのが実は10646の初期の提案です。それが破綻して破綻した後を受けてUnicodeに変わる。Unicodeをベースにしたものに変わって現在はそのUnicodeを含めて実際の製品を開発するのと同機をとりながら、国際規格の開発メンテナンスが続いているというのが現在の状況に至ります。

ちょっと646という最初の規格が何だったのか、これがそれ以降現在まで続く聖書と思って頂ければいいかと思いますが、いろいろ見てみると面白いやつがいっぱいありまして、これが646の中の図形文字のパートです。まわりに囲いというか四角がある、ここのところが各国、各国だけじゃなくて適用業務毎に版を作ってもよいと、具体的にはISOに登録されている中には北欧の新聞協会のためのコードだとか、日本だと共同通信コードみたいなのがありますが、それと同じような物をISOの646の版として文字コートのレジストレーションを行っていますがその中に登録することが可能です。基本的にはどうなっているかというとベースは、ここをよく見て頂けるとみなさんよく使っている世界で、日本はこれが何が違うかというとバックスラッシュのところが違うんですね。ここはエンサインが入っていると。もう一つの違いは一番最後の所。ここがまたいろいろややこしいんですが、実はこの94文字を見るとしても、どっかでいろんなところで文字コードとキャラクターセットが独立だというバカな話があるんですが、実はインプリメンテーションアーキテクチャーにディペンドします。文字をどう認識しているのかと、実はその認識すら変わっているところがあるんですが、今コンピュータではよく使うチルドですが、JISコードにチルドがなかったんですね。これはチルドはここの文字は何だと思ったかというとチルドでもオーバーラインでも良いんです。ここで最初の版で考えたこの文字というのは論理既定記号なんです。上にAにバーをつけるかAにチルドを付けるかどっちでもいいんです。今もまだあるISOのレジストリあるいは646の最初の版に書かれていた注をぺろっと取ってきたんですが、この2-2にある引用符のようなもの、2-7のアクセントのようなもの、2-12のカンマのようなもの、5-14にある山形、みんなこれは2-2はダブルクォーテンションだと、その次はアポストロフィーエスのアポストロフだと思う、2-12はカンマしか使わないと、その次は最近であればサーカムフレックスアクセントという理解がメインだと思いますが、実はこれらはユニフィケーションされた複数の意味をもつ文字です。さっきオーバーラインとチルダがユニファイされているとどっち出るか分からないという時代が長い間あった、という話をしましたが実はこれらの文字もユニファイされていましてクォーテーションマークはクォーテーションマークだけじゃなくてウムラウトやダイアリシストとしても使えると。だからAの上に点々とうってもいいしyの上に点々とうってもいいよと。あるいはアポストロフはアキューターアクセントと一緒だと。カンマは皆さん多分これは知らない人がほとんどだと思いますが、カンマはセディアと一緒Cの下にちょんと付く、するとカンマの位置もベースラインより低いところに本来の646を作るためには必要になってくる、ベースライン上かベースラインより下か。サーカムフレックスアクセントは最近ちょっと減ったかと思うんですが、パスカルなんかではあれを累乗に使っているんですが、何で使ったかというとアップアードアローヘッドなんですよ。上向きの矢印の先というのがプライマリーエントリーであった訳です。ですからこういうのは重ね打ちの合成とか、狭い中に押し込むとそういう大きさとかそこでのベースとしているテクノロジーというものに依存して、ここの一個一個の文字が決まっているんです。ですから現在も10646にもベーシックラティのセットは、このままの形で入っていますが、それが実は意味が変わってしまっている、あるいは普通に我々が1バイトで使っているアスキー文字というのも、もうセディアにカンマは使わないですね。そしてオーバーラインとチルダは別にしてくれないとやっぱり嫌よ、とかそういう世界で一応文字コードの互換性というのも厳密にはなかなかとれない、基本はこの646の7ビット系があって、こっちの横に制御文字32文字があって前のここのところが消えてますよね。これは何かというと、ここのスペースというのもスペースではないのですね。長い間SC2ではコントロールと制御機能と図形文字の両方の機能があると言っている。何でかわかりますか?例えばAの上にアクセントを打ちたいと、その時に普通にAを打ってバックスペースしてアクセントを打てばいいんですが、バックスペース2個行っちゃうとスペースで戻して打ってもいいんです。バックスペースとかキャリッジリターンっていうのは、今キャリッジリターンだと行変わっちゃうっていう人もいますが、本来は行を変えるのはラインフィードで、キャリッジリターンっていうのはタイプライターの時からキャリッジリターンってすると1行の先頭に戻るんです。そうすると重ね打ちは1行の先頭に戻って、スペーススペースちょんスペーススペースちょんというのが許される訳です。ここで何が問題になるかというと、もともとは図形文字というのは当然ながら符号化するときには1つの表に1つの文字しか入っちゃいかんのです。同じ文字が2カ所にあったりすると符号化のアンディギュイティが生じるのです。しかしこの制御のシークエンスというか合成のシークエンスは、今言ったようにバックスペースで普通にしてくれればいいのですが、キャリッジリターンを使われたりスペースを使われたりいろんなことをしちゃうとユニークじゃなくなってしまう。それだけじゃなくてデータストリーム上に連続する位置を占めない可能性があるという極めて大きな問題を含みます。実はこれをだまくらかすように使い方としてAのうちにアクセントを付けて、アクセント付きのAを書きたいとするとキャリッジリターンとか途中に変な物をいれるようなことはしないでください、とする使い方が推奨されますが、そういう問題があります。これで世界中の文字コードがかなり統一されたのです。しかし、明らかに94は少なすぎる、何かしないといけない、その1つの方法はこの646が最初から持っているものとして、12のところを置き換えると、12がマジックナンバーなんですけど、ここを置き換えるとフランス語もスウェーデン語もドイツ語もイタリア語もスペイン語もOKで、各国版が作れるよとそのためには何文字くらいと検討をして、12というところを空けたんです。それでもとってもヨーロッパに行くと大変なんです。皆さんよくご存知のように海外出張で困るのが電源コンセントとテレフォンのコンセントが違うという世界で、それもテレフォンジャックが最近はほとんど統一されてきましたが、まだ電源のコンセントが各国毎違う。実はコンピューター分野でも同じようなことがあって文字コードとキーボードです。ドイツとかイタリアとかスペインとかちょっと国をうつると文字コードが変わってしまう。たとえば日本のインターネット接続も初期の頃は日本国内を繋ぐだけに一度アメリカに行ってから帰ってくるとかですね、そういうことが多々あった訳ですね、今なんかどこからどう通っていくかはプロバイダーによってどういくか分からないという時代になりましたが、当然無線なんかやると東ヨーロッパが崩壊したのも、ヨーロッパ全域の衛星放送が始まって衛星の電波のスピルオーバーで西ヨーロッパとか西ドイツがよくないよーって東ドイツで宣伝しても、東ドイツでまるまま直にテレビが見えるようになってしまうともうウソが付けなくなってしまうと。それと同じように文字コードもどんどん無線で出たりいろいろ国境を越えてしまうのです。一つの方法はは合成をもうちょっと何か考えなきゃいけないなという問題と、もう一つ語ドイツ語とフランス語と英語の3つをいちどきに使いたいとか英語とフランス語を使いたいとか組み合わせで、私はこういう組み合わせがあればいいんだという話で出てくるのが符号拡張の話です。まず、文字合成の話を先ほどちょっとしましたが、今文字合成というのは初期のタイプライターモデルから活字モデルに変わっていると思います。646というのはバックスペース等でやるわけです。6937になるとノンスペースアクセントです。その時にはまずアクセント文字を打って最後にベースキャラクターを打つと。小文字のaと大文字のAと両方にうてなければいけませんから上の方にアクセントがいるわけですね。でも、どうも不細工だと。それに対して活版はどうなのというと活字の世界はベースのaという字と最初に置いてその上にアクセント文字を置くと活字のブロックの上に置くわけですから、小文字の時も出るし大文字の時もいいところに来る訳ですね。そういうモデルに変わっているのが実は今の10646の文字合成の基本モデルの変更です。10646Unicodeにも大きな問題がありまして、アジアが安定してません。インドも勝手なことやりますし、韓国も勝手なことします。中国も勝手なことします。それだけじゃなくて、全然訳わからないのが南アジア系です。今月になってパキスタンでパキスタンの国内の文字を作ったから国際規格として認めて欲しいと言ってきてますし、今年の夏はカンボジアが今の10646のクメール文字はよくないと騒いでましたし、去年はノースコリアが出てきてハングルの名前を全部変えろと言ってますし、北朝鮮と南朝鮮では発音が違うので現在のハングルの名前は南朝鮮方言だけで北朝鮮をいれてないとはけしからんと。偉大なる民族の指導者のキムイルソン、キムジョンイルがいるわけですが、北朝鮮コードでは決まったキムイルソン・キムジョンイルにしか使えないコードをふっています。別にこれは普通のことで日本でも昔組版で天皇陛下のお名前が途中で切れたりすると困るので1個に鋳るとかですね、あるいは産経新聞のコードでは産経新聞社とかフジ産経グループが外字にいます。あるいは写研にいくと写研のロゴで作った写研という字が写研のコードの中にどーんといますからこれは普通のことで、ただ北朝鮮はひどい国かというとそうでもなくて互換領域でいいからキムイルソンとキムジョンイルを入れてあげてと言っています。先進国の部分については実装済みの評価ができてちゃんと動いている技術なんですが、アジアは危ないです。アラビア文字はコーランがあるから安定しているといいますが、それはコーランの中だけです。アラビア語だと言っても口語は1000キロも離れていると方言が違うに決まってるんです。そうすると文字も変な字が出ます。アラビア語もフィリピンから始まってずっとアフリカの端までありますし、陸も中国のシルクロードを通ってモンゴル高原のあたりまで行きますから、すごい広がりがあるわけで、アラビア文字もいろんなところで変な文字がちょこちょこ出てきます。インドネシアのこの地方だけで使っているのを表すための特別なアクセント記号があるんだとか、ラテンと同じで世界で広まった文字というのは、ただ文字も解釈論自身が文化圏の影響を受けます。たとえばチベット文字は一文字単位の漢字のように見えるという解釈も可能ですし、デバーナーガリというかインド系文字として母音子音とか声調記号がついた文字としての解釈も可能です。すなわち、元になった文化圏と文字、文字は世界中に結構広がる訳ですね。文字と言語が一対一と思っている人がいるみたいですが、あるいは漢字のコード化の時に字種という概念を言ったりしますが、実はいろんなところで漢字は日本でできた国字と漢字の字がぶつかって複数の意味を持っているときには変な字がぶつかっているケースがたくさんあります。今また改訂版をやっていますがJISの漢字辞典のコラムに鞄と言う字の話を書きましたが、鞄というのは皮を包むと言って銀座のタニザワ鞄店というのが、まだありますが、それが明治時代に発明したんです。中国では二千年前から鞣し革職人という意味なんです。でも今鞄を鞣し革職人と辞典には書いてあったりしますが、ほとんどの人は鞄はカバンでしか使わないんですね。あるいはおとぎ話のとぎという字でにんべんに加える字がありますがこれも伽藍のがという字とぶつかっているんです。こんなふうにぶつかっているのが沢山あって、文字というのは図形によって、その見える形の抽象的な理解によって情報を伝える。ですから本来は昔の作家は字が分かっていたわけで、その上どんな字書いてもこの出版社に出すとこういう字で活字で打たれるという理解のもとに近代の作家は書く訳です。昔よく言われた逸話は、ある文選校しか読めない作家の作品というのがいっぱいあった訳で、最近はどうも作家はそういう信頼関係もないみいたいで字が読めない人が増えているようです。そういう抽象概念であり文字の形でやっていく、それにもかかわらず、今度は漢字が昔、骨の上に書いたり、あるいは木簡の上に竹で書いた、あるいは紙になって筆ができてという技術によって漢字の形が変わり文字が変わったのと同じように、文字コードもベースにする技術によって変わってきた。最近30年間コンピュータサイエンスやってきてとっても面白かったなと思ってるんですが、そろそろコンピュータサイエンスも終わりかなと、森前首相でもIT、ITと言ったように、その辺までいっちゃうともう終わりのような世界のように思えるんですが。それと同じようにほぼ10646のこのモデルは活版印刷というのは2,3百年続いたモデルでこれはかなり安泰的な技術ですので、ここで安泰的な世界に移れるのではないかと思っております。

さて、10646の話に行く前に2022という符号拡張法があるんですが、これを日本では理解してないのか誤解しているのかウソついているのか、意図的に曲解されているのか、いろんな話があるかと思うんですが、2022とは一体なんなのかというと646の版のため、先ほど12文字変わっていたり、もう一つは可能性としては全部入れ替えるという、それをベースにしてできたのが2022の技術です。そして、このISOの体系では1バイトと2バイトを混在させようなんて考えるときにはこの2022を使うほかない。646の版であるということが分かりやすいのは2022のこの符号拡張の基本的なやり方は、右の方にあるこれが2022の機能を全部図式にした物です。下から説明するとウソが発生しますので上からと言うか、真ん中が一番重要で2022というのは7ビットか8ビットでこれは8ビットで同時に見えているのはこの8ビットです。だからこの8ビットのここにある字しか見えません。この8ビットていうのは何っていうと、ここに見えにくいですけれどもCL,GL,CR,GR4つの領域に分かれます。この4つの領域に分かれるというのは、646の先ほど32の制御文字と、正確には96ですけれども94あるいは96の図形文字。これが基本の世界で646の符号表の形を入れ込んでるのが2022の世界で、8ビットになるとそれが2つ同時に使える。そしてすごい拡張が下のところにある2次元の表だけじゃなくて3次元の表が使える、これがマルチバイト拡張の部分です。そうするとここのところに1バイトと2バイトとか2バイト2つとかというのを使えるのが2022です。まず基本はこの中に7ビットだと1こ8ビットだと2こ使えるよと言うやり方がある。それだけじゃ困ると、7ビットのときに1文字だけこっちに予備のやつを持っておけば、この2つだけじゃなくて全部で4つ使えるよというのが2022の世界です。こっから下ありません。2022を使えれば世界中の文字コードが使えるというのはウソです。下は登録によってどんどん広がります。下はある意味で決まった物ではなくて登録するとどんどん増える。for informationと言ってデシグネーションと言いますが下のどれを使っているかという情報は、実際に動くものではありません。2022をちゃんと書かれた通りに、規格を読んでいただければ、もし違うというのであれば規格を訂正する提案を書くべきです。いろんなところで拡張して下のデシグネーションを動かない物、インフォメーションのやつを、でもそんなん全部動かれるとたまらん訳です。一体どれだけ持っとかないかんのかという問題が発生します。そのために4つで済むかというところから問題が起こる訳です。もしも646の版を作りました。英語が最初に来て7ビットも8ビットも最大4つしか使いません。そしてここに英語とフランス語とドイツ語とイタリア語をいれれると、で終わりなんです。それが2022の世界です。でその時に先ほどの12文字しか変われませんから、英語とフランス語で考えると両方とも基本ラテンですからラテン文字を使う限りは82文字はコモンで使わなきゃいけない訳です。英語とフランス語あるいはドイツ語をやるためにはこの1文字だけ変えればいいわけです。使いたいところの文字を1文字づつ変えるというのがシングルシフトという考えです。のヨーロッパでもちょっと行くとギリシャだとかちょっと行くとロシアに入る。するとキリル文字とかロシア語とか、日本語のカタカナとか漢字だとかいう話になるとラテンをベースにしたセットじゃないときには、その表を全部どーんと変える必要がある。それがロッキングシフトです。これが2022の世界です。でもう一つは規格をちゃんと読んでいただければわかるのですが、この規格というのは昔の情報交換、皆さんも昔は今のようにインターネットで常時接続してるわけではないんです。ネットワークがつながっていてもインターネットではなくて専用線であるところとあるところが繋がる、あるいは、ある企業と別の企業が専用線でつながる。ある図書館と別の図書館が磁気テープを渡すと。そういう世界です。基本的には情報交換というのは情報をセンダーとレシピアンと言いますが送信者と受信者、送る人と受け取る人の間の取り決めがあればいいわけです。この2022の世界というのはその取り決めをするための基盤を与えるのが2022という規格です。だからこれにしておいてポーンと出せば安心よ、というインターネットでは使えません。インターネットで2022を使おうとするとそれは2022JPです。2022になれば安心ではなくて2022JPというアイキャンに登録していただいて登録したマイムのキャラクターストリングでお互いにそのマイムを使っているんだと分かれば分かります。ただこれも分かっていて受け取る人じゃないと出ない訳ですね。簡単に言いますと2022の世界で私は漢字コードを入れたやつを交換します。その時におたくの漢字コードもこれをベースにしてやりとりができるような約束をしましょうね。と言うところです。今我々の世界でこれじゃだめっていうのは何かというとインターネットにボーンと出すときには、アスキーよとかラテン1よとか、もうこれで皆いきなさいとか言わなきゃいけないんです。そしてなおかつ世界全体でやらなきゃいけないです。というとワールドワイドコードが必要なわけです。2022のように当事者間の約束だとか、私はアメリカにいて普通は英語しか使いません、ただたまにフランス語からの文字コードのデータがはいってきたのを受け取りたい、あるいは漢字でもそうですよね。我々が日常に使っている時にはJIS漢字コードあるいはシフトJISで十分なんです。たまに何かしたいときに使う。そういうタイプの利用の仕方が2022という世界です。それをネットワークという世界が開けたときにはこれでは困りますね。先の2022に反することが8859はだいぶんあります。なぜかというと8859は実は2022を含めて646への大きな反論が8859です。先ほどから言いましたように8859というのはECMAというヨーロッパのコンピューターマニファクチャーズアソシエーションで開発されまして、そっから直接国際規格に提案された、こういうのをファーストトラップと言い方をしますが企画案ドラフトインターナショナルスタンダードをそれぞれ日本でもJISを作ってしまってそのままドラフトインターナショナルスタンダードにすることができますが、同じように8859はもともとはECMAから出てきたファーストトラップDISで、その時に何でこんなものを作ったのかというラショナールというかブリーフヒストリーと言ってついていたのが、これは英語でそのまま上げておきましたけどドキュメントが付いていたわけです。そして各国に投票にまわった。その時に646の版の問題があげられて8859はこういう形で設計しますということが書かれた訳です。何を言っているかというとまず問題としては文字が少なすぎると言って、その次にバックスペースの文字合成なんかしているとデータ表示がめんどくさくなるよ、94文字と言いながら実は82文字のコモンキャラクターしか使えないじゃん。そして8859はどう作るのかというとある地域のすべてのユーザーに同一の文字コード。理由は簡単で、もうEUになっちゃいましたがEECからECとしてヨーロッパが統合の機運にあったわけです。その80年代初期のヨーロッパでは7つくらいの言語を公式語にしていたと思いますが、そういう言語をヨーロッパでを全てヨーロッパコミュニティーでは同時に使う必要があった訳です。それこそトリートメント条約みたいな文章が見開きに7つの欄になって同じように英語ドイツ語フランス語イタリア語スペイン語みたいなのが並ぶ訳です。そういうのを処理出来る必要がある。そしてもう一つがここでシングルバイトコーディングと言いますがさっきの合成なんかを使って、基本的には世界にある文字としては1つなんだけど、それをAにバックスペースでアクセントのようにマルチバイトのシーケンスになったりしない。そして7ビットや8ビットが切り替わったりしない。2022の体系ともうち別ですと言い切ったのが8859です。なおかつ先ほどもちょっと説明しましたがインダストリーで使われている物を採用する。具体的にはIMPCのマルチリンガルコードページの中でコントロールを使わなきゃいけないエリアのグラフィック文字のブロックで絵書くような文字がはいっていたようなエリアがあるのですが、そこをベタっと落としたというのをベースにしたのが8859の世界です。しかし当然これもすぐに問題がきてECが広がるんですね。そうすると1個ですまないね、もう世界に行こうということになります。ヨーロッパの一部地域のために作られてきた8859、あるいはある限定された地域隣接する狭い地域でやるか、全世界でやるか。で全世界でやるのが10646です。もう一つ重要なのはUnicodeが特にいいことなんですけど10646の開発の初期はコンピュータと通信分野だけでやってた。3年4年前に97年に私が委員長になってから最初にやったことがTC46からコードを移管させた。それまでは図書館でやっている文字コードと情報とか、情報処理・通信の文字コードが違う。図書館は図書館だけで別よー。とずっと言ってた訳ですがあるいは情報通信屋は図書館はあんまり儲からんから勝手にやっててと、そういう世界で世界が一つに統一されてなかった訳です。それがUnicodeの開発の契機にスタンフォード中心にリサーチライブラリーグループがかなり積極的に参加しまして10646の第1版と第2版との大きな違いはRLGの関与によるTC46系の文字がはいってきたことにあります。そして10646が開発されたことをふくめて97年にISOのSC2っていうのが従来の情報処理と情報通信だけではなくて図書館情報を含めて今後一切国際標準の中での文字コードの開発は担当するってことに変わっております。その意味でまさに10646は646でスタートした旧約聖書の世界がキリストの出現によって世界が救われる新約聖書の世界に至る訳です。 この10646がどんな企画なのか、一つは最初に私が翻訳したやつをそのまま載っけてますが、UCSという日本語では国際符号化文字集合Universal Multipli-Octet Coded Character SetのUniversalをどう訳すかで悩んだんですが国際にしました。世界中で使う文字コードを作ってるんだということを強調しまして、そして世界の言語で使う文字だけでなく記号もコードを与えて、それだけじゃなくて意図はあらゆる分野でこの文字コードを使って下さい。ですからいっぱい書いたんですね。表現・伝送・交換・処理・蓄積・入力・表示と。この意図はすべての分野で文字コードが必要だったら10646を使えという意図です。で、どうなっているかというと10646というのはこういう構造です。こういう構造というのは何かというと基本はプレーンという256×256の空間があって、それが2バイトの世界ですけれども、それが今度はプレーンがいっぱい集まってグループを構成して、グループがいっぱい集まってという形で最終的には4バイトの文字コードの体系というのをベースにします。頭の1バイト分をグループと呼んで、その次の1バイト分をプレーンと言って、その後、その中の256×256の世界がそのプレーンの中のコードポイントを与えます。それはローとカラムでセルのオクテットを決めていきます、という形になります。これが全体構造ですが、あんまりここの大きさの構造は面白くないですが、実際に現在は一番最初のグループ0プレーン0というのをBMPと Basic Multilingual Plane 日本語では基本他言語面と言いますがというのを作っています。ここから始めまして、昨年にサプルメンタリープレーンと言う、このプレーン0のあとのプレーン1プレーン2と言う形で拡張が今続いているところです。今はプレーン2までですが、これがずっと開発が続けていくことになっています。この一番メインになっているのが、あるいは現在いきている言語を全部出来る限りいれたいと思ってるのがこのBMPという基本他言語面にあたります。大きな構造をお見せしますと、左の方が大きな構造で全体の中にどういうものが割あてられているのか、なんか基本他言語面でUnicodeはアメリカが日本いじめをしてるんだというような話がありますが、けしからんのは日本とか中国と韓国なんです。皆さん見て下さい。世界中で使うこのとっても重要な情報空間ですね。この最初から33というところまで、こっちに細かいのがあるのですが、大きなところのを見て頂けると、こんなところに、CJK Unified Ideographs Extension AとかCJK Unified IdeographsとかYi Syllables とかHangul Syllablesとか CJKCompatibilityとかいっぱい並びますよね。ですからBMPのほとんどを使い潰しているのが日本中国韓国という悪人です。Yiというのも中国ですし、ハングルはそれだけじゃなくて一度いれたやつを俺きらいだよー。こっちに移して。と言って。ですからもともと、CJK Unified Ideographs Extension Aのところにあったハングルが広がってこっちにきたんですね。こんなことは絶対に文字コードのところでやってはいけないことでありながらも、当時私はまだ国際委員長ではなくて日本の委員長でしたが韓国通産省から日本の通産省に圧力がかかるとか、そういうところまできて、こういうわがままな変更をしたのが。その上ハングルコンピュータはこれを変更させるためだけにUnicodeインクに金払って変更したとたんにやめてしまうと。あるいはチャイナは場所が空いてると空いてる数だけ漢字出してきて、埋めようとすると。だから実は世界の極悪人は日本中国韓国です。その他の国は、こういうこの33のようなところにゴミゴミゴミゴミと押し込められているのがその他の各国です。ですから世界はもし日本中国韓国の3つの国を抹消してしまうと世界は広々とした世界に戻れると。

もひとつは、10646で重要なのは10646も文字合成というのを持っています。ただし、10646の文字合成というのは常にやらなきゃいけない訳ではない。基本的には10646には3つの水準が合成に関してありまして、1つは水準1というのは文字の合成はしない。最初はUnicodeにしたかった訳ですね。それが最初の水準です。その次に水準2がありまして、これはアラビア語から始まって南アジアの言語が水準2にあたります。なぜかというとここでは子音を基本として母音のちょこちょこと印が付いたり、アクセントとか声調記号の印が付くと。基本的にはインド・アラビア文化圏を主にした東南アジアの言語も全部そうですがその辺の文字は必ず合成を必要とする文字があります、それが水準2です。水準3は何かというと、発音記号とか特殊なトランスリタレーション用に使う、基本的にはラテンの合成、ラテンをベースにしたIPAシンボルの発音記号の合成が水準3です。言語学者とはとんでもないヤツらです。俺が聞いたのはこの発音は違うんだというと別の字で書きたい訳です。言語学者とは他の人とはコミュニケーションできませんから。わかりやすい例では、うちでもカンボジア語の先生とイタリア語の先生がですね。イタリア語で話していてもカンボジアの先生はイタリア語を理解出来ませんし、カンボジア語で話していてもイタリア語の先生はカンボジア語理解出来ませんからね。そうするとコミュニケーションがとれないというのが言語学者の世界で、同様に、その勝手なことを言いたがるのが勝手な字を使いたがる俺たちが字を持っていると思ってるのが我が社の人たちの世界で、そうしますと発音の厳密な表記と学者がいう新しい言語のトランスリタレーションを発明すると、どうしても新しい合成ができてしまうという世界があります。もう一つ10646の世界を見ていただくと2022というのは、先ほどのそれまでの世界というのは下にいっぱいいっぱい広がっていって、全体のセットは決まっていません。どんどん下の板みたいなやつとか箱みたいなやつとかブロックみたいなやつが広がる訳です。10646はそうではありません。全体がこれです。だから全部あってその中から自分の使うものを部分的に取り出すことを許すのが10646の特徴です。最大これよ。最大これで、全部拡張するといってもこのアーキテクチャーの中の最大これで動くようにプログラム作っておけば大丈夫よというのが10646です。2022はそうじゃなくて1個から始まって2個3個4個まで同時に使える。その4つ同時に使えるものを種類を入れ替えられるよ。私の機械はこれしかできないけど、あんたの機械は別のやり方でできるよ、だからお話できないよ。という世界が2022です。10646というのは世界中この大きな構造で、ただし,自分のコンピュータで使う時にはアスキーしか使えませんって人がいてもいいし、ヨーロッパのラテン1でいいという人も、あるいは日本語の漢字しかフォントはいってないよというのもいいと。下から順番に積み上げていくのか全体の枠組みを作って、その中から使う部分を選んでくるのかという逆転の発想です。

そして、ちなみにデータベースというのも多分図書館の方ならご関心があるかと思いますが、JISでも最初にJISの規格の中で日本語をちゃんと扱ったのはSQLのJISです。JISのSQL89が最初に日本語処理、日本語でちゃんと変数例にあたる表の名前とか列の名前を書けたり、あるいは中に定数をかけたり、その時にも当時はオラクルとかシステムRとかDB2とかSQLDSとかインフォミクスとかそういう各社全部に圧力をかけて全部の今でもデータベースが日本語を扱える、でも今でもJAVAとかあるいはCだとかFORTRANとかCOBOLとかで日本語扱えませんよね。いらんというやつもいましたけど、だからACCESSでもEXCELでも我々がデータベースを使うときに安心して日本語を使えるのはJISでそういう統一をしたからで、国際規格の方も92年からいろんな議論があったんですが実は86,7年から議論がありまして、最初私は2022型のやり方2022をベースにした方式でSQLの各国ナショナルキャラクターセットサポートという言い方をしていますが、を始めたんですが91年に10646が変わってからSQL92の直前に直しまして、ですからSQLデータベースで扱うのは基本は10646のUnicodeベースの世界がSQLデータベースでは動いています。今日、中にいれてませんでしたが最初10646でUCS2とUCS4とUTF7というのを作ったのですが、実はUTF7というのは基本的にはこの646と同じ制御を外して図形文字のエリアだけを全部使いきろうとして7ビット化をするのが、だからC0コントロールにはぶつからない、制御のエリアを除いて1バイト化というか7ビット化をしようとしたのがUTF7ですが、すぐにユニックスインターナショナルとかエックスオープンから問題が指摘されまして、それはユニックスの世界等ではアスキー文字はベタにコントロールに使われたりプログラムの中に埋め込まれていると、ですから1バイトアスキーを避けて8ビットコーディングするというのがUTF8です。

今度は93年にワシントンに11月くらいに行ったときにUnicodeのやつらと徹夜でやって決めたのがUTF16ってやつで、UnicodeはUCS2Eというのを言ってきたのですが2Eと今のUTF16の違いは何かというとプレーン0以外のサプルメンタリプレーン、プレーン1からあとの使い方でUnicodeは1024のサルゲイトペアをこの奥にわーっと串刺しにして使いたいと言ったのですが、そんなんしたら使いものにならんと言ってたたきつぶしまして、次のプレーン1から順に頭からきれいに使っていくというのが現在のUTF16です。だからUCS2とUCS4の関係というのはそれで決めて、最近はUTF5だとか、いろんな訳の分からない話が国際ドメインとの関係でいろんな提案が出ていますが、主なのは一番今使われるのが一番多いのはUTF8だと思います。UTF8が交換形式として一番多くって実際の利用形態としてはUCS2、あるいはUTF16こみのUnicodeというのが一番多いかと思います。 以上でだいたい文字コードの一部細かなディテールは飛ばしましたが、もし何か質問があればこの場でお答えいたします。

[入江]ありがとうございました。非常に細部にわたって理解しやすいお話をしていただきました。

--休憩--


| 1 | 2 | 3 | TOP |