なぜ、ローマ字を使ったプログラムは読みづらいのか?

ローマ字は読みづらい?

英語が苦手なプログラミング初心者がプログラムを書くときは、関数名や変数名にローマ字を使う事が、かなりの割合で多いように私は思います。
しかし、ローマ字で書かれている関数名や変数名はひどく読みづらいので、ローマ字を使うのはやめたほうが良いと思います。

私は、日本語が苦手です。しかし、日本語と比べても英語はもっと苦手です。
そんな私でも、C言語C++Javaなどでプログラムを書くときに関数名や変数名にローマ字を使わず、英単語の名詞や動詞を組み合わせて名前を付けます。

「日本語より英語の方が苦手なのだからローマ字を使えばいいじゃないか!」と思う方もいるかもしれません。
それでも、私は、英語よりローマ字で表現されているほうが読みづらいのでローマ字は使いません。

単語を読んで理解するまでに時間がかかる

そもそも、”読みづらい”とはどういう意味なのでしょうか?
”読みづらい”というのは”読んで内容を理解するまでに時間がかかる”という意味です。

さて、本当にローマ字を使った時の方が、英単語を使った時より時間がかかるのかを、変数名が英語表記の場合・ローマ字表記の場合に、理解に到るまでのシナリオを書いて確かめて見ます。

英語表記から意味を理解するシナリオ

変数名:Speed
1.プログラマは変数名を読む
 ⇒すぴーど
2.プログラマは意味を考える
 ⇒すぴーど=速さ

ローマ字表記から意味を理解するシナリオ

変数名:hayasa
1.プログラマは変数名を読む
 ⇒はやさ
2.プログラマは意味を考える
 ⇒はやさ、、、速さ?早さ?
3.プログラマは前後のプログラムから意味を考える
 ⇒はやさはどうやら物体の速度らしい、よって、はやさ=速さ


以上のように、ローマ字の場合は、3の”前後のプログラムから意味を考える”というステップが必要です。
しかし、変数名をもっと工夫したら問題は解決されるだろうと思うかもしれません。
例えば、hayasaではなくsokudoにしたら分かるのではないか?と。
しかし、”そくど”と発音する単語は、速度のほかに測度という単語もあります。
ですので、shokudoにしたとしても、ローマ字表記から意味を理解するシナリオの3番は必要なステップなのです。

関数名や変数名に英単語を使った場合よりもローマ字を使った場合の方が、プログラムの内容を理解するまでに時間がかかるのです。

原因は同音異義語と発音表記のコラボレーション

日本語は同音異義語が沢山あるので発音だけでは理解しづらいことが多々あります。それを解消するために日本語は漢字を使い分けています。
すべて”ひらがな”で書いた文書が理解しづらい理由は、前後の文脈を読まないと、単語の意味が分からないからです。

また、ローマ字は発音を表記しています。
つまり、ローマ字で単語を書くことは、”ひらがな”で単語を書いていると考えることが出来ます。だから、ローマ字の単語だけでは同音異義語を区別するのが難しいのです。


結局のところ、日本語には同音異義語が多い事と、ローマ字は発音表現であることが組み合わさって読みづらくなっているのです。


ところで、英語の文書はアルファベットだけで成り立っています。
しかし、英語の文書は、前後の文脈を読まないと単語の意味が分からない、ということは少ないと思います。
つまり、英単語を書くことは漢字で単語を書くことに近いと思うのです。


だから、”関数名や変数名の前後を読まないと理解できないローマ字”で書いたプログラムは読みづらく、”前後を読まなくても理解できる英単語”で書いたプログラムは読みやすいのでしょう。