skk.vim で「〜」を入力すると全角チルダが入力されるんだけど、これは波ダッシュの方がいいんじゃないかと考えてみたりしたお話。
ことの発端
まずことの発端として、私が Solaris 上で vim+skk を使ってメールを書いていて、たまたま「〜」を入れたメールを送信したら、普段なら iso-2022-jp に変換されて送られるところを utf-8 で送られてしまった、というところに始まる。
いつもメーラは mutt を使っていて、メール作成は vim。vim 上では utf-8 でテキストを編集して、これを mutt が可能であれば iso-2022-jp に変換して送ってくれる、というのが一連の流れ。つまり、utf-8 で送られてしまったということは、iso-2022-jp で表すことのできない文字が含まれていた、ということだ。
結局のところ「〜」が全角チルダ (U+FF5E) で入力されていたために、iso-2022-jp に変換できなかったということらしい。
波ダッシュと全角チルダって何よ
詳しい説明は 波ダッシュ - Wikipedia に譲る。要するに同じ字形に異なるコードポイントが割り当たってしまったという問題がある。
字形は同じ「〜」なのに、この文字が波ダッシュ (U+301C) で表されている場合と、全角チルダ (U+FF5E) で表されている場合があり、見た目は区別がつかないのだけれどもプログラム的に処理する場合に問題になることがある。
おそらく従来の JIS や Shift_JIS、EUC-JP には波ダッシュに相当する文字はあるが全角チルダに相当する文字はない。しかしこれでは Unicode で全角チルダを記述したファイルを前述の文字コードに変換できなくて困るので、Microsoft 拡張という形で Shift_JIS (CP932) などの内部でも全角チルダが使用できるようになっている。
が、この Microsoft 拡張がない場合、全角チルダを含む utf-8 テキストをたとえば iso-2022-jp に変換しようとすると、変換先のコードポイントが存在しないためにエラーになる。
Windows では全角チルダ、それ以外では波ダッシュ
上記 Wikipedia 記事によると Windows では全角チルダを使用するが、それ以外の環境では波ダッシュを使用している、というように読める。
私が全角チルダを入力してしまっていたのは、utf-8 で書かれている skk.vim の変換テーブルがそうなっていた、というだけの理由だったので、自然な流れとして Windows の場合には全角チルダを入力して、それ以外の場合には波ダッシュを入力するような修正をすればいいのではないかと思っていた。
が、どうもことはそう単純ではないらしい。
ibus-anthy も全角チルダ
ちなみに、他のインプットメソッドではどうか、ということを試してみると、意外なことがわかった。
- uim-anthy (NetBSD/Mac OS X): 波ダッシュ
- ibus-anthy (Fedora 13): 全角チルダ
- ddskk (Debian?): 波ダッシュ
なんと、まさかの ibus-anthy 全角チルダ。つまり、日常 Linux で生活している人達は、「〜」として全角チルダを入力しているということだ。こうなってくると、「Windows 以外では波ダッシュを入力する」という方針はどうもあやしい。正しいのかどうかわからない。
一方で ddskk は波ダッシュ固定で入力されるようだ。という意味では skk.vim でも波ダッシュ固定で入力する、とする方針もあり得る。
どうするべきか
どうするべきでしょうねえ。マッピングはユーザが変えられるわけだし、どちらをデフォルトにするかという問題でもある。
技術的・歴史的には JIS, Shift_JIS, EUC-JP に従来から存在している波ダッシュを使用した方が正しいと思う。一方実用的には、Windows/Linux を常用している人にとっては全角チルダの方が周りとの一貫性があり都合が良い、ということもあるかもしれない。
個人的には Windows も Linux もたいして使わないし、技術的に優位な波ダッシュと取るかな、というくらい。ddskk とも互換になるしね。