文字の選び方 | 悪態のプログラマ

悪態のプログラマ

とある職業プログラマの悪態を綴る。
入門書が書かないプログラミングのための知識、会社の研修が教えないシステム開発業界の裏話は、新人プログラマや、これからプログラマを目指す人たちへのメッセージでもある。

システムの設計書を見ていると、同じものが違った表現で書かれていることがある。例えば、「ユーザーID」、「ユーザーID」、「ユーザID」など。更には、「利用者ID」とか、「利用者番号」、「顧客番号」などの全く違う言葉も、よく確認してみると、全て同じものを意味していたりする。

そのシステムに精通したコミュニティの中では、それでも十分通用するのかもしれないが、客観性が要求されるはず設計書としては、よろしくない。

プログラムの実装レベルでは、このようなあいまいな表記はバグに直結する。例えば、データベースのテーブルに「USERID」という項目があったとしよう。その項目のデータを参照するためには、「USERID」以外の名前、例えば「USRID」や「USER_ID」を指定しても、動かない。


最近のデータベースでは、項目名などに日本語(いわゆる全角文字)を使うことも出来るので、積極的に日本語を使うべきだという意見もあるが、上記のような問題を考えると、手放しでは賛成できない(他にもいわゆる「文字化け」の問題もあるし)。

受託開発では、自社でダミーのテーブルを作成し、それを使って開発することもある。そのテーブル定義が、本物と違っていたとしても、見た目が似ている場合は、なかなか気付かないだろう。そうすると、最終的に他社で開発していた本物のデータベースと結合したとたんに動かなくなる、ということもありうる。


もちろん、英数字にも、ゼロ「0」とオー「O」、イチ「1」とエル「l」のように、紛らわしい文字がある。しかし、そこに日本語(全角文字)が加わると、文字の種類は桁違いに増加し、その分、紛らわしい文字も増える。使う人によって表現が違ったり、似た文字と間違えたりする確率も高くなるのである。

例えば、「エロ」という2文字。1文字目は、カタカナの「エ」か、「工事」の「工」か? 2文字目は、カタカナの「ロ」なのか、喋る「口」なのか、記号の四角「□」なのか? 見た目にはわかりにくい ※1

もっと実害がありそうな例では、上に書いた「ID」と「ID」のような全角英数字と半角英数字のどちらを使うか、という問題がある。また、全角文字同士でも、例えば、アルファベット大文字のアイ「I」とローマ数字大文字の「Ⅰ」は、区別が付かないだろう。

「ー」のような「長音」の記号、これを全角のマイナス記号「-」で代用する人も以外に多い。「ユーザー」を「ユ-ザ-」と書くわけである。これが普通だと思っている人であれば、テーブル項目を定義するときにも、当然マイナス記号を使うだろう。


こうした文字の混乱の問題は、それぞれの開発プ口ジェクトで、ルールを明確にすることで、ある程度は回避できる。例えば、「ユーザー」ではなく「ユーザ」と3文字で書きましょうとか、「ID」には半角を使いましょう、といったことを、あらかじめ決めてしまうのである。

用語辞書を作るのもよい。日本語名だけでなく、英語表記も併記しておくと、ドキュメント作成にも、プログラミング(変数名の命名など)にも使える。Wiki などを利用して簡単に作成・参照できるようにするといいだろう。

もちろん、こうして決めたルールは、守らないと意味がない。

プ□グラマとしては、たとえ、ルールがなかったとしても、文字の選び方には日頃から気をつけていたいものである ※2





※1
「ロコミ」という言葉を Web 検索 してみよう。「くちこみ」ではなく、「ろこみ」である。予想以上にヒットしたのではないだろうか? これらは、おそらく、OCR ソフトの認識ミスだろう。

※2
ここまでの文章の中に、カタカナで「ロ」とすべき文字が、「くち」や「四角」になっているものがある。人間はそれでも読めてしまう。



文字コード超研究
文字コード超研究
posted with amazlet on 06.04.09
深沢 千尋
ラトルズ (2003/07)
売り上げランキング: 25,713
おすすめ度の平均: 4.5
5 面白いです。
4 Perlの勉強になる


Unicode標準入門
Unicode標準入門
posted with amazlet on 06.04.09
トニー グラハム Tony Graham 乾 和志 海老塚 徹 関口 正裕
翔泳社 (2001/05)
売り上げランキング: 80,348
おすすめ度の平均: 5
5 Localization、Internationalizationの虎の巻です