日本語文字列照合順番の一部を整理整頓してみる から始まる一連のポストである.
まず,立ち位置をおさらいしておく.
JIS X 4061 から,
- (2) 読み・表記照合
- 3.3 (1)/4.1 基本照合規則
を採用し,(日本語を解しない)実装者に要件を説明することを念頭に置いて,記述を整理することを狙う
とする.根源的には,二つの文字列の大小関係(順序)を定める課題であり,実際に並べ替える作業とは独立である.ただし,誤解の恐れがないときには簡便のため,「順番を決める」「順序を決める」「整列する」「ソートする」などの用語をほぼ同じ意味で用いる.
「実装者」は,ここでは ConTeXt の実装者を想定する.ConTeXt MkIV では,多言語混植といったことを最初から意図しているので,JIS X 4061 のうち,欧字記号・ラテンアルファベットについては,JIS X 4061 ではなく各言語の慣習に従わせるという方針で説明したい.
なお,ConTeXt で索引を指定するときには
\index{索引へ表示させたい文字列}
または
\index[整列に利用したい文字列]{索引へ表示させたい文字列}
とソースを記述することを想定する.
さて,「読み・表記照合」を採用した立場で,非日本語話者に概要をまず話すならば,以下のように説明したい.
大まかには,音でソートする.日本語には,音を表現するために「かな」があり,かつ同じ音を表現するのであるが,「ひらがな」と「カタカナ」が存在する.正規化するためにはどちらかに寄せるのが妥当だが,(通常は表記に音引きを用いないという理由により,単純なため)「ひらがな」へ正規化して考えればよい.
日本語は,固有の文字であるひらがなとカタカナのほかに,漢字およびラテンアルファベット,ギリシア文字,キリル文字,(絵文字を生んだような文化から想像できる通り,多岐にわたる)各種記号を織り交ぜて表記する.カタカナからひらがなへの変換は容易であるから,ソート処理系の中で当然実装されるべきである.一方,漢字を用いた語をどう読むか(どんな音に対応するか)については,日本語の文法知識すら必要になるため,ユーザがひらがなまたはカタカナですべて与えると仮定してよい.ただし,KAKASI のように半自動化(ときたま間違えるので,そのときはユーザが陽に与えればよい)する仕組みもあるので,プリプロセッサなどを挟む仕組みは用意しておいてほしい.なお,各種記号は(音ではなく)そのまま扱い,ラテンアルファベット,ギリシア文字,キリル文字からなる単語は,元の言語の自然な整列順序に従えばよいとしたい.
なお,索引のことまで考えると以下の点までは最初に説明しておくのがよかろう.
索引の見出し(グルーピング)に関しては,その分量や著者,編集者,出版社などによってもまちまちではある.もっとも大雑把には,
記号・数字・ギリシア文字/アルファベット/あ/か/さ/た/な/は/ま/や/ら/わ
とされるだろう.ただし,「あ」は「ア」にも「あ行」にも「ア行」にも「あ~お」にもなりうる.また,分量が多ければ,「アルファベット」は A..Z に分解されるし,「あ/…/わ」についても「あ/い/う/え/お/か/き/…/わ/を/ん」になりうる.