日本語の関数や変数? 自分しか使わないならむしろオススメ

一般的なプログラミング言語はコードを英字で書きますが、VBAは関数名や変数名に日本語を使うことが出来ます。先に書いてしまいますが、日本語でのコーディングは初心者だけでなくむしろ熟練プログラマーに対してもオススメします。

以下は日本語を使ったコードです。引数文字列を1文字ずつイミディエイトウィンドウに出力する関数です。CallTest関数を実行することで1つ目の日本語の関数を呼び出します。コードを見ると、「引数1文字分」という名前の変数が出力されているので、「ループしながら、なんか1文字ずつ出してんのかな?」とぱっと見ただけでも当たりを付けることができます

このようにVBAでは日本語を使うことは出来ますが、書籍やネットでのVBAのコードで日本語での関数名や変数名を見ることはほとんどありません。

その理由の一番大きい理由は、日本語を理解できない人には伝わらないためです。英語圏の人に日本語のコードを見てもらうのは酷でしょう。また、日本語の変換入力が面倒だったり、文字コードの問題に遭遇する確率が高くなるのも日本語が避けられる理由として挙げられます。

当サイトでも同じ理由で英語を主体でコードを公開しています。

ただ、自分しか使わないようなコードであれば日本語で書くことは避ける必要はありません。むしろ書くことをオススメします

実際に日本語で書いてみると、利点が見えてきます。


日本語コードと英語コードの比較

上の1つ目の日本語の関数を英訳で書き直すと以下のようになります。

さらに、短縮変数名にすると以下のようになります。当サイトのコードはこんな感じですね。

ぱっと見た感じで、コードが少なくなっているのは分かりますが、処理内容の分かりやすさが上がるかというと、あまりそういうことはないと思われます。むしろ日本語のコメントが欲しくなってきます。

少なくとも、日本語のコードのように変数名から1文字出力しているなー、なんてことは一目では分かりません。ある程度コードを追わないとそこまでは理解できないでしょう。


日本語コードの利点

プログラミングのセオリーとして以下のようなものがあります。書籍「リーダブルコード」と書籍「達人プログラマー」から抜粋です。

  • 読みやすいこと。
  • 分かりやすいこと。
  • 変数名や関数名から用途が分かること。
  • 誤解される名前を使わないこと。
  • コメントは適切に書くこと。

日本語を扱うことの利点は、「母国語だから読み書きに慣れている」という点です。アラビア語やスワヒリ語のコードを渡されても困りますよね。でもそれを母国語とする人にとっては読みやすいはずです。日本人にとっての日本語も同じです。

プログラミング言語はどうしても英語を母国語として設計されているため、それに合わせる必要がありますが、自分しか使わないコードであれば自分が理解しやすいようにするのは何も問題ありません。

上のセオリーの最後の「コメントは適切に書く」というのはいろんな書籍で指摘されていることですが、実はこれに対してぴんとこない人がいます。「コードを見て分かることをいちいちコメントで書くのはやめろ」、という話ですが、これは書籍が英語圏の人が書いたものだと、日本人には伝わりにくいのです。それはなぜでしょうか。

以下のような変数宣言があったとします。1つ目と2つ目は日本語のコメントがあると助けになりますが、3つ目の日本語変数「ループカウンタ」に対して「ループカウンタ」というコメントは不要でしょう。書籍で言っているのはこのことです。日本語で書くとすぐに理解できます。

英語圏の場合は英語のコードが当たり前のため、英語のコメントも不要だ、という趣旨で書いてあるのですが、日本人は「コードは英語」で「コメントは日本語」を書くため書籍の内容が理解しにくいのです。

ところが、コードが日本語になると無駄なコメントが省略できるようになります。これは言い換えると、和訳作業が不要もしくは軽減されるということになります。

このように、日本語を使うことでコードの理解がしやすくなる利点があります。仕事で作成するコードの場合は「日本語はダメ」との制約があるかもしれませんが、自分しか使わないマクロであれば日本語でのコードを自由に作成してもよいと思います。