ISO/IEC 10646
読み:アイエスオウ-アイイースィー-いちゼロろくよんろく
外語:ISO/IEC 10646

 文字集合(CCS)の一つ。国際標準として作られている。
目次

概要

文字集合
 元々は、16ビット、そして後に21ビットのUnicodeに対し、32ビット(有効31ビット)の文字空間を持つのが特徴となっていた。
 Unicodeでは表現できない文字空間を表わすことができるという点でUnicodeの上位互換であったが、ISO/IEC 10646:2003/Amd.2:2006でUnicode外の領域は「永久に予約」(permanently reserved)と宣言されたことにより、使用できなくなった。
 このため現在では、公開日のずれこそあるが、両者は文字集合としては同一となっている。

国際標準
 正式には、Information technology - Universal Multiple-Octet Coded Character Set (UCS) (国際符号化文字集合(UCS))という。
 最初に作られた16ビット範囲に収められるPart1(ISO/IEC 10646-1)と、それを超える範囲を規定するPart2(ISO/IEC 10646-2)があったが、後に両者は統合され(2003(平成15)年)、現在のISO/IEC 10646となった。
 この国際標準の、各国の規格名は次のようになっている。

沿革
 ISO/IEC 10646と、関連する事項について時系列で並べる。
 なお、「ISO/IEC 10646-1:1993」のAmd(AMENDMENT=追補)は31まで確認されているが、全部は発行されていない。該当する※を附したものは「ISO/IEC 10646-1:2000」へと組み込まれている。

Unicode 1.x時代

ISO/IEC 10646-1:1993時代

ISO/IEC 10646-1:2000時代

ISO/IEC 10646:2003時代
 規格が融合されたISO/IEC 10646:2003を「1st Edition」という。

ISO/IEC 10646:2011時代
 ISO/IEC 10646-1:2011を規格融合後の「2nd Edition」という。

ISO/IEC 10646:2012時代
 ISO/IEC 10646-1:2012を規格融合後の「3rd Edition」という。

ISO/IEC 10646:2014時代
 ISO/IEC 10646:2014を規格融合後の「4th Edition」という。
 今後の予定

誕生までの経緯

前夜
 1991(平成3)年に投票されたDIS 10646は、否決された。これは、同年に登場したUnicode 1.0の影響であり、似たような規格が乱立することを避けるためだった。
 DIS 10646というのは、元々のISO/IEC 10646の思想に基づくものともいえる。
 DIS 10646は4オクテットの符号系で、8ビットごとの上位から群、面、区、点と区切ったものである。各国の現役のコードは、そのまま(統合などせずに)収容され、従来のものとの互換性を最大限に配慮(?)しているのが特徴だった。
 これは、現在のTRONコードと殆ど同じ思想である。
 その一方、UnicodeはASCIIおよびISO/IEC 8859の拡張という形を取った2オクテット固定長の符号系である。ASCIIとISO/IEC 8859-1はそのまま、それ以降は全て新規割り当てで、漢字文字は(2オクテットに収めるために)統合する、というものであった。
 両者は、根本から全く思想の異なるものだったのである。しかしDIS 10646はUnicodeより出遅れたため、完敗を喫することになった。

DIS 10646第二版
 こうしてUnicode 1.0の後に登場したDIS 10646第二版は、群、面、区、点という概念自体はそのままだが、その内容は0群0面にUnicodeをそのまま飲み込みこれを基本多言語面(BMP)とする、他の群、面は未使用で予約、という、ものであった。
 第二版と名は付いていたが、実質これはUnicode 1.0そのままであった。
 こうして、第二版は無事に国際投票で可決され、ISO/IEC 10646-1となったのである。

基本的な構造

ビットの使い方
 元々の設計では、32ビットのうち、上位の8ビットが群(group)、次の8ビットが面(plane)、次の8ビットが区(row)、下位の8ビットが点(cell)と表わされ、この8ビットずつのかたまりをオクテット(octet)と呼んだ。但し、実際には32ビット中の31ビットのみを利用し、最上位の1ビットは利用しない。つまり群のみ7ビットで表現された。
 群・面は直訳だが、区・点という訳語は直訳ではない。これは、従来のJIS X 0208などと用語を合わせた結果であると考えられる。
 しかし群の利用実績がないこともあり、ISO/IEC 10646:2011(Unicode 6.0.0)からは群が仕様から廃止された。
 このように、ISO/IEC 10646:2011(Unicode 6.0)以降はビット数とは無関係に、面は0から16までの全17面とされた。UTF-16で表現できる全範囲である。

面の構造
 群は既に廃止されているが、後述の説明のために併記する。
 これ以降は、初期のISO/IEC 10646で使用されていたが、現在のISO/IEC 10646では使用しないことになった。

実装水準
 3種類の実装水準が規定されていた。
 いわゆるUnicodeは、このうちLevel 3(実装水準3)に準じて実装されている。
 現在のISO/IEC 10646では使用されておらず、Level 3相当での実装が要求されている。

特徴

ISO/IEC 10646とUnicodeの関係
 ISO/IEC 10646とUnicodeの関係は、元々は、前者が後者を含むということだった。
 しかし現実に、Unicode領域外については文字の割り当ては存在せず、また今後も、そのような動きが生じる可能性は皆無だったことから仕様が改められ、現在のISO/IEC 10646はUnicodeとほぼ等価の仕様となっている。
 但し、Unicodeはあくまでも閉じた団体であり参画企業が好き放題できるのに対して、ISO/IEC 10646は国際標準であり、その議論に参加することは理論上誰でも可能である。ISO/IEC 10646で認められないものをUnicodeが採用することはない。

符号化方法
 ISO/IEC 10646とUnicodeは、同じ符号化方式が利用出来る。
 ISO/IEC 10646の全領域を網羅できるのはこのうち、UTF-8と32ビット(4オクテット)系の符号である。
 UCS-2/UCS-4は、初期のISO/IEC 10646用語で、Unicodeに配慮したことから作られたものだが、Unicodeでは既に使用されていない。
 UTF-8は、RFCにおいては、当初のRFC 2279と、それを破棄し標準となったRFC 3629があるが、前者が全領域網羅なのに対し、標準の後者はUTF-16の範囲内(Unicode範囲内)しか対応していない。

再検索