Unicode
読み:ユニコード
外語:Unicode

 ASCIIなどの英数文字や日本語を始め、支那語、朝鮮語などの漢字文字、梵字やキリル文字等も含め、全ての国語文字のコード化を目標とする文字コード仕様のこと。
目次

規格

策定
 Unicodeは米国の「Unicodeコンソーシアム」という団体により策定されている。
 このUnicodeコンソーシアムとISOは直接無関係だが、しかしISOと連携を取り合って規格が作られている。こうして作られたISO/IEC 10646が公的規格となっている。
 Unicodeコンソーシアムは、Unicodeについて、次を標榜している。

Edition
 延々と更新が続くが、版(Edition)と称されるものは次の通りである。
 規格融合後は、版が1に戻った。

沿革
 バージョンごとの差異については後述する。

技術

文字集合

現在
 Unicodeは、ISO/IEC 10646の部分集合として文字集合が規定される。
 32ビットあるISO/IEC 10646の文字番号の上位から8ビットごとに、群、面、区、点、と呼ばれる。
 つまり文字コードの0x10000ごとの区切りとして面(プレイン=Plane)があり、現在は各面について次のように使われている。
 Unicodeでは、16進数で書かれる文字番号は、頭に「U+」をつけるルールとなっている。
 従来の電子計算機で使われていた符号に含まれる文字は、BMPを中心として広く対応され、またラウンドトリップ(往復変換)にも配慮している。日本の場合、JIS X 0208とJIS X 0212の全文字はBMPにあり、JIS X 0213の拡張漢字はBMPとSIPにある。
 また、当初はBMPのみが想定されていたため、00群01面以上の領域は特殊な方法で用いられることから「サロゲート領域」と呼ばれている。

当初
 Unicodeは16ビット固定長を前提として誕生し発展したため、大きくBMPとそれ以外に分けられている。
 BMPは当初、次の4領域に分けられていた。
 この枠組みについては後の拡張によって崩壊しており、現在においては名残りとして残るのみである。

符号化方法
 Unicodeには、次のような符号化方法があり、用いられていたり、提案だけされて承認されなかったり、当初仕様書にあったが現在では破棄されたりしている。

対応文字/言語
 Unicode 7.0.0までで、利用可能(および可能予定)な文字の種類は次のとおりである。
 文字番号の割り当てについては、各面の項目を参照のこと。
 各文字に対応するISO 639の言語コードも併記する(文字のコードではない)。

00面 BMP U+xxxx
 基本多言語面(BMP=Basic Multilingual Plane)。
 Unicode 7.0.0までで、利用可能な文字の種類は次のとおりである(文字番号順)。

01面 SMP U+1xxxx
 補助多言語面(SMP=Supplementary Multilingual Plane)。
 古代文字や記号類など、日常滅多に使わないような文字がここに格納されている。
 Unicode 7.0.0までで、利用可能な文字の種類は次のとおりである(文字番号順)。

02面 SIP U+2xxxx
 補助漢字面(SIP=Supplementary Ideograph Plane)。
 CJK統合漢字拡張BCJK統合漢字拡張CCJK統合漢字拡張DCJK統合漢字拡張Eがここにあり、00面と合わせて康熙字典の全ての字が揃うことになっている。

03面 TIP U+3xxxx
 第三漢字面(TIP=Tertiary Ideographic Plane)。
 現在は使われていない、古代の漢字がここに符号化される予定。

14面 SSP U+Exxxx
 補助特殊用途面(SSP=Supplementary Special-purpose Plane)。

15面、16面 U+Fxxxx、U+10xxxx
 外字領域。

バージョン

Unicode 1.0〜1.1
 Unicode 1.0Unicode 1.1は、ISO/IEC 10646(当時のISO/IEC 10646-1)によって定められる31ビット長文字コード規格のうち、00群00面(上位16ビットがすべて0となる領域)のこと、と説明できる。
 これは基本多言語面(BMP)と呼ばれ、最大で65,536文字が表現可能だった。
 多国語が必要な環境で歓迎され、HTMLなどの文書やWindows NTなどのOSで採用された。
 Unicode 1.1からは「結合文字」が明確に用意され、基底文字+結合文字という後置により、文字が表現可能となった。例えば、「が」は、「か」と結合用濁点の2文字で表現することが出来る。
 また、Unicode 1.0にあったチベット文字はUnicode 1.1で一旦全て削除された。

Unicode 2.0〜2.1
 16ビットでは領域が不足したことから、Unicode 2.0ではあらかじめ確保されていた空き領域に1,024個のサロゲートを二組用意し、二つ組み合わせて表現する「サロゲートペア」が導入された。この方式を用いた符号化方法を「UTF-16」という。
 これにより、扱える文字数が合計で220+216-2048(サロゲート)で、最大1,112,064字となった。この版では枠組みが決まっただけで、その領域に格納する文字までは決められていない。
 また、U+3400〜4DFFに置かれていたハングルがU+AC00〜D7FFに移動され増やされた。ハングルは、Unicode 1.1迄とUnicode 2.0以降は非互換となる。
 更に、Unicode 1.1で一旦削除されたチベット文字はUnicode 2.0から符号位置や仕様を変え、再び定義された。チベット文字は、Unicode 1.0とUnicode 2.0以降は非互換となる。

Unicode 3.0
 Unicode 3.0になり、ようやく不足極まっていた漢字文字が増やされることになった。
 Unicode 1.1ではハングルが置かれていたBMP領域(U+3400〜U+4DFF)をCJK統合漢字拡張A(Ext-A)とし、6,582文字の漢字が増やされている。

Unicode 3.1
 Unicode 3.1からは、更に漢字を増やすため遂にBMPを超える範囲の文字も規定された。
 サロゲート領域(U+20100〜U+2A6D6)に、CJK統合漢字拡張B(Ext-B)として42,711文字が追加されている。

Unicode 3.2.0
 Unicode 3.2.0からは、仕様として公式にJIS X 0213への対応が明記された。
 異体字セレクター(Variation Selector)1〜16が追加された。

Unicode 4.0.0
 Unicode 4.0.0からは、異体字セレクター(Variation Selector)が17〜256まで追加された。
 第3面の全域がreserved(予約)として、記述が追加された。

Unicode 4.1.0
 Unicode 4.1.0からは、コプト語や古代ペルシャ語など、対応言語の追加。

Unicode 5.0.0
 Unicode 5.0.0からは、BMP内にNKo、バリ文字、ラテン文字拡張CおよびDが追加され、サロゲート領域にフェニキア文字、楔形文字、Counting Rod 数字が追加された。

Unicode 5.1.0
 Unicode 5.1.0からは、BMP内にスンダ文字、レプチャ文字、オルチキ文字、ヴァイ文字、サウラーシュトラ文字、ルジャン文字、チャム文字と、拡張キリル文字が追加された。
 SMP内に古代記号、ファイストス文字(円盤文字)、リキア文字、カリア文字、リディア文字、麻雀牌、ドミノ牌が追加された。
 この版から、漢字に対する異体字セレクターが定義され始めた。

Unicode 5.2.0
 Unicode 5.2.0からは、BMP内にタイ・タム文字、追加のハングル字母、タイ・ヴェト文字、サマリア文字、追加の統合カナダ原住民音節文字、追加のヴェーダ文字、リス文字、バムン文字、共通インド数字形、追加のデヴァナガリ文字、ジャワ文字、ミャンマー文字 拡張-A、メイテイ文字が追加された。
 SMP内にアヴェスター文字、エジプト・ヒエログリフ、帝国アラム文字、古代南アラビア文字、碑文パルティア文字、碑文パフラヴィー文字、古代テュルク文字、ルーミー数字、カイティー文字が追加された。
 SIP内にCJK統合漢字拡張Cが追加された。

Unicode 6.0.0
 Unicode 6.0.0は、ケータイ絵文字の追加が最大の特徴である。
 またCJK統合漢字拡張Dが追加された。

Unicode 6.1.0
 Unicode 6.1.0は、補助多言語面に象形文字や幾つかのブラーフミー系文字などを追加した。

Unicode 6.2.0
 Unicode 6.2.0は、トルコリラ通貨記号が追加された。

Unicode 6.3.0
 Unicode 6.3.0は、記号4種と、アラビア文字1文字が追加された。

Unicode 7.0.0
 Unicode 7.0.0は、補助多言語面に多数の古代文字や人造文字など追加したほか、絵文字や記号類も多数追加された。

特徴

記号類
 元々16ビットで設計されていたため、漢字についてはCJK統合漢字として全体に占める割り合いを減らす努力がされたが、記号類はそれと逆に、細分化されている点が特徴といえる。
 例えば、ASCIIではマイナス記号もハイフンも、-という記号一つで共用する。しかしUnicodeでは、マイナスはU+2212「−」、ハイフンはU+2010「‐」として別の番号が与えられている。その他の記号についても同様で、記号類が豊富な点は特筆に値する点である。
 他に、ギリシャ文字のミュー「μ」はU+03BCなのに対し、マイクロ「μ」はU+00B5と別の番号が与えられている、などがある。英大文字のケイ「K」と絶対温度のケルビン「K」も別の文字である。

横棒関係
 Unicodeの記号類の豊富さを語る上で、例として横棒関係が挙げられることが多い。
 Unicodeでは、横棒関係だけでも、軽く次のようなものがある。罫線用の横線は除く。また欧文、日本語以外の言語の特殊な横棒記号も抜けているものがあるかもしれない。
番号名称概要
U+002DHYPHEN-MINUSASCIIのマイナス記号
U+00ADSOFT HYPHEN単語中、折り返す時に表示されるハイフン(折り返さない時は非表示)
U+2010HYPHEN一般的なハイフン
U+2011NON-BREAKING HYPHEN右端でも折り返さないハイフン
U+2012FIGURE DASH数字用のダッシュ
U+2013EN DASHn幅のダッシュ
U+2014EM DASHm幅のダッシュ
U+2015HORIZONTAL BAR横棒
U+2043HYPHEN BULLET中黒のようなハイフン
U+207BSUPERSCRIPT MINUS上付きマイナス
U+208BSUBSCRIPT MINUS下付きマイナス
U+2212MINUS SIGNマイナス
U+301CWAVE DASH波ダッシュ (〜)
U+3030WAVY DASH波線
U+30FCKATAKANA-HIRAGANA PROLONGED SOUND MARK仮名の長音
U+FF0DFULLWIDTH HYPHEN-MINUS「全角」のASCIIマイナス記号
U+FF5EFULLWIDTH TILDE全角チルダ
U+FF70HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK半角の仮名の長音
 ちなみに、JIS X 0208の〜は、本来はU+301Cに割り当てられるのが正しいと考えられるが、Windows等ではU+FF5Eに割り当てている。
 しかし、本来U+FF5Eは「チルダ」であって、波線記号ではない。日本語以外の言語では、U+FF5Eを表示させても一般的な波線にはならない。
 従って、「キャ〜〜!!」といった〜の使い方は、これだと間違いになるだろう。

空白関係
 空白も非常に多い。これだけ用意して、どう使い分けるのかは定かでない。
番号名称概要
U+0020SPACEASCIIの空白記号
U+00A0NO-BREAK SPACE改行しない空白
U+2000EN QUADn幅の四角形
U+2001EM QUADm幅の四角形
U+2002EN SPACEn幅の空白
U+2003EM SPACEm幅の空白
U+2004THREE-PER-EM SPACE1/3m幅の空白
U+2005FOUR-PER-EM SPACE1/4m幅の空白
U+2006SIX-PER-EM SPACE1/6m幅の空白
U+2007FIGURE SPACE数字用空白
U+2008PUNCTUATION SPACE句読点用空白
U+2009THIN SPACE細い空白
U+200AHAIR SPACE非常に細い空白
U+200BZERO WIDTH SPACE幅の無い空白
U+202FNARROW NO-BREAK SPACE幅の狭い改行しない空白
U+205FMEDIUM MATHEMATICAL SPACE中程度の幅の数学用空白
U+3000IDEOGRAPHIC SPACE全角空白
U+FEFFZERO WIDTH NO-BREAK SPACE幅の無い改行しない空白

再検索