現在、読みとして入力する郵便番号は「1000014」のようにすべて数字になっています。
でも、本来は「100-0014」「100─0014」のようにハイフンを入れたい。見やすいし、「1000014えん」が「|東京都千代田区永田町|円|」になるのも防げるだろうから。
なぜそうなっていないのか、郵便番号変換機能が実装された時の経緯は分かりませんが、仮に今それをやりたいと思ったとしても上手く行きません。
というのも、現状のフロントエンド({scim,uim,ibus}-anthy で確認)では、前の文字が数字でもハイフンは長音記号のままになってしまうから。
例: 100ー0014
※uim-anthy は「英数モード」に変えてから入力すればハイフンになります。
また、テンキーから入力した場合どうなるかは、ウチにはテンキーがないので分かりません。
勿論、「100ー0014 #CNS 東京都千代田区永田町」という風に、読みをハイフンでなく長音記号で登録すれば、「100ー0014」から「東京都千代田区永田町」に変換できますが、みっともないので自分はやりたくない(フォントによっては全角ハイフンと長音記号の区別がつかないかもしれませんが(特にゴシック体)、区別してあるフォントの場合は、長音記号は左端が上がってる)。
数字の次にハイフンがくるのは郵便番号だけでなく、他にも
日付: 2010-4-24
住所: ○○市××町3-2-1-503
バージョン: 1.2.3-4
などがある。
数字の直後に長音記号がくることは、多分まずないと思うので、「前が数字だったら長音記号ではなく、ハイフン」という動作にして問題ないと思うんですが、どうでしょうかね。
ちなみに、「数字の次の句読点も同じようにカンマやピリオドに」というのは、マズい気がする。
「右に30、左に5。」みたいな文が「右に30,左に5.」になってしまうので。
ならば、「前の文字が数字かどうか」ではなく「後ろの文字が数字かどうか」で判断すれば行けるんではないかと、ちょっと思ったけど、これも「今日は、24日です」が「今日は,24日です」になるのでマズい。
【追記】4/25
「-10」みたいな負数もあるから、「前の文字が数字だった」じゃなく、「直後に数字がきたら」の方がいいのか。
ちなみに、今見たら、Google 日本語入力はこういうような動作になってた。ことえりもだ。
数字に続けて「ほ」のキーを押すと、長音記号ではなくハイフンになる。
負数の場合も、最初は長音記号だけど、直後に数字を入力すると、長音記号がハイフンに変わる。
なかなか気が利いてますね。
ちなみに、負数の場合も「マイナス記号」にせずに「ハイフン」にしてるのは、郵便番号や住所のように、数字をつなげる場合に「マイナス記号」になっては不都合だからでしょうか。
マイナス記号/ハイフンの使い分けもやればできると思いますが、もしかしたら、マイナス記号は文字コード変換時のハマりポイントだった気がしないでもないので、「ハイフンを使っておいた方が無難」という判断なのかも。
【追記】4/27
「前後の文字を見て長音記号/ハイフンを使い分ける」ことができるのなら、カンマやピリオドも使い分けられるんじゃ? と思って見てみたら、ことえりも Google も使い分けてた。
ピリオドは、どっちの IME も
1。 # まだ句点のまま
1.2 # 数字で挟まれるとピリオドに変化
という動作でした。
カンマはちょっと違って、Google のはピリオドと同じ動作ですが、ことえりは、
1、11 # まだ読点のまま
1,111 # 後ろに数字が 3つ来るとカンマに変化
という動作でした。
どっちもなかなか気が利いてますね。
【さらに追記】4/27
先に「1234567」を入力して(未確定のまま)後から途中に長音記号や句読点を入力するとどうなるか?
Google のは入力位置がどこでも、数字に挟まれていれば、それぞれハイフン、カンマ、ピリオドになった。
123-4567
12345,67
12.34567
ことえりは、入力位置によって長音記号/句読点のままだったり、ハイフン/カンマ/ピリオドになったりした。
123456-7
12345ー67
123456.7
12345。67
1234,567
12345、67
12、34567
うーん、ここまで考えられていたとは。
【追記】5/4
G-HAL 氏よりご指摘が。
> 「直後に数字がきたら」直後の文字だけしか見ないとそうなる可能性があると思いますが、ことえりも Google のも前後の文字を見てるようなので、大丈夫なようです。
「とーすたー3だい」が、 ともすれば「|トースタ|−3台|」になってしまう問題が……。
ことえりも G のも、
変換前: とーすたー3だい
変換後: |トースター|3|台|
でした。
逆に言うと、「前後が数字」でなければハイフンにならないので、「きおんはー3ど」を変換しても、
[ことえり]
変換前: きおんはー3ど
変換後: |気温|ハー|3|度| → |気温は|ー|3|度|
[Google]
変換前: きおんはー3ど
変換後: |気温は|ー|3|度|
と、どちらも長音記号のままでした。
「前に数字以外の文字がある場合は長音記号のまま、数字か先頭ならハイフンに」ということかな?
私自身は、 ${HOME}/.uim の ja-rk-rule にて、 「-」とタイプすると「ー」(長音)、 「@-」とタイプすると「−」(マイナス)、と、 区別してタイプする設定にしておき、 明示的に区別してタイプしているので、 下手に気をつかって変わったり「しない」方が好みだったりします。 英数記号も同様。なるほど。「"@-" でマイナスに」というのは思いつきませんでした。
# 下手に気をつかって間違えられるよりは、キータイプが1回多い方がマシ。
Unix ユーザはこういう対処法(自分でコントロールするやり方)の方が好きそうですね。
「MS Office の『オートコレクト』? ク タ バ レ」みたいな(尤も、あれを好きな人というのは見たことありませんが)。
自分もちょっと試してみます。
【関連する記事】