IP Meeting '94 配付資料 (1994年10月7日)

国際化メッセージ

高田敏弘
日本電信電話(株) NTT基礎研究所
<takada@mdma.brl.ntt.jp>


1. はじめに

インターネットが国際的な広がりを見せるとともに、インターネット上のアプリケーション上でどのようにして世界各国の言語や文字を扱うかが大きな問題となっている。例えば我々は、日頃当たり前のように電子メールやネットワーク・ニュースで日本語を使用しているが、実はこれは、計算機上で日本語を表現しそれを交換するための取決めが利用者の間で確立しており、更にそれらをサポートするソフトウェアが作られたからこそ可能になっているものである。このような状況を「日本語化された環境が整っている」と呼ぶとするならば、それと同様に、日本語だけでなく世界各国の言語や文字を当たり前のように扱える環境が実現されたとき、それを「国際化」と呼ぶことができるだろう。本稿ではこのような「国際化された環境」をインターネット上で実現するために、現時点でどのような問題があるのか、また今後どのような点を解決していく必要があるかについて説明する。

2. 各国語化と国際化

国際化の話を始める前に、各国語化と国際化の違いについて簡単に説明する。インターネット上のアプリケーションで日本語を取り扱うため、日本で数多くの努力が為されてきたのと同様に、世界各国でも自国の言語や文字の取扱いについて様々な試みが行なわれている。しかしこれらの試みは通常、主に自国語 (と英語) を扱うことのみを目標としたものが多く、一般にこのようなやり方は「各国語化 (localization)」あるいは「地域化」と呼ばれている。例えば日本語をターゲットとした「各国語化」が「日本語化」であると言うこともできるだろう。

それに対して、単に自国語と英語の2つの言語だけではなく、複数の言語を取り扱うための試みが「国際化 (internationalization)」と呼ばれるものである。理想的には、国際化された環境が提供されていれば、何の変更もなしにユーザは好きな言語や文字を扱うことが可能になるはずである。しかし実際は国際化に関しては未解決の問題が数多く残されており、現時点ではこのような完全な形で国際化された環境は存在しない。

3. 概念の整理

まず最初に、以下に示すようなごくありふれた日本語のメールの例に基づいて、国際化にまつわる概念と問題点を整理することにしよう。
To: Hitoaki Sakamoto <hitoaki@sphere.csl.ntt.jp>
From: TAKADA Toshihiro (=?ISO-2022-JP?B?GyRCOWJFRElSOTAbKEI=?= ) <takada>
Subject: Re: Camera for Takada
Date: Mon, 04 Apr 1994 18:57:11 -0700
Mime-Version: 1.0
Content-Type: text/plain; charset="ISO-2022-JP"

> おおい、いま忙しいのかな?

nvでは、そっち見えるよ。vatは聞こえない。
上のメールの本文には "n" や "見" といった英語と日本語の2種類の文字が混在している。言い換えると、このメールでは英語用と日本語用の2つの「文字集合」が用いられており、かつ、その2つの文字集合を使い分けるための何らかの仕組みが用いられている。このような文字集合を使い分けるための仕組みを「エンコーディング」と呼ぶことにする。

更にこの例では、これらの文字集合やエンコーディングと、電子メール・システムとを結び付ける「インタフェース」として、MIME (Multipurpose Internet Mail Extensions) を利用している。具体的には、メールの中にある

Content-Type: text/plain; charset="ISO-2022-JP"
という記述が、「このメールの本文は "ISO-2022-JP" という文字集合を用いて書かれている」ことを宣言している (厳密に言うと "ISO-2022-JP" は単なる文字集合とは異なる。この点については5.2節で述べる)。

このように一口に国際化と言っても、それを構成する要素はいくつかの概念に分類することができる。以下ではこれらの概念を、

の3つに分類した上で、順に説明していくことにしよう。

4. 文字集合

4.1 様々な文字集合

文字集合とは、言語情報を交換する際の要素となる個々の文字に符号を割り当てたものの集合である。例えばASCII [1], JIS X 0208 [2] などが文字集合の例である。文字集合は更に、制御文字集合 (control character set) と図形文字集合 (graphic character set) の2つに分類することができる。前者は端末の画面などの制御に用いられる文字の集合であり、例えばBackspaceやEspaceなどの文字がそれに該当する。また後者は、視覚的表現を持つ、通常の意味での文字の集合である。本稿では特に断らない限り、文字集合と言った場合は図形文字集合を表すこととする。以下に主な文字集合の例を示す。 このように世界各国の様々な文字を表現するために、数多くの文字集合が定義されている [3] 。国際化された環境を作る場合には、これらに含まれる様々な文字を使用可能にする必要があり、そのためには、これらの複数の文字集合をどのように組み合わせ、使い分けるかを考える必要がある。

4.2 ISO/IEC 10646

一方、上記の様々な文字集合とは独立に、世界中の全ての文字を含む単一の文字集合を定義しようと試みたものがISO/IEC 10646である。ISO/IEC 10646には1文字を4オクテット (32ビット) で表現する正規形 (UCS-4) と、1文字を2オクテット (16ビット) で表現する簡易形 (UCS-2) の2種類の使用法が定義されている (UCSは "Universal Multiple-Octet Coded Character Set" の略)。ISO/IEC 10646の規格の制定自体はまだ完了しておらず、現時点では16ビット部分のBMP (Basic Multilingual Plane) のみがISO/IEC 10646-1:1993で定義されている [4] 。ちなみにこのBMPの部分はUnicode [5] とほぼ同じものである。

5. エンコーディング

5.1 ISO 2022を用いたエンコーディング

ISO 2022 [6] は、対応するJIS規格が「情報交換符号の拡張法」と呼ばれているように、4.1節で挙げたような様々な文字集合をどのように組み合わせて使用するかを定めた規格である。ISO 2022はかなり複雑な規格であり、一口に「ISO 2022を用いたエンコーディング」と言っても、それは一意に定めることはできない (詳しくは規格本体を参照のこと。またMuleのInfoに含まれているmule-jpのISO2022の項目も参考になると思う)。

例えば日本で良く使われているASCII, JIS X 0201, JIS X 0208という3つの文字集合を組み合わせるためのエンコーディングを考えてみよう。その1つが現在インターネットで標準的に用いられているISO-2022-JPであり、これはISO 2022の7単位符号系における利用例である。7単位符号系とは7ビットの組合せで文字を表現するものである。

また日本語化されたUNIX環境などで使用されている日本語EUC (Extended Unix Code) は、ISO 2022の8単位符号系 (8ビットの組合せで文字を表現する) におけるエンコーディングの例となる。その他、X Window Systemで用いられているCompound Text Encoding [7] もISO 2022に基づくエンコーディングのひとつである。

5.2 ISO-2022-JPとその後継

現在インターネット上で日本語を表現するために一般的に使用されているのが、RFC-1468 [8] で定義されているISO-2022-JPと呼ばれるエンコーディングである (これはかつて「JUNETコード」と呼ばれていたものとほぼ同じものである)。ISO-2022-JPでは以下の4つの文字集合の使用が可能であり、これらの文字集合間の切換えは、エスケープ・シーケンスによる「指示 (designation)」によって行なわれる (ISO-2022-JPについての詳細は直接RFC-1468を参照して欲しい)。
Esc Seq	   Character Set		ISOREG
----------------------------------------------
ESC ( B	   ASCII			     6
ESC ( J	   JIS X 0201-1976 ("Roman" set)    14
ESC $ @	   JIS X 0208-1978		    42
ESC $ B	   JIS X 0208-1983		    87
第3節で「 "ISO-2022-JP" は単なる文字集合ではない」と述べたが、その理由は、ISO-2022-JPはその中で使用される4つの文字集合に加えて、それらをどのようにエンコーディングするかを規定したものであり、単なる文字集合以上の意味を持っているという点にある。

さて、その定義から明らかなように、ISO-2022-JPは日本語と英語のみが使用可能なエンコーディングである。それに対して、ISO-2022-JPを拡張して日本語以外の文字も表現できるようにしたエンコーディングがISO-2022-JP-2 [9] である。ISO-2022-JP-2で使用可能な文字集合の一覧を以下に示す。

			94 character sets
reg#  character set	 ESC sequence		     designated to
------------------------------------------------------------------
6     ASCII		 ESC 2/8 4/2	  ESC ( B    G0
42    JIS X 0208-1978	 ESC 2/4 4/0	  ESC $ @    G0
87    JIS X 0208-1983	 ESC 2/4 4/2	  ESC $ B    G0
14    JIS X 0201-Roman	 ESC 2/8 4/10	  ESC ( J    G0
58    GB2312-1980	 ESC 2/4 4/1	  ESC $ A    G0
149   KSC5601-1987	 ESC 2/4 2/8 4/3  ESC $ ( C  G0
159   JIS X 0212-1990	 ESC 2/4 2/8 4/4  ESC $ ( D  G0

			96 character sets
reg#  character set	 ESC sequence		     designated to
------------------------------------------------------------------
100   ISO8859-1		 ESC 2/14 4/1	  ESC . A    G2
126   ISO8859-7(Greek)	 ESC 2/14 4/6	  ESC . F    G2
ISO-2022-JP-2は現在、ネットワーク・ニュース (fj.editor.mule) やメーリング・リストなどで実際に使用されている。

またISO-2022-JP-2から日本での利用状況に依存していた部分を取り除き、更に韓国語のエンコーディングに使用されているISO-2022-KR [10] との整合性を図ったものとして、ISO-2022-INT-1 [11] が提案されている。

5.3 ISO/IEC 10646におけるエンコーディング

ISO/IEC 10646はひとつの文字集合で世界中の文字全てを表そうとするものである。したがってISO/IEC 10646を用いた場合には、「複数の文字集合をいかにして切り換えて使用するか」という問題がなく、ISO 2022のようなエンコーディングの技法は不要であるように思われる。実際にISO/IEC 10646の下ではISO 2022の枠組みを使用することは出来ないことになっている。

しかしその一方で、ISO/IEC 10646は単に文字の集合とその中の各文字に対応する符号を定めたものであり、かつ、その符号には今まで制御文字として使用されていたオクテットが含まれるているため、「これらの符号を従来の計算機あるいはネットワーク上で利用可能なビットパターンとして表現」するための「エンコーディング」の問題が依然として残ることになってしまった。このようなISO/IEC 10646のエンコーディングは、その目的に応じて複数存在し、現在提案されているだけでも、

の3種類があるといった混乱ぶりである (UTFはUCS Transformation Format の略)。

6. アプリケーションとのインタフェース

本節では、アプリケーション側から見た国際化に関する問題点について、電子メールやネットワーク・ニュースとWorld-Wide Webなどの広域情報システムを例にして説明する。

6.1 電子メールとネットワーク・ニュースの場合

最近、電子メール [12] やネットワーク・ニュース [13] (以下これらを総称して「メッセージ」と呼ぶ) に用いられるようになったのが、MIME (Multipurpose Internet Mail Extensions) と呼ばれるものである。MIMEは従来のメッセージを拡張して、 などを可能にすることを目的とするものである。MIMEは、メッセージのボディ部の拡張を定めた第1部 [14] と、ヘッダ部の拡張を定めた第2部 [15] の2つの規格から構成される。

第2節のメールの例にあった

Content-Type: text/plain; charset="ISO-2022-JP"
という記述はメッセージのボディ部の拡張の例であり、これは、「このメールの本文は "ISO-2022-JP" という文字集合を用いて書かれている」ということを宣言するものである。同様にヘッダ部にある
=?ISO-2022-JP?B?GyRCOWJFRElSOTAbKEI=?=
という文字列は、メッセージのヘッダ部で非ASCII文字を表現する際に用いられる記法であり、実際にこれは、
高田敏弘
という文字列を表現したものである。

MIMEにおける非ASCII文字の取扱いの中心にある思想は、「そのテキストで使用されている文字集合を常に明確に宣言する」というものである。これは、裏返せば、MIMEには使用される文字集合を宣言するだけの能力しかないと言い換えることができ、メッセージの国際化に際しては、実際に「国際化された文字集合」が存在しない限り、MIMEの宣言はほとんど役に立たない。国際化された文字集合であるISO/IEC 10646をMIMEの中で使用するための提案 [16] [17] も存在するが、これらが実際に使用されている例は筆者はまだ見たことがない。

メッセージの国際化に関する別のアプローチとして、ISO-2022-INT-1のように、インターネット上のメッセージのデフォールトとなる文字集合を、従来のASCIIからISO 2022に基づくものに変更しようという提案もある。

6.2 Gopher/WAIS/WWW

ここ最近インターネット上で注目集めているアプリケーションが、Gopher, WAIS, World-Wide Web (WWW) などの広域情報システムである。これらのアプリケーションでも、そこで取り扱われるテキストの国際化の問題が存在する。

既に世界各国では、これらの広域情報システムで自国の言語や文字を取り扱うための試みが行なわれている。例えば日本においてはISO-2022-JPが主として使用されている。しかし電子メールなどとは若干状況が異なり、これらの広域情報システムではISO-2022-JPに対応したソフトウェアがまだ充分に整備されていないため、依然として日本語EUCやShift-JISも混在して使用されているのが現状である。

広域情報システムのうち、WWWの日本語化と国際化の現状については [18] に詳しく書かれているのでそちらを参照して欲しい。ここで強調しておきたい点は、現時点ではWWWの国際化については「何も決まっていない」ということである。現在正式に使用が認められている文字集合はISO 8859-1 (Latin-1) のみであり、それ以外の言語や文字の使用に関しては、HTML (HyperText Markup Language)の拡張などに関する議論が続いている最中である [19] [20] 。このような状況はGopherやWAISについても同様である。

7. その他の問題点

インターネットおける国際化に関しては、今まで挙げた他にもいくつかの問題点が存在する。ここではそれらの中から、言語情報をどのように表記するかという問題と、テキストの「双方向性」について触れることにする。

7.1 言語情報の表記

例えば電子メールや広域情報システムにおいて、同一内容の情報を複数の言語で記述したものが用意されている場合、ユーザがそれらの中から自分が希望する言語で書かれた情報を取り出したいといったケースがあり得るだろう。このような場合、ある文書が何語で書かれているかを表記する方法が必要になる。

この言語情報の表記に対する具体的な提案としては [21] がある。これは言語名をISO 639で定められた2文字の名前で指定することを提案したものである。例えば英語は "en", 日本語は "ja" という名前で表される。また同一の名称を持つ言語でも使われる国の違いや方言によってそれらを区別する必要が生じることも予想される。このような場合は上記の言語名の後ろに副言語名を付け、それらを区別する。例えば英国語は "en-UK", 米国語は "en-US" と表される。その他に、ISO 639で定義されていない言語名や副言語名を登録する方法も定められている。

7.2 テキストの双方向性

ヘブライ語やアラビア語などの右から左に書かれる言語の取扱いも、国際化においては欠くことのできないポイントである。その中でも特に問題となるのが、それらの言語の中にラテン・アルファベットなどの左から右に書かれる文字 (言語) が混在した場合の取扱いである。このようなテキストは、左から右といった単一方向ではなく双方向の流れを持つため、与えられたテキストを表示する際にどのような順序で文字を表示するかを決める必要がある。このようなテキストの性質を「双方向性 (bi-directionality)」と呼ぶ。テキストの双方向性としては以下の3種類がある。 例えばRFC-1555 [23] とRFC-1556 [24] では、これら3種類の双方向性について別々の文字集合を定義している (ヘブライ語用とアラビア語用のものがあるので、計6種類の文字集合が定義されている)。しかしこれは、本来なら文字集合情報のみを表すべき所に双方向性に関する情報を埋め込んでしまったという点で、あまり美しくない解決策であると言えるだろう。

8. 国際化されたソフトウェア

現在国際化されたエディタとして広く使われているのものとして、Mule (MULtilingual Enhancement to GNU Emacs) [25] が挙げられる。MULEは、ISO 2022に基づくほとんど全てのエンコーディングを扱うことが可能であり、MULE上で電子メールやネットワーク・ニュースを読み書きするソフトウェア、あるいは、WWWのクライアントなどを動かすことにより、これらを国際化された環境下で利用することが可能になる。

また開発環境としては、X Window Systemがかなりの範囲で国際化をサポートしている。基本的にはX Window Systemの国際化はOSの各国語化 (Locale) に依存する。しかし、例えば Version 11, Release 6 のサンプル・インプリメンテーションでは、ISO/IEC 10646のサポートが実装されている (具体的にはwide-characterとしてUCS-4を、multibyte-characterとしてUTF-8を使用している)。

9. まとめ

今まで述べてきたように、国際化については様々な問題が複雑に絡まっており、その決定的な解は未だに得られていない。現時点での世界的な趨勢としては、国際化文字集合である ISO/IEC 10646を採用して国際化を行なうべきだという声が大きいことは事実である。しかし一方では、従来から用いられてきた各国の標準規格との継続性の問題、ISO/IEC 10646-1:1993で採用されたHan Unification (中国/韓国/日本などで使われている漢字の部分的統一化) への批判、そして、そもそもISO/IEC 10646自体の設計の不味さなどを指摘する人も多い。

一方の、各種文字集合をISO 2022を用いて切り換えて使用する手法にもいくつかの問題がある。一番大きな問題は、ISO 2022に基づく枠組みを使用する限り、その中でどのような種類の言語や文字が取り扱えるのかが文字集合の存在に制限される点にある。例えば [26] には、ISO/IEC 10646でなければ表すことの出来ない文字を含む言語、言い替えれば、それらの文字を含む文字集合がISO/IEC 10646以外に存在しない言語が計79種列挙されている。そもそも使用したい言語を表現し得る文字集合が存在しなければISO 2022の使いようがない。

このような状況の中、インターネット上の国際化の手法がどうなるかという議論の最終的な行方は依然として不明確なままである。しかし一刻も早い解決が望まれることだけは確かであろう。

インターネットにおける国際化というものは、単に自分の使いたい言語や文字が、自分の気に入った方法で表現できれば良いというものではない。インターネット社会が国際化の手法そのものを共有しないことには、情報のやりとりは不可能である。接続された全ての人々の間で自由に情報の交換や共有ができてこそ、インターネットなのではないだろうか。

参考文献

[1] American National Standards Institute:
Coded Character Set -- 7-bit American National Standard Code for Information Interchange, ANSI X3.4-1986, 1986.
[2] 日本工業標準調査会:
情報交換用漢字符号, JIS X 0208-1990, 1990.
[3] Keld Simonsen:
Character Mnemonics & Character Sets, RFC 1345, 1992.
<ftp://ds.internic.net/rfc/rfc1345.txt>.
[4] International Organization for Standardization (ISO):
Information Technology -- Universal Multiple-Octet Coded Character Set (UCS), ISO/IEC 10646-1:1993(E), 1993.
[5] Unicode Consortium:
The Unicode Standard, Version 1.1.
[6] International Organization for Standardization (ISO):
Information processing -- ISO 7-bit and 8-bit coded character sets -- Code extension techniques, ISO 2022:1986(E), 1986.
(日本工業標準調査会: 情報交換符号の拡張法, JIS X 0202-1991, 1991)
[7] Robert W. Scheifler:
Compound Text Encoding, Version 1.1, X Consortium Standard, 1994.
[8] Jun Murai, Mark Crispin and Erik M. van der Poel:
Japanese Character Encoding for Internet Messages, RFC 1468, 1993.
<ftp://ds.internic.net/rfc/rfc1468.txt>.
[9] Masataka Ohta and Ken'ichi Handa:
ISO-2022-JP-2: Multilingual Extension of ISO-2022-JP, RFC 1554, 1993.
<ftp://ds.internic.net/rfc/rfc1554.txt>.
[10] Kilnam Chon, Hyunje Je Park and Uhhyung Choi:
Korean Character Encoding for Internet Messages, RFC 1557, 1993.
<ftp://ds.internic.net/rfc/rfc1557.txt>.
[11] Masataka Ohta and Ken'ichi Handa:
Internet Multilingual Text Encoding: ISO-2022-INT-*, Internet-Draft, 1994.
<ftp://ds.internic.net/internet-drafts/draft-ohta-text-encoding-01.txt>.
[12] David H. Crocker:
Standard for the Format of ARPA Internet Text Messages, RFC 822, 1982.
<ftp://ds.internic.net/rfc/rfc822.txt>.
[13] Mark Horton and R. Adams:
Standard for Interchange of USENET Messages, RFC 1036, 1987.
<ftp://ds.internic.net/rfc/rfc1036.txt>.
[14] Nathaniel S. Borenstein and Ned Freed:
MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies, RFC 1521, 1993.
<ftp://ds.internic.net/rfc/rfc1521.txt>.
[15] Keith Moore:
MIME (Multipurpose Internet Mail Extensions) Part Two: Message Header Extensions for Non-ASCII Text, RFC 1522, 1993.
<ftp://ds.internic.net/rfc/rfc1522.txt>.
[16] Davis Goldsmith and Mark Davis:
Using Unicode with MIME, RFC 1641, 1994.
<ftp://ds.internic.net/rfc/rfc1641.txt>.
[17] David Goldsmith and Mark Davis:
UTF-7 - A Mail-Safe Transformation Format of Unicode, RFC 1642, 1994.
<ftp://ds.internic.net/rfc/rfc1642.txt>.
[18] 高田敏弘:
World-Wide Webの日本語化・国際化の現状, 日本インターネット協会ニュース, Vol.1, No.2, 1994.
<http://www.ntt.jp/people/takada/docs/www-j10n/>.
[19] David Raggett:
A Review of the HTML+ Document Format, In proceedings of WWW '94, 1994.
<http://www.cern.ch/PapersWWW94/dsr.ps>.
[20] Toshihiro Takada:
Multilingual Information Exchange through the World-Wide Web, In proceedings of WWW '94, 1994.
<http://www.ntt.jp/people/takada/www94/>.
[21] Harald Tveit Alvestrand:
Tags for the Identification of Languages, Internet-Draft, 1993.
<ftp://ds.internic.net/internet-drafts/draft-ietf-mailext-lang-tag-00.txt>.
[22] European Computer Manufactures Association (ECMA):
Handling of Bi-Directional Texts, European Computer Manufacturers Association, TR/53, 1992.
[23] Hank Nussbacher and Yehavi Bourvine:
Hebrew Character Encoding for Internet Messages, RFC 1555, 1993.
<ftp://ds.internic.net/rfc/rfc1555.txt>.
[24] Hank Nussbacher:
Handling of Bi-directional Texts in MIME, RFC 1556, 1993.
<ftp://ds.internic.net/rfc/rfc1556.txt>.
[25] Mikiko Nishikimi, Ken'ichi Handa and Satoru Tomura:
Mule: MULtilingual Enhancement to GNU Emacs, In Proceedings of INET'93, 1993.
[26] Harald Tveit Alvestrand:
Characters and Character Sets for Various Languages, Internet-Draft, 1994.
<ftp://ds.internic.net/internet-drafts/draft-ietf-mailext-lang-char-00.txt>.
[27] Ken Lunde:
Understanding Japanese Information Processing, O'Reilly & Associates, Inc., 1993.


Copyright (C) 1994 by TAKADA Toshihiro

[index]