プログラマーにちょっと役立つ英文句読法・スペーシングの原則

はじめまして、最近取締役よりコードを書いてないんじゃないかと噂されている、コーディング大好き山田コーダーです。今日は英文句読法(Punctuation Rules)における、スペーシング(空白)の原則の話しをしようと思います。
■なぜプログラマーに英文句読法?
なぜプログラマーに英文句読法が役立つのでしょう?その理由は、英語でマニュアルやコミットメッセージを書いたりするためではありません。まさにコードを書くためです。
複数人での開発はコーディング規約やスタイルがとても重要になります。既に規約があるプロジェクトはその規約に従うことが重要です。(規約を設ける理由は、「このスタイルがカッコいい」「ここにスペースを入れるべきだ」という議論を「しないため」にあります。)しかし言語によっては、厳密な規約を設ける文化がなかったり(PerlやRubyはそういうイメージです)、あるいは規約を設ける事がチームメンバーに反対されたり、チェック方法が確立されていないなどの理由で、規約を採用できていないプロジェクトも多いと思います。もしくは、規約を設けるほどでもないよな、って時。
とはいえ数人を超える規模であまりに自由にやり過ぎると、コードは混乱を極め、生産性やモチベーションが低下につながります。そんな時、この英文句読法のスペーシングの原則はとてもよいツールになるでしょう。というのも、プログラミング言語の多くが英語圏の影響を強く受けたものが多いので、英文句読法のルールに従うのは自然なことで、説得力も大きいはずです。(if、next、this、try等のキーワードは英語ですよね。)
■原則:句読点は左にくっつく
「左にくっつく」は、句読点の前(左)にはスペースを絶対に「入れない」、句読点の後(右)にはスペースを必ず「入れる」という意味です。長いので「左にくっつく」と覚えるとよいでしょう。
□ピリオド
まずは句読点の代表格、ピリオドから。どんな英語が苦手な方でも、次のスペーシングの誤りには気付くはずです。
× Japan is a country in Asia.It has many islands.
× Japan is a country in Asia . It has many islands .
初めの文はピリオドの両側にスペースがなく、なんとも窮屈です。一方二つ目の文は、両側にスペースを入れて、間延びしています。
正しくはこうですね。
◯ Japan is a country in Asia. It has many islands.
さて、通常のプログラミング言語では、いわゆる句読点としての意味をもったピリオドというものはありません。ピリオドに相当する文末は、「;(セミコロン)」であらわすことが多いでしょう。
◯
return true;
左にくっついてますね?
×
return true ;
こう書いても動くはずですが、普通はこんな書き方はしません。しかし、なぜこう書かないのでしょう?理由は「こんな書き方今まで見たことないから」だと思います。
英文におけるピリオドのルールも同様、「左にくっつく」というルールは学校では教わらないはずです。こちらも理由は、「教わるまでもなく自然に身に付くから」でしょう。
□疑問符、感嘆符
これもピリオドと同様、「左にくっつく」です。プログラミング言語ではあまり利用する機会がないと思いますが、ついでに覚えておきましょう。
※Rubyではメソッド名の最後に「?」や「!」が付くことがありますが、これはメソッド名の一部のため間違えるとエラーになります。やったね!
× Hey Mark!Are you ok?
× Hey Mark ! Are you ok ?
もう分かりますね?正しくはこうです。
◯ Hey Mark! Are you ok?
次のツイートを見て下さい。
R! I is now data pirate! #strataconf
— Big Data Borat (@BigDataBorat) October 23, 2012
「R言語だ!これで私もデータハッカーだ!」的な意味でしょうか。
このツイッターアカウントは、映画『ボラット』のビッグデータ版パロディです。英語はメチャクチャで、上の例でも「I am」と書くべきところを「I is」と、我々日本人なら絶対にありえない初歩的な間違いをおかしています。そんなボラットさんでさえ、スペーシングは間違えてませんね。(といってもこれはあくまでパロディなので、中の人はネイティブイングリッシュスピーカーだと思いますが…。)
また、インターネット上の投稿などで、感情を強調したい時に、疑問符、感嘆符を連続させる使い方を見ることがあります。それでも原則通り、左にくっつけます。
◯ Hey Mark!? Are you ok??
□カンマ
さて、ようやくプログラマーとしての本題に入ります。句読点の原則、それは「左にくっつく」ですね?
プログラミング言語におけるカンマは英文の用法と同様、要素を列挙する際に利用されます。英文と同じ意味合いがある以上、英文と同じ原則に則った方が、海外の人にも読みやすいコードになり、コードを公開したりする際にも良いでしょう。正しくはこうです。
◯ banana, apple, orange
時々、「読みやすい」「バランスが良い」という理由のためか、下のようにカンマの前にもスペースを入れる方がいますが、これは誤りです。
× banana , apple , orange
同様に、下のようにスペースを省くのも誤りです。
× banana,apple,orange
JavaScriptのように、クライアント側にソースコードが転送される言語では、転送サイズを抑えるために、このようにスペースを詰めて書くことがあります。今までそのような規約に従ってやってきた訳でなければ、私個人としては、ここでもやはり英文句読法の原則に従い、サイズの縮小は別途圧縮ツールに任せた方が良いと考えます。
□コロン
しつこいですが、コロンも同様「左にくっつく」です。コロンは文法上、主部と述部、つまり、タイトルとその説明、のような意味を持ちます。HTTPヘッダーはその好例です。
◯
Host: www.google.com
左にくっついてますね?
プログラミング言語でも同様に、「キー」と「値」という意味で利用される機会が多いです。その際は、「左にくっつく」の原則で書くときれいです。
×
key : "value"
×
key:"value"
◯
key: "value"
—
さて、スペーシングの原則はこれで以上になります。これだけならとても簡単なのですが、句読点記号が、本来の句読点とは別の意味で利用される場合は、この限りではありません。うーん、ここが難しいところですよね。
◯ U.S.A.
◯ 12:30:00
◯
return this.value;
◯
print foo ? bar : baz;
以上です。コーディング規約を設けていない方や、簡単な規約を設けようと思っている方に、参考にしていただければと思います。
ああ 、面倒くさいなぁ 、 句読点なんかどうでっていいじゃない ?そんなの 、だれも気にしないでしょ 。
と思われるかもしれませんが、日本語ネイティブであれば誰だって上の文章が気になるはずです。
最後に、残念ながら、自分自身の経験上、これを覚えたところで英語力が向上する訳ではありません。あしからず…。