英語でコメント書けますか? 情報系学生のための最強の英語勉強法

はじめに

この記事は、情報系学生である私が、学校の授業以外に英語の勉強を一切することなく英語を身につけた方法を「最強の英語勉強法」だと勝手に言い張るというものです。その効果については個人差があるということをご了承ください。1人でも多くの情報系学生が英語力を向上させてさらなる活躍に繋げてもらえると嬉しいです。

英語できますか?

早速ですが、皆さん英語できますか?私はできます。TOEICの点数が特別高いということはないですが、日本語を一切使わないという縛りプレイをやったとしても、この業界でやっていける自信があります。英語の能力は大体 Reading と Writing と Listening とに分かれると思いますが、その中では特に Writing が得意です。最近Yayaka Protocolを英語で書いていますが、日本語で書くよりむしろ速く書けたのではないかと思っているくらいです。

英語ができると何がうれしいのか

情報量

英語は、プログラミングの分野でほとんど共通語みたいなものになっているように思えます。昔、学術はラテン語が当たり前みたいなことがあったようですが、今のプログラミング世界の状況はそれと似てないでしょうか?ライブラリやツールのドキュメントや、プロトコルなどほとんどのものが英語で書かれていますし、今なにかインターネットで情報を得ようと思ったら日本語より英語の方が情報量が多いです。英語ができると情報収集の幅が大きく広がるはずです。

英語はプログラムに向いている

わざと誤解を招くような表現にしましたが、本当は何を言いたいかというと、現在のプログラム言語やDDDなどの開発手法は、英語を使うことを前提としていることが多いということです。最近では関数名にUTF-8文字列を使えることが当たり前のようになってきましたが、実際に使ってみると周りが全て英語なので逆ルー語みたいな感じで違和感がすごいです。

define 足す(a, b) do
  return a + b
end

DDDが結果的に英語を前提としていることに関しては以下の記事が面白いです。

[DDD] もしドメインモデルを日本語のコードで書いたら | Exception Blend

ちなみに、「日本語は英語に比べて論理的な記述に向いてないからプログラミングには不向き」みたいな意見をたまにみますが、日本語を含めていくつかの言語を勉強してくださいという感じです。

情報発信の幅が広がる

例えば、あなたがとても便利なツールを作ったとしても、そのドキュメントが日本語のみだった場合、それを使ってくれるのは日本人だけでしょう。逆に言うと、ドキュメントが中国語のみのプロダクトをあなたは喜んで使いますか?ということです。あるものがグローバルに良いと評価されるポテンシャルを持っていたとしても、その情報が英語で受け取れないということだけで、その可能性を失わせてしまうのは本当にもったいないことだと思います。

楽に進学できる

楽に進学しました。

何が「最強」なのか

英語の参考書などを買わなくていい

情報系学生だけでなくほとんどの学生は金欠だと思います。私の場合、英語の参考書を買うくらいなら食費に充てたいです。

“勉強”をする必要がない

みんな勉強好きですか?私は嫌いです。勉強という非常につらく、何よりも貴重な私たちの時間を奪うような行為をしなくても、情報系学生の日常を送るだけで英語の学習ができたら、それは「最強」じゃないですか?

プログラミング筋も成長する

やればわかりますが、プログラミング能力も上がります。例えば、何か処理を実装しようとしているとき、その処理は脳内に何らかのイメージとして存在していると思います。それは最初は曖昧で記号化されていないことがほとんどです。後述する良い命名の徹底に慣れていると、そのイメージをもっと具体的にしたり明瞭化したりすることがクセになって、常に、実装したい処理について明確なビジョンを持った状態でコーディングできるようになります。

最強の英語勉強法

1. 無理やり英語を使え

とにかく英語を使いたい場面では無理矢理にでも使うようにしましょう。最初は英語が全くわからない人もいると思います。それでもわかる範囲のギリギリで英語を使ってください。人間の脳は反復によって成長するようにできていることは広く知られています。英語は使って覚えましょう。そして、めちゃくちゃな構文や間違った単語でも恥ずかしがる必要はありません。私が3年前に書いたドキュメントとかだいぶ酷いですが、今ではむしろ「よく書いた!」と褒めたいくらいです。

必死に書いている感がすごいやつ

2. 翻訳するな

あと、英語を読むときに頭の中でいったん日本語に戻そうとすることもやめてください。英語と日本語では構文(主に語順)が非常に遠いので、それを毎回直すのは思考リソースの無駄遣いです。そして、英語を無理やりそのまま理解しようとしていれば、いつのまにか英語の語順になれて、スラスラと頭に入ってくるようになります。例えば、LISPは前置記法で書かれていて最初はなれませんが、慣れてくるとスラスラ読めますよね。あれを英語でやるんです。

3. 音読しろ

音読しましょう。タイミングとしては何か英文を書いた後に確認で読んでみるとか、英語記事の重要そうなところとか少しわかりにくいところを読んでみるとか、そのくらいのことで大丈夫です。音読すると、発音の練習にもなりますし、英語の音とかリズムの感覚を身につけると英文をスラスラ読み書きできるようになります。

4. ツールを活用しろ

Google 翻訳の使い方

Google 翻訳便利ですよね。最近は精度もかなり高くなったらしいです。英語学習にも使えますが、使い方を間違えると学習効率が下がることもあります。私のやり方ではGoogle 翻訳は極力使わずに、できるだけ辞書を使います。ただし、以下の2つの場合だけは使っても良いことにします。

  1. 単語の意味はわかるが、文の構造が全くわからないので英文が読めない場合
  2. 単語や表現はわかるが、文法がわからないので英文が書けない場合

ただし、2の場合、Google 翻訳が出力した英文をそのまま使うのはダメです。翻訳された英文をみてだいたい文法の雰囲気が分かったと思うので、自分で1から書けるようになったはずです。

辞書も英語にする

できれば早い段階で英語で書かれた辞書を使うようにして欲しいです。まだ無理かなと思っても使ってください。辞書も英語にすると学習の効率が体感で5倍くらいはね上がります。

オンライン辞書はDictionary.comOxford Living Dictionaryなどが良さそうです。

Synonymを調べる

Synonymを調べましょう。Synonymは同意語とか類語とか、有る単語に近い単語のことです。Synonymを調べていると語彙力が爆発します。

Thesaurus.comがおすすめです。

校正ツールを使う。

Grammarlyなどを使います。自分の書いた英文の間違っているところを指摘してくれるので便利です。

ブラウザ拡張機能

ブラウザで英語の文章を読むとき、分からない単語をいちいち辞書で調べるのは面倒です。そこでブラウザ拡張を使って分からない単語をダブルクリックするだけで定義を見れるようにすると便利です。

ChromeだとGrammarly for Chromeがおすすめです。

5. コメントを全部英語で書け

プログラムにコメントをつけるときに英語で書いてください。もちろん、英語を書くのが面倒だからコメントを書かないというのはダメです。有名なプロジェクトのコメントをみて表現や文法を参考にするのがおすすめです。

6. コミットを全部英語で書け

gitというバージョン管理ツールがあって、最近みんな使っているなという感覚があります。そこでgitを活用してcommitする際にコミットメッセージを書く必要があります。そこで

7. 適当に命名するな

適当な命名は今後一切やめてください。例えば「XXXを取る」という機能の関数を作るときに何も考えずにgetXXXとするのはNGです。それがfetchtake, remove, drop, pop, dequeueなどではなく本当にgetなのか考えるようにしてください。その時には前述のSynonymを調べてそこから一番具体的で意味の近い単語を探すようにすると便利です。

8. 日本語に翻訳されたドキュメントを読むな

ドキュメントを読むときには英語の原文を呼んでください。分からない最初の頃は辛いですが、ドキュメントの表現は小説とかに比べてかなり分かりやすいので比較的早くスラスラ読めるようになるはずです。

おわりに

あ、書き忘れそうでしたが、情報系学生の日常とは自分でいろいろ調べて何か自分でプログラムを書くことであるという仮定で書いてます。どうですか?

Written on June 28, 2018