日本語の横棒記号に絶望した

先日のjcconvは記号の全角半角変換も実装しているのですが、マイナス記号が上手くマッピング出来ていませんでした。調べてみるとマイナスだと思っていた記号が全角ダッシュ(EM DASH)だった訳です。イラッとしたついでに横棒記号について調べてみました。結果としては日本語には思ったよりたくさんの横棒記号がありまして、イライラが収まりません。

まず半角記号の’-‘はハイフンマイナス(0x2d)と呼ばれていて、ハイフンとマイナスの意味を包含した記号になっています。ASCIIコードのビット数の制限があった事を考えても、センスの良さが光る決定だと思います。文脈でハイフンかマイナスかは容易に判断できる訳です。ハイフンとマイナスを別々にしていたら、今頃マイナスのつもりで書いたハイフンに対するコンパイルエラーで世界中のプログラマのイライラは100%水増しと言った状況なわけです。世界平和に繋がっているといっても過言ではありません。

一方でJIS記号由来でunicodeに採用されている一連のマルチバイトな横棒のセンスのなさと言ったらありません。色んな文脈で使われる横棒を全部別々に定義してしまっています。取りあえず列挙しておきます。

見た目 読み方 unicodeコード
ハイフン 0x2010
NON-BREAKING HYPHEN 0x2011
FIGURE DASH 0x2012
EN DASH 0x2013
EM DASH 0x2014
HORIZONTAL BAR 0x2015
MINUS SIGN 0x2212
長音記号 0x30FC
長音記号(半角) 0xFF70
漢数字 0x4e00

もしかしたらまだあるかもしれません。別の記号にした意味が分かりません。これ意識して使い分けてる人なんかいるんですか。これのせいでweb上の日本語を解析するのがどんなけ面倒になるか考えてほしいです。漢数字が別なのはまぁ良いですけど、あとはもう半角と全角の2種類にするべきでした。

「ちょーうける」と言っているつもりのそこの女子高生!実際は「ちょ マイナス うける」となっています。残念ですが,コンパイルエラーです。文字列同士の減算は定義されておりません!

「社員を第一に」と書いているつもりのそこのコンサルタント!実際は「社員をだいぃに」となっています。社員を第二とか幾ら何でも本音出し過ぎでしょうが!

まぁそういう訳で鬱憤ばらしエントリーでした。ちなみに自分の入力した横棒が一体どれにあたるのかを調べるにはpythonだと以下のようにします。

>>> print hex(ord(u'―'))
0x2015

jcconvでは今のところ0x2212とハイフンマイナス(0x002d)をマッピングしています。

Leave a Reply

Your email address will not be published. Required fields are marked *