番号記号とシャープ

C# Language Specificationには,「C#」の読み方については「The name C# is pronounced “C Sharp”.」と書かれている.つまり,「しーしゃーぷ」と読めばいい.しかし,この後に表記について「The name C# is written as the latin capital letter C (U+0043) followed by the number sign # (U+0023).」というちょっと気になることが書かれている.つまり,「C#」の「#」は,実は番号記号であって,シャープではない.これはプッシュ電話のキーでも同じであり,右下に配置されているのはシャープではなく番号記号である.これについてC#のJIS委員会で面白い議論があったので,簡単に紹介しようと思う.

番号記号とシャープは,本来は別の記号であり,番号記号(number sign)は,番号を示す数字の前に置かれる記号であるのに対してシャープ(sharp)は楽譜において音を半音高めることを表す記号である.実際にどのような違いがあるかというと,番号記号は「#」のように必ず二本の横棒を水平に書く(縦棒は垂直にする場合と,傾ける場合がある)が,逆にシャープは「♯」のように必ず二本の横棒を傾けて,二本の縦棒を垂直に書く.これは,番号記号は手書きの伝票で筆記体のアルファベットを書くために使われたからであり,シャープは五線譜の上に書くために五線と重ならないようにする必要があったからである.なお,この区別は世界中で一般的に行われていると考えて頂いてよい.

これは,既存の規格では次のようにサポートされている.

この二文字は本来は明確に区別して用いられている文字である.しかし,欧米では番号記号の方が圧倒的に多用されるために,7ビット及び8ビット符号化では番号記号だけを収録した.そのために,C#言語ではそれらの文字符号化でも記述できるように,意図的にNUMBER SIGNで代用することを考えたのだろう.

なお,日本においては,この二文字はさらに不幸な運命を背負ったようである.というのは,日本においては,番号記号はほとんど知られておらず,使われてもいなかった.そのために,番号記号を見た多くの日本人は,それをシャープだと誤解してしまう結果となってしまった.ただし,この問題はJIS X 0201だけを使っている段階では,記号が一つしかないので顕在化しなかった.

しかし,JIS X 0208で,番号記号とシャープを別の文字として収録したために,これらの文字を区別する習慣がなかった日本人は混乱する結果になってしまった.さらに,JIS X 0208の前身のJIS C 6226:1978の段階では番号記号しかなく,その後のJIS X 0208:1983でようやく収録されたために,文字化けを防ぐために本来シャープを使うべきところでも番号記号で代用するような指導もおこなわれたことが,混乱に拍車を掛けてしまった.

このように,番号記号とシャープというのは本来異なる文字であるが,その区別が特に日本で明確におこなわれていないのは,文字コードの不幸な歴史を反映していると言えるかもしれない.これを読んで,今後は番号記号とシャープの区別に少し気をつけるようになって頂ければ幸いである.