こんにちは、高木です。
ここのところずっと書き続けている母国語によるプログラミングに関する話題の続きです。いつもは「母国語で」ということで日本語に特化した話は最小限にとどめてきました。今回は、日本語にしぼった「表記揺れ」に関する話題です。
表記揺れの問題は、仮に識別子に日本語を使わない場合でも注意する必要があります。具体的には、日本語でコメントを書くならそこで使う表記、仕様書や設計書などのドキュメントで使う表記などです。
表記揺れをなくすべき理由
表記揺れは可能な限りなくすべきです。同じ概念を表す用語は一字一句同じになるようにそろえておいた方が、解釈の間違いを防ぐことができます。また、表記が統一されていなければ、検索することも容易ではなくなります。単純な検索で済むはずのものを、わざわざ複雑な正規表現を使って検索しなければならないのは間違っています。
堅苦しいことを言うようですが、ルールをしっかり作り、それを身体にたたき込んでおけば、識別子を命名する際につまらないことに時間を費やすことを避けられます。
表記揺れの種類と対策
これから、表記揺れにはどんなものがあり、どのように対策すればよいかを見ていきます。事情があって独自の流儀を導入するのであれば、理由を明確にしてルールを明文化すればいいと思います。
用語そのものの揺れ
これは絶対避けるべきです。同じ概念に対して複数の用語を与えてしまうことも、ひとつの用語にまったく異なる複数の概念を当てはめてしまうこともです。
具体例を挙げましょう。複数のデータがあってそれに識別用の数値を振っていくとします。このとき、その識別用の数値のことを「~識別子」、「~ID」、「~番号」、「~No」のようにバラバラの表現をしてしまうことがあります。
逆に、「~番号」という用語があったとき、それに個体識別用のユニークな識別子の意味と、単なる並び順の両方の意味を持たせることもあります。
このようなことをやってしまうと、一体何の話をしているのかが分からなくなり、その都度具体的な意味を確認しなければなりません。
外来語表記の揺れ
外来語をカタカナ表記する場合には大きな表記揺れがあります。揺れが生じるのは主に2箇所あり、ひとつは日本語にない発音を音写する際に生じる揺れ、もうひとつは長音符の有無に関する揺れです。
こういうのは、本来なら内閣告示に従うのが妥当です。ところが、長年、JIS規格書などが独自のルールで表記してきたこともあり、混乱が見られます。JIS規格書では、主に省スペースや省メモリの都合から極力字数を減らそうとしていたようで、すでに時代遅れになってなっています。実際、現在のJIS規格票では、前述の内閣告示に準拠するようになっています。
送り仮名の揺れ
送り仮名の揺れも、日本語で文章を書いていると当たり前のように遭遇します。たとえば、「表す」と「表わす」などがそうです。義務教育で習った通りに誰もが表記すれば問題ないのですが、どういうわけかコミュニティによってバラバラな表記をしてしまいます。
戦前は、現在の標準的な流儀より少なめに送るのが一般的だったようです。先ほどの外来語と同様、省スペースが理由だったのでしょう。送り仮名についても内閣告示がありますので、特別な理由がない限りはそれに準拠する方がいいでしょう。
漢字をひらく、とじるの揺れ
漢字を「ひらく」というのは、ひらがなで表記することです。逆に、「とじる」というのは、漢字で表記することです。一般的な日本語の出版物では、意味が正しく読み取れるなら、なるべく漢字はひらくようにしています。とはいえ、同じ単語なのに文脈によってひらいたり、とじたりするのはよくありません。一定のルールを設けて表記すべきです。
一般論としては、形式名詞はひらくなど、いくつかのルールがあります。これは内閣告示はありませんので、どこかの校正ルールが入手できるなら、それに準拠するのが簡単でしょう。
識別子以外への適用
ここまでで書いてきたことは、何も識別子の命名に限ったことではありません。コメントを書くときも同じルールを適用すべきですし、仕様書や設計書などのドキュメントを書くときにも適用すべきです。
仕様書に書かれている用語でソースコードを検索すれば、該当箇所がすぐに見つかるのが理想です。逆に、ソースコード上の識別子で仕様書を検索すれば、こちらも該当箇所がすぐに見つかるのが理想です。これによって、用語が乖離しているために該当箇所を探し回る時間が不要になります。