DIS 10646
DIS 10646とは、ISO/IEC 10646の原案である。
概要
DIS 10646とは、文字セットの切り替えを行わずに世界中の文字を単一の文字集合として扱えることを目指したISOの文字コード規格である現在のISO/IEC 10646の原案（Draft International Standard）であり、この「DIS 10646」には、1990年に作成されたが廃案になったDIS 10646第1版と1992年に作成され正式規格の元になったDIS 10646第2版とが存在するが、この二つの版の内容は大きく異なっている。本記事では1980年代後半に議論されていたDIS 10646第1版のさらに元になったが検討の結果否決され廃案になった2オクテット案「DP 10646」についても記述する。
DP 10646
1983年7月ISO/TC 97はアメリカの提案にもとづき各国の文字を統一して扱える2オクテットコードの作成を決定し、実際の作業を文字コードを担当する「ISO/TC 97/SC 2」が行うことになった。1984年4月京都で開催されたISO/TC 97/SC 2において、それまでに存在したISO/TC 97/SC 2/WG 1とは別の専門のワークグループ (ISO/TC 97/SC 2/WG 2) を設置することと、作成する規格の規格番号をISO 10646とすることが決定された。
1985年にはアメリカが作成したA案とイギリスが作成したB案の二つの案が提出された。A案はISO 2022との互換性を重視したもので、第1オクテット、第2オクテットともにISO 2022の制御領域に相当する部分を使用せず20から7EとA0からFFのみを用いるものであった。これに対しB案は「真の16ビットコード」を目指して第1オクテット、第2オクテットともにフルに使用し16ビットで表現できる空間をすべて使用するというものであった。この両者は共に当時すでに規格として制定されていた日本・中国・韓国の漢字については統合せずにそのまま含むことを想定したものであった。この両案が検討された結果1987年3月ベルリンで開催されたISO/TC 97/SC 2においてA案が選ばれ「DP 10646」となった。日本はこの案において3021から7E7EにJIS X 0208の第一水準漢字と第二水準漢字、B0A1からFEFEに韓国のKS C 5601の文字を、B021からFE7Eに中国のGB 2312の文字をそれぞれ入れることを考えていた。この案は、日本・中国・韓国の当時すでにそれぞれの国の規格として制定され、ISO 2022に基づく国際登録簿に登録されていた文字コード規格の文字を全て含むことは可能ではあったが、中国は当時自国の文字コードGB 2312の拡張を進めており、この案では「現在規格化を目指して作業を進めている漢字を全て入れることが出来ない」などといった理由で反対され、さらに日本も当時作業が開始されていたJIS X 0208の拡張（1990年に「JIS X 0212 補助漢字」として完成することになるもの）によって増える文字を入れることが出来ないといった理由から大幅な見直しを迫られることになった。その結果DIS 10646はマシンアーキティクチャと親和性の高い4オクテット（32ビット）をベースに1オクテットから4オクテットまでのサブセットを持つコードに根本的に作り直されることになった。
DIS 10646第2版
このようなDIS 10646は作り直されることになった。このときのDIS 10646の作り直しについて、「DIS 10646第1版は廃棄されUnicode（を元にした案）に置き換えられた。」とされることもあるが、DIS 10646第1版は否決されたものの、否決した投票の中には「単純にDIS 10646第1版を廃案にしてUnicodeに置き換えるべき」とする意見ではなく「DIS 10646第1版とUnicodeがマージされれば賛成する」という見解が多かったため、DIS 10646第1版とUnicode（1.0）の両方の特徴を取り入れた新たなDIS 10646を作成する事になった。
中でも漢字部分の文字の選択と配置をどうするかが問題となったが、この点については中国および1991年1月にUnicode Final Draftに賛同する企業によって設立されたUnicodeコンソーシアムの要請により、今後の漢字コードの方針を決めるため、ISO/TC 97/SC 2/WG 2は CJK-JRG (Joint Research Group) と呼ばれるグループ（後のIdeographic Rapporteur Group）を別途設置し、そこで引き続き検討することにした。CJK-JRGは 各国の漢字コードに基づき独自の統合規準を定め、ISO 10646 / Unicode用の統合漢字コード表を作成した。CJK-JRGは第1回が1991年7月22日から24日にかけて東京で、第2回が1991年9月17日から19日にかけて北京で、第3回が1991年11月25日から29日にかけて香港で開催された。
中国は「漢字発祥の国」としてこの会議に自身が作成した「統合漢字表」を提出し、これを元に日本固有の漢字を修正追加するという形で最終的な統合漢字表を作成することを提案したが、日本は各国が持つ規格の漢字表を「部首が異なる漢字は統合しない」などの対等な基準で組み合わせて漢字表を統合することを主張した。この中で生まれてきたのが「各国の元になる規格で別の漢字として扱われている漢字は統合漢字表でも別の漢字として取り扱う」という、「原規格分離規則」である。このような議論の結果1991年末になって各国の漢字コードに基づき独自の統合規準を定めた、ISO 10646 / Unicode用の統合漢字コード表が Unified Repertoire and Ordering (URO)として完成した。この初版の表は若干の誤りを含んでいたため翌1992年に若干の修正が行われたURO第二版が制定された。
1992年5月30日　UROを取り込んだDIS 10646第2版が完成した。DIS 10646第2版ではDIS 10646第1版にあった「群 (group)、面 (plane)、区 (row)、点 (cell) 」という構造は残されたが、群 (group)については00から7Eのみが使用出来るようになり実質31ビットのコードになった。また面 (plane)、区 (row)、点 (cell)については完全に値の制限が無くなって00からFFまでの全てが使用出来るようになった。また最初の面（第1版では第0群第0面、第2版では第20群第20面）を基本多言語面 (BMP) と称する形は残しながらも、BMPにUnicodeをそっくり入れてその他の群・面は未使用という、実質Unicodeと同一の2オクテットの符号となった。
ISO/IEC 10646の制定
1993年5月1日、DIS 10646第2版を元にした「ISO/IEC 10646-1: 1993 Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and basic Multilingual Plane」が賛成多数で国際規格化された。このISO/IEC 10646は、Unicodeとは文字を割り当てたコードポイントについては完全に一致していたものの、ISO/IEC 10646は基本多言語面以外の面の存在を最初から想定しておりそれらの領域についても「あくまでコードポイントに文字が割り当てられていないために未使用である」という立場をとっていた。この点ISO/IEC 10646はDIS 10646第1版に源流を持つ「群、面、区、点」という構造を受け継いだ31ビットコードであり、あくまで一つの面（BMP）しか持たない16ビットコードであるUnicodeに対していわば「上位互換」の関係にあったため、両者はこの時点で完全に同一のものになったわけではなかった。
その後
1993年6月にはUnicodeの側が制定されたばかりのISO/IEC 10646-1:1993に合わせてUnicode 1.0を若干変更したUnicode 1.1が制定した。この後両者は改訂時期を多少ずらすことはあっても追加する文字については必ず同じコードポイントを割り当てるなど歩調を合わせながら度々改訂されていくことになる。
その後Unicodeは、漢字を含めたさまざまな方面からの文字の追加要求に応えるために1996年7月制定のUnicode 2.0以降は2オクテット（16bit）の固定長コードであることをやめてサロゲートペア（代用対）を導入して基本多言語面以外の面（追加面）の存在を可能にして収容可能な文字を大幅に増やし、21ビット領域に拡張を行い31ビットコードであるISO/IEC 10646に近づいていった。Unicodeは規格自体にサロゲートペアが導入されてからも具体的な実装では2オクテット（16ビットコード）固定長コードとして基本多言語面以外の面（追加面）を使用出来ないものが多かったが、次第に基本多言語面以外の面にも対応するシステムが増えていった。
ISO/IEC 10646の側も当初の版では「00群の224面から255面まで」と「96群から127群まで」については私用領域と定められていたが、2003年になってISO/IEC 10646は「群、面、区、点」という構造を残しながらも第0群第17面以降の面については「将来にわたって文字は割り当てられない」と定められ、文字を割り当てられる可能性のある範囲がUnicodeと同一になった。
さらに2010年時点で検討中のISO/IEC 10646の改正案では、初期のUnicodeの最大の特徴であった2オクテット（16ビット）固定長文字コードとしての「基本多言語面にしか対応していないエンコーディングであるUCS-2」を「deprecated」（en:deprecation）とする規定を盛り込む一方で、「群、面、区、点」という構造を放棄し「ISO/IEC 10646によって提供されるUCSは第0面から第16面までの17の面から構成される。」と規定し、ISO/IEC 10646の構造自体を完全にUnicodeと一致させる趣旨の規定もいくつか含まれている。