ホーム > 書誌データの作成および提供 > NDL書誌情報ニュースレター > 2016年1号(通号36号)

文字コード講座 第2回―Unicode入門

NDL書誌情報ニュースレター

NDL書誌情報ニュースレター2016年1号(通号36号)

【はじめに】

前回は、おもにアルファベットや日本の文字コードについて、Unicodeが普及する前の状況を中心に概説しました。今回は、Unicodeについてご紹介します。

【Unicodeの誕生】

世界中には各国独自の文字コードが数多く存在していますが、これらの文字コードを同時に一つのコンピュータで扱うことは基本的にできませんでした。そこで、世界中の言語の文字を一つのコード体系に収めた文字コードを作ろうという動きが1980年代から出てきました。

この動きには二つの流れがありました。コンピュータ・メーカーなどで構成されるユニコード・コンソーシアムは、Unicodeという2バイト(16ビット:最大65,536字を表現可能)の文字コードを開発していました。一方、ISOは、4バイト(32ビット:最大4,294,967,296字を表現可能)の文字コードを開発していました。そして、同じ目的の文字コードが複数できることを避けるため、1993年にUCS(Universal multiple-octet coded Character Set = 国際符号化文字集合)(ISO/IEC 10646)が、その一部としてUnicodeを取り入れる形で制定されました。日本では、1995年にJIS X 0221としてJIS規格に採用されました。UCS制定後も、UnicodeとISOの規格は、ユニコード・コンソーシアムとISOという別の団体で互いに調整を図りながら開発されており、一般的にはUCSとUnicodeは同義のものとして扱われ、Unicodeと呼ばれることが多いです。

【Unicodeのエンコーディング】※この章の内容を修正しました(2016年7月8日)

この章では、おもにUnicodeのエンコーディングについて解説します。エンコーディングとは、文字集合をコンピュータで扱えるデータに変換する方法を指します。エンコード法、符号化方式ともいいます。

UCSには、UCS-4(Universal multi-octet Character Set 4)とUCS-2(Universal multi-octet Character Set 2)の二つの範囲があります。UCS-4は、1文字を4バイト(31ビット)で表現し、最大2,147,438,648字を収録でき、各バイトを、上位から群、面、区、点と呼びます。そして、UCS-4の最初の面(第0群第0面)をUCS-2と呼びます。UCS-2は当初のUnicodeにあたる部分で、最大65,536字を収録できます。世界で一般的に用いられる基本的な文字、記号のほとんどがここに収められており、BMP(Basic Multilingual Plane = 基本多言語面)とも呼ばれます。

Unicodeは、UTF(UCS Transformation Format)と呼ばれるエンコード法を用います。UTFにはいくつかの方式がありますが、最も一般的なのはUTF-8(8-bit UCS Transformation Format)です。UTF-8は、ASCIIコードに当たる部分は1バイトで表し、それ以外の文字を2~6バイトの可変長で表すという特徴があります。

Unicodeは当初、最大65,536字を収録する文字コードとして開発されていましたが、それでは足りなくなり、サロゲート・ペアと呼ばれる方法の採用により収録範囲を拡張しました。このような拡張等により、Unicodeの収録文字数は、1991年のバージョン1.0では7,161字でしたが、2016年のバージョン9.0では128,172字になりました。

【Unicodeのユニフィケーション】

前述のとおり、当初のUnicodeは、最大65,536字を扱うことができる2バイト(16ビット)で世界中の文字を表現しようとしていました。そのため、字源的には同じだが字形の異なる中国語、日本語、朝鮮語の漢字に同じコードを与えるハン・ユニフィケーションと呼ばれる方式を採用しました。この方式によって統合された漢字をCJK統合漢字(CJKはChina、Japan、Koreaの頭文字)と呼びます。CJK統合漢字にはベトナムで用いられていた漢字も含まれているため、CJKV統合漢字と呼ばれることもあります。

なお、Unicodeのコード番号は、番号の前に「U+」を付けて「U+4E0E」のように表します。

表1 CJK統合漢字の例
文字コード U+4E0E U+9AA8
日本語 日本語の「U+4E0E」の字形 日本語の「U+9AA8」の字形
中国語 中国語の「U+4E0E」の字形 中国語の「U+9AA8」の字形

「与」の字形は日本語と中国語では異なりますが、Unicodeでは同じコード番号が与えられています。「骨」の字形も同様です。

【Unicodeの文字の合成・分解】

Unicodeでは、「が」という文字をU+304C(濁点付き平仮名「か」)という一つの文字コードで表わすことができますが、同時に、U+304B(平仮名「か」)とU+3099(濁点)を合成して表わすこともできます。このU+304C(が)をU+304B(か)とU+3099(◌゙)に分けることを分解、その逆を合成と呼びます。

合成・分解の関係は、Unicodeの規格書などで示されています。

互いに完全に等価とみなしてよい関係を正規等価といい、Unicodeの規格書では「≡」(合同記号)で表わされます。たとえば、U+304Cの部分は、次のように記述されています。

304C が HIRAGANA LETTER GA
≡ 304B か 3099 ◌゙

図1 正規等価の例

これは、U+304Cは平仮名の「が」であり、U+304BとU+3099を合成したものと正規等価であるという意味に解釈できます。

なお、文字を合成するためには、合成対象の文字コードを列記します。たとえば、「が」と記述すれば「が」と表示されます[1]

上例を含め、正規等価の代表的な例としては、次のようなものがあります。

  • (1)濁点・半濁点付き平仮名・片仮名 と 平仮名・片仮名+濁点・半濁点
    例:U+304C(が)と U+304B(か)+U+3099(◌゙)
  • (2)ダイアクリティカル・マーク付きラテン文字 と 基本ラテン文字+ダイアクリティカル・マーク
    例:U+00FC(ü)と U+0075(u)+U+0308(◌̈)
  • (3)ハングル音節文字 と ハングル字母+ハングル字母
    例:U+AC00(가)と U+1100(ᄀ)+U+1161(ᅡ)
  • (4)CJK互換漢字 と CJK統合漢字
    例:U+F90A(金) と U+91D1(金)[2]

さらに、合成・分解の関係には、互換等価もあり、Unicodeの規格書の表では「≈」(同相記号)で表わされます。たとえば、Unicodeの規格書のU+FF21の部分は、次のように記述されています。

FF21 A FULLWIDTH LATIN CAPITAL LETTER A
≈ <wide> 0041 A

図2 互換等価の例

これは、U+FF21は全角ラテン大文字の「A」であり、U+0041(半角ラテン大文字「A」)を全角にしたものと互換等価であるという意味に解釈できます。

互換等価の代表的な例としては、次のようなものがあります。

  • (1)半角形・全角形 と 相当する文字(全角・半角を反転させた文字)
    例:U+FF21(A)と U+0041(A)を全角にしたもの
  • (2)丸付きや括弧付きの数字や文字などの特殊文字
    例:U+2460(丸付き数字1)と U+0031(1)を丸付きにしたもの

互換等価は、互いにほぼ同じであるけれども、完全には等価ではない関係です。同じ文字として扱ってよいか否かを個別に判断する必要があります。たとえば、検索処理では通常、英数字の半角形と全角形を同じ文字として扱いますが、U+0049 U+0049 U+0049(三つの大文字Iの羅列)をU+2162(ローマ数字の3)と同じ文字として扱うと問題が生じる可能性があります。

【コード表】

ユニコード・コンソーシアムのホームページでは、次のような表やデータベースが提供されています。

これらのうち、Unihan Databaseには、漢字に関する次のような詳細情報が掲載されていますので、文字の選択に迷ったときなどに有用です。

  • 参考字体(画像)
  • 16進数、10進数でのコード番号
  • 情報源(情報源となった日本語、中国語、朝鮮語等の規格におけるコード番号)
  • 読み(日中韓等での読み)
  • 異体字

【おわりに】

今回は、世界中の言語を一つのコード体系に収めた文字集合を作ろうと考案されたUnicodeの誕生経緯について概説し、エンコーディング、ユニフィケーション、文字の合成・分解などの文字の表現方法についてご紹介しました。次回は、日本語の文字をUnicodeで扱う上での留意点や当館が採用してきた文字コードについてご紹介します。

上綱 秀治
(かみつな しゅうじ 電子情報部 電子情報企画課)

[1]16進数の文字コードを「&#x」と「;」で囲むことにより文字を記述する方法は、文字参照(数値文字参照)と呼ばれる方法の一種で、おもにHTMLの記述などに用いられます。

[2]CJK互換漢字とCJK統合漢字については、次回解説します。

参考文献
連載第1回に掲載しています。


このページの先頭へ

NDL書誌情報ニュースレター(年4回刊)

ISSN 1882-0468/ISSN-L 1882-0468
2016年1号(通号36号) 2016年3月25日発行

編集・発行 国立国会図書館収集書誌部

〒100-8924 東京都千代田区永田町1-10-1

メールアドレス:bib-newsアットマークエヌディーエルピリオドジーオーピリオドジェーピー(ニュースレター編集担当)