2010年03月18日

全角片仮名と全角平仮名の変換をした際に悩んだこと

全角平仮名と全角片仮名の変換をするコードを書いた時に、「どうするのが正解なんだ?」という点で少し迷ったので、まとめてみた。

http://www.mwsoft.jp/programming/other/convert_hiragana_katakana.html

いや、「まとめてみた」ではないな、「迷ってみた」と書いた方が適切かもしれない。

悩んだことをつらつらと書いたのが、こんな感じ。

1. 「ぁ〜ん」を変換するのは簡単(Shift_JISは少し注意)
2. 「ヴ」はどう変換するべきなのか
- Unicodeなら平仮名の「う」に濁点が付いたものがある
しかし「う」に濁点は一般的な文字ではないので化ける可能性もある
- 「う」の横に濁点を付加すればいい
しかし濁点も化ける原因になる場合がある
- では、「ヴァ」→「ば」、「ヴ」→「ぶ」とば行に変換してしまえば
化ける可能性がなくて良いが、「ヴァ」を平仮名に変換したあと片仮名に変換すると「バ」になる
それってどうよ
- じゃ、どうすれば良いのさ
- ぁ〜んは固有ロジックで、後は変換テーブル作って状況に応じて使い分ける
3. 「ゝ」や「ヽ」をどうするか
- 「う」に濁点と違って、「ゝ」や「ヽ」はそれほど化けない
- そもそも片仮名であれ平仮名であれその記号を入れてきたのだ、変換して差し支えはあるまい
- 文字コードによって配置はバラバラなので、変換テーブルで良かろう
4. 小文字の「ヵ」と「ヶ」はどうするか
- Unicodeの表では、片仮名のところに「ヵ」と「ヶ」が存在し、平仮名にも対応する言葉がいる
- じゃ、Unicodeの場合だけ変換可能だけど、平仮名小文字の「か」と「け」は化けやすそう
- そもそもこの2つって片仮名なんだっけ
- EUC-JPでもShift_JISでも片仮名の項にいるから、片仮名っぽいって言えば片仮名っぽいけど
- 基本的には変換しないけど、オプションで変換するくらいの優しさ具合でどうだろう
- SJISやEUCの場合は全角の「か」や「け」にする優しさは必要だろうか
5. ワ行に濁点を付けたものは分解するべきか
- そもそも「ワ」に濁点って使わることあるの?
- 「わ゛」のように変換するのが優しさというものだろうか
- 逆に「わ゛」を片仮名に変換する場合は結合してあげるべきだろうか
6. 「より」と「コト」の合字は「ヨリ」と「こと」に分解するべきか
- ていうか、「より」とか「コト」の合字なんて使ってるの見たことないよ
- しかしバファリンと同じくらいの優しさを持つプログラマなら対応するべきか



文字の世界は踏み込むとそれはそれで面白そうに見えるけど、そこにどっぷりと入り込んでしまうと簡単な処理を1つ書くだけでも大きく時間を浪費してしまいそうで恐ろしい。

プログラマたるもの、「まずは動けばいい」といういい加減さを持っていないと、なかなか前に進めないよなぁと思ってみたり。

あと、26文字で全てを表現出来る文化に少し憧れてしまったり。