プログラミングをしていて変数名を決める時に、当たり前のように英語で命名していませんか?絶対に英語じゃなきゃダメなんですか?思い込まされていませんか?私は日本語の変数名を使うことに決めました。
変数名に使える文字 – PHPの場合
PHPの変数名に使える文字は次の通りです。
- アルファベットの小文字
a-z
- アルファベットの大文字
A-Z
- アンダーバー
_
- 数字
0-9
(1文字目には使えない) - ASCIIコード
0x80-0xff
の文字
ということで、ASCIIコード 0x80-0xff
に日本語が含まれているので、PHPでは変数名に日本語が使えます。
なぜ日本語を使いたいと思ったか
英語で変数名を付けようとした時に、どんな単語を使えばいいのかいつも悩むんですよね。
例えば、金額を入れるための変数名を決める時に、priceなのかamountなのかchargeなのかfeeなのかcostなのかいっつも悩みます。で、調べて、それぞれの言葉のニュアンスの違いを理解して、変数名を決定するわけです。変数名を決めるだけで1時間くらいかかりますよね。しかも、1ヶ月後にはまた同じことを調べているというね(理解してないじゃん)。
日本語ならば、金額、料金、費用、価格、単価、総額などなど、いろんな言い回しがあるとしても、調べることなく違いは解るわけです。解りますよね?(解らない人そっ閉じ)
変数名に日本語を使えば、コーディング時の時間の節約になるのではないかと思ったわけです。
日本語変数のメリット、デメリット
日本語を使うメリット
英訳をする時間の節約
とにかく私にとってはこれが大きいです。1つの変数名を決めるのに何時間もかけるのはバカバカしい。
なぜ時間がかかるのかというと、変な英語を使ってしまうのが恥ずかしいからなんです。自分が思いついた英単語があっても、いやもっと適切な言葉があるかも知れないと思ってしまったらもう最後。調べても調べても納得いかない英訳蟻地獄にハマってしまいます。
コードが読みやすくなる
コードは読みやすくなければなりません。そして読みやすいコードにはわかりやすい変数名が使われているものなのです。ならば、自分がいちばん理解できる言葉を使えばいいぢゃないかと思うのです。
変数にはわかりやすい名前を付けろと口を酸っぱくして言うくせに、英語を喋れないやつが英語の変数名を付けるのはおかしいですよね。
コードの難読化になる
ほとんどの外国人は日本語が読めないので、コードを日本語で書けばもうあいつらは読めないわけです。ハッカーやクラッカーはみんな外国人ですからね(とんでもない偏見)。
入力ミスが減る
英単語のスペルミスをしても私達は気付きにくいんです。コーディング中に原因不明のエラーが発生して行き詰まることありますよね。諦めて散歩に出かけてリフレッシュして帰ってからよく見てみたら変数名のスペルミスだったなんてことはよくある話です。これで3時間のロスです(散歩が長すぎ)。
日本語ならば、入力の後に変換という工程があるので、ミスがあればそこで気付くことができます。
日本語を使うデメリット
外国人との共同作業は無理
開発チームに日本語が解らない人がいたら困りますね。オフショアとかオープンソースで開発する場合などなど。そういう場合は当然、チームのメンバー全員が理解できる共通言語を使うことになるのでしょう。
入力モードの切り替えが面倒
英語だけならばずっと英語モードで入力できます。でも、変数に日本語を使うとなると英語と日本語を切り替えながらの入力となります。面倒ではありますよね。
ただし、時間がかかるのかといえば、そんなことはないと思います。英単語を調べる時間のロスに比べたら微々たるものです。
日本語変数に批判的な人の意見
チーム開発であとから外国人が参加してきて大変だった
なぜ後から加わった一人にみんなが合わせなければならないのでしょうか。コードは英語で書くものだという先入観があって日本語で書くことに後ろめたさを感じているから、外国人にちょっと文句を言われたくらいで慌ててしまうのではないでしょうか。
最初から多国籍チームによる開発を想定して英語を使おうと決めるならばそれでいいと思います。だったらコメントもドキュメントもすべて英語で書くことになりますよね。楽天みたいに社内公用語を英語にするのもアリだと思います。それは否定しません。
ただ、日常会話も会議も日本語でするのに、コードを書くときだけ英語っていうのが意味不明なんです。
思わぬ不具合が発生しそう
日本語の文字エンコーディングはEUC-JP、Shift_JIS、JISなどなどいろいろあって複雑なので不具合が発生するんじゃないかということらしいです。20年前で時が止まってる人なのかなと思います。今はUTF-8が標準なのでそんなことは起こらないと思います。実際、「不具合が発生しそう」と言っている人が多くて「発生した」と言う人はあまりいないです。
もし、日本語を使用して不具合が発生したなら、ゴルァ!!動かねえぞ!と文句を言うのも大事なことです(この半角カタカナにも怒るんだろうな、時が止まってる人は)。文句を言えば改善されます。
見た目がカッコ悪い
わかります。こういうことですよね。
function whisper_love($num){
for($i = 1; $i <= $num; $i++){
echo 'I love you. ';
}
}
whisper_love(10);
function 愛を囁く($回数){
for($数 = 1; $数 <= $回数; $数++){
echo '月が綺麗ですね。';
}
}
愛を囁く(10);
それって、英字新聞はカッコ良いけど、日本語の新聞はカッコ悪いっていうのと同じですよね。New York Timesに乗せたフライドポテトはオシャレだけど、読売新聞に包んだ焼き芋はダサいっていうのと同じですよね。だからなんなん。
IDEの補完機能が使いづらい
これも、ゴルァ!!って文句を言えばいいんです。日本語の入力中に候補を出すなんてことは簡単にできるはずですから、コードエディタにそういう機能がないならば、それは文句を言う人がいないからです。
日本語でコードを書いて不具合があったら文句を言うというのは、日本人にしかできないことなので、どんどんやりましょう。遠慮しなくていいと思います。なんでそんなに日本語を使うことを遠慮するんだろう。戦争に負けたから?
コードの容量が大きくなる
UTF-8では、アルファベット1文字は1バイト、漢字1文字は3バイトです。だから日本語を多用するとコードの容量が大きくなるんだそうです。でも、変数 $amount
と $金額
は同じ7バイトですからね。
漢字は表意文字です。1文字だけでも意味を伝えることができます。そして1文字でアルファベット2文字分の幅しか取りません。アルファベット2文字じゃほぼ何も伝えられませんからね。
バイト数で考えても、文字の大きさで考えても、実は漢字って効率がいいんです。せっかく血を吐きながら覚えた漢字なんだからもっと使っていこうぜー。
変数名に日本語が使えるプログラミング言語
- PHP
- Python
- Ruby
- JavaScript
- Java
- Swift
ご覧の通り、この世に存在するほぼすべてのプログラミング言語で日本語変数が使えるのです(嘘)。
あとがき
というわけで、私は今後、変数名には日本語を使っていこうと決めました。
日本語変数を快く思わない人がいることはわかってます。でも、そういう人も連想配列のキーには日本語使うでしょ。
極端なことを言えば、将来的に日本語を廃止して日本の公用語を英語にするべきだという思想を持っているのでない限り、日本人は日本語でプログラミングをしたほうがいいと思っています。
でわでわ
コメント