秘訣:コードは英語で書き、日本語で読む
本稿ではプログラミングを行いませんので、気を楽にして読んでいただければと思います。コーヒーやお茶を淹れて寛いでください。
今回は上達の秘訣その2です。コードを書くときと読むときの注意点についてお話をしたいと思います。読者の中には英語が得意な方もいらっしゃると思いますが、本稿では英語が苦手な方へ提供する秘訣となっていますのでその点はご了承ください。
コードは英語で書く
まず最初に触れたいのは、コードは英語で書くということです。VBA を含めて最近の言語ではマルチバイトに対応しているため、変数名やメソッド名などに日本語を使用することも出来ます。ですが、そういった行為は上達を阻害する原因となりますので当サイトではお勧めしません。その理由についてお話していきたいと思います。
変数名やメソッド名に日本語をお勧めしない理由
既に何らかのプログラミング言語を学んだ経験がある方は、日本語を用いたコードの良し悪しに関する議論を見たことがあるかもしれません。こうした議論ではどちらの立場に立っていても、自身の立場に固執して互いに譲らないため、ほとんどの場合生産性のない議論です。ですからここではそうした議論をなぞることはしません。
私からのご提案は、効率的に上達したいのであればコードを英語で書くことを推奨するということです。日本語を使いたければ使っても構いませんが、上達の阻害要因となりますのでお勧めしないということです。
歴史的経緯
ソフトウェアの製造技術は米国を中心として発達してきた経緯からプログラミング言語の多くは米国で開発されました。米国以外で開発された言語もいくつかありますが、それらを含めても代表的な言語はすべてその制御文やその他の文法に英語を用いています。そのため言語のユーザーが名付ける変数やメソッド名にも英語が用いられているのが一般的です。これは主に読みやすさの観点から一つのコードには一つの言語を用いた方が優れていることに起因しています。フランス人であっても、中国人であっても、ロシア人であっても、英語を用いてコードを書きます。制御文や文法に英語、変数名やメソッド名には他言語と、複数の言語を用いるのは一貫性がなく非常に読みにくいものということですね。
英語を使うことのメリット
英語で書くか日本語で書くかという議論は当然ながら日本人の間でしか行われない議論です。それだけでなく、フランス人の間でフランス語で書くか英語で書くかという議論はありませんし、中国人の間で中国語で書くか英語で書くかという議論もありません。つまり母国語での記述の是非というのは日本特有の議論ということですね。
おそらく英語が得意ではない人が日本人には多いことが原因だと思われますが、他国ではそのような議論が巻き起こらないため、誰でも英語を用いてコードを書いています。ここが重要なポイントです。前回の Coffee Break で述べたように、上達する秘訣の一つに「コードを読む」があります。既に述べた内容なので詳細は割愛しますが、優れた技術者が設計したコードは何よりも多くの気づきを与えてくれます。そしてそのような優れたコードは例外なく英語のみを用いて記述されているのです。そうした優れた学習素材は無料で得ることが出来、熟練者が経験から得た様々なノウハウを、労することなくあなた自身が得ることが出来る貴重な機会となります。普段から英語でコードを記述する訓練をしておかないとそうした優れたリソースを活用する機会を得られず、自身の成長限界を突破することは難しくなってしまうのです。
英語を話せる必要はありません
英語でコードを記述すると言っても英語を話せる必要はもちろんありません。同じような単語を繰り返し使っている場合がほとんどで、それほど多くの語彙力が必要とされるわけでもありません。特に本コースの読者の方は、開発が本業ではないと思うので問題領域(システム化の対象となる領域)に関する知識は豊富であると思います(ご自身の業務を効率化するために VBA を学習している場合など)。そうした場合は、用いる英単語も非常に限られたものになります。日英辞書を使うこともあると思いますが、大した作業ではありませんし繰り返しているうちに覚えることが出来ます。読者の中には学生さんもいるかもしれません。学生さんの場合は良い機会なので英語の学習も行ってください。
このように、英語での記述は実際には、英語が苦手であっても特に障害になるようなものはありませんので、コードに日本語を用いることでせっかくの成長の種を自ら放棄してしまうのは勿体ないと言わざるを得ません。
日本語で読む
コードを読むときは日本語として読んでも構いません。もちろん、英語が得意な方はそのまま英語で読んで構いません。英語のコードを日本語で読む方法は、簡単です。大抵の方は無意識のうちにやっていると思いますが、参考のために述べておきたいと思います。
まず、予約語について。予約語とは、VBA の文法上あらかじめ定義されている語句のことです。今まで学習した内容の中から例を出すと、Dim や As があげられます。Dim は「サイズを決める」という意味、As は「~として」という意味なので、Dim variable As String は「 variable のサイズを String 型にする」という意味になります。あるいは、Dim は宣言時に使う語句なので「 variable を String 型として宣言する」と読んでも構いません。いずれの読み方でも構いませんが、慣れないうちはこのように定型文として日本語で読む習慣をつけてください。このようにしていると VBA のコードを正しく理解することにも繋がりますし、すぐに慣れてきます。今後新たに学習する予約語については、登場するときにその日本語での読み方も紹介していきます。
次に、オブジェクト式と呼ばれるものについて。オブジェクト式という名前は本コースではまだ用いていませんが、既に学習しています。テキストを操作する際に用いた Strings.Left$() などがそうです。オブジェクト式は「.」演算子で単語を繋げて記述するためすぐに判別することが出来ます。オブジェクトとは「物」のことで、オブジェクト式は「物」.「物」.「物」.「振る舞い」あるいは、「物」.「物」.「物」.「属性」のいずれかの形で現れます。「物」の数は時と場合によって 1つになったり 5つになったりと様々に変わりますが、最後に「振る舞い」か「属性」が必ず来ます(厳密にいうとこの 2つを識別子と言います)。このようなコードは、「.」を「の」と読み替えることが出来、「物」については固有名詞と考えてそのまま読みます。
例えば、Strings.Left$(variable, 1) であれば、「 Strings クラスの Left$ メソッドを呼び出す」と読みます(最後が「振る舞い」の場合は通常引数を読みません)。
もう少し長いコードを例として、Me.Cells(1, 1).Value = 1 であれば、「自分自身の全てのセルのうち 1行目1列目の値に 1 を代入する」と読みます(途中に引数が現れる場合はそれも読みます)。
現時点では、クラスやインスタンス、静的メソッドなどをまだ学習していませんのでこの 2つの例の読み方の違いを理解出来なくても問題ありません。新しい内容を学習するたびに本コースではその読み方についても触れていく予定ですので安心してください。イントロダクションコースを修了する時点では一通りの読み方について学習済みとなるようにする予定です。
むすび
というわけで、変数名やメソッド名などには日本語を使わず英語を使うようにしてください。英語が苦手な方は最初は慣れないと思いますが、慣れてくると苦も無く読めるようになり、また、書けるようになります。英語と言っても英単語を使うだけなのでやってみると簡単です。そしてこのような習慣は必ず役に立ちます。まずはイントロダクションコースの間に少しずつ慣れていってください。基礎コースが修了するころには、VBA のコードはどんなものでも苦も無く読めるようになっているはずです。
また、まだ執筆していませんが、その後に続くコースの学習を続けていくと他のオブジェクト指向プログラミング言語のコードも読めるようになります。VBA の学習で他言語のコードを読めるようになることを不思議に思われるかもしれませんが、当サイトでは VBA の学習だけでなくオブジェクト指向プログラミングを修得出来るように設計しますので、それが可能となるのです。
それでは本稿はこれで終わりです、お疲れさまでした。また次回お会いしましょう。
