̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2014/12/22 通巻677号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ キャピタライゼーションを無視したルールを作るな - リーダブル・コード(30) 2008年に Windows の「コンピュータ」は、「コンピューター」に変わりました。 最後に長音記号が付きました。 長音を付けないのは、JIS の規格書 Z8301 にあり工学系で普及していたものであり、世の中の日本語としてはマイナーな ルールです。 コンピューターの RAM などの「メモリ」と記憶を英訳した 「メモリー」や、プリンターなどの「ドライバ」とネジ回しの「ドライバー」 といったように、長音記号が付くだけで、別の物と考えてしまったり読み方を 変えてしまう弊害があります。 日本の専門家は「ドライバーをインストールしないといけないの?」という 言葉を見ると、「ねじ回しのドライバーかよ!」と突っ込みが入りますが、 英語圏ではそうではありません。 現在では、JIS でさえ長音記号を書かないルールは 必須ではありません。 公開されている一部の JIS 規格を読んでみてください。 明治時代の法律を読んでいる気分になります。 専門用語があることで専門的なことが理解しやすくなりますが、そのメリットを 過信しすぎて、一般的に使われている言葉でさえ、女子高生の流行語のように 専門用語を使って悦に入る幼稚な人が専門家にあまりに多いという傾向があります。 よくあるのは、プログラムのコードがすべてちょっとした略語にしてしまうと いうことです。 本人は短い単語になって読みやすいと思っていますが、 他の人にとっては、何の略なのかが分からないので、読むことは難しくなります。 プログラムのコードは英語なので、長音記号は関係ないのですが、英語固有の ルールがあります。 その1つは、キャピタライゼーション ルール (大文字・ 小文字のルール)です。 キャピタライゼーション ルールは多くのルールが ありますが、主なルールの1つは以下のとおりです。   英語のタイトルや見出しを書くとき、単語の頭は大文字にする。   ただし、前置詞など一部の単語の頭は小文字のままにする。 普通の英文は、文頭以外はすべて小文字にしますが、タイトルや見出しでは、 そうではなくそれぞれの単語を大文字から始めるというルールです。 通常の文より見出しを区別し、目立たせるという目的があるようです。 このキャピタライゼーション ルールは、すべての単語を大文字から始める キャメル・ケースに近いです。 関数名に大文字から始めるキャメル ケース を使えば、通常の英文と同様の読みやすさになるというわけです。 関数内の ローカル変数については、小文字のスネーク ケースを使えば、これも通常の 英文と同様に読めて、読みやすくなるというわけです。 void SampleFunction() {   int min_count; } しかし、この混合ルールは、関数名からローカル変数名にコピーすることが できないという弊害があるため、どちらかに統一するというルールがよく できます。 しかし、それはコーディングにおいてレアケースです。 経験した人は多いですが、その他のコーディングの時間に比べると 大したことではありません。 そのレアケースのために読みやすさが犠牲に になる「副作用」を多くの専門家がルールを作るときに忘れます。 そして、最も普及している悪しきルールは、スネーク ケースでは、頭字語 (イニシャリズムやアクロニム)のキャピタライゼーション ルールを無視 して、大文字を禁止していることです。 ファイル名をすべて小文字にする というルールもよくできます。 しかし、キャピタライゼーション ルールは かなり厳密に決まっています。 迷うものではありません。 情報系の人たち が知らないだけなのです。 一般的な英文が添削されるときにキャピタライゼーション ルールが間違って いると指摘されることは、そんなに多くはありません。 逆に、コーディング ルールは、キャピタライゼーション ルールより優先するべきなのか、たとえば、 iPad は本当に Ipad にすべきか ipad にすべきか、を迷うことになります。 それ以前に独自の略語が多く、どの略語にするのかの方が迷います。 結局、 現状では、参考する資料から、独自の略語をコピー&ペーストすることに なるので、小文字に統一しても意味がないのです。 小文字に統一すれば、大文字かどうか迷うことはないという効果を感じて いるかもしれませんが、よく考えてください。 大文字の頭字語を思い浮か べてから、あ、そうそう小文字に統一するんだった、という2段階の思考が 入っているのです。 どのケースで小文字に統一しなければならないかを 考えなければならないのです。 やがて、それが無駄だと判断してしまい、 あらゆるものを小文字だけにしてしまう異常な宗教が生まれるのです。 そして、小文字に統一するルールによって、読みにくくなる原因を新たに 作ってしまったことになります。 パスカルケースでも頭字語は先頭の 文字以外は小文字にするというルールがよくあり、これも読みにくくなる 原因を新たに作ってしまったことになります。 Javaで採用されている、小文字から始めるキャメル ケースは、関数内の ローカル変数が1つの単語になる可能性が高いので読みやすくなることもあるの ですが、現在のプログラム コードは1つの単語では表現不足なので、 読みやすさを重視していくとキャピタライゼーション ルールに反して逆に 読みにくくなるという弊害が起きます。 つまり、ルールによって読みやすく できないのです。 特に英語を母語としない日本人にとっては、頭字語を構成する単語さえ知らない ことが多いので、読むハードルはさらに上がります。 日本がソフトウェアで 世界に普及する技術が作れない要因でもあります。 以下のコードのうち、速読できるのは、やはりキャピタライゼーション ルール が守られたコードなのです。   total_of_iPad += count_of_iPad;   total_of_ipad += count_of_ipad;   totalOfIpad += countOfIpad;   TotalOfIpad += CountOfIpad; 参考 英語でタイトルを書くとき、これって大文字?ここ小文字? http://fromnaomiontheearth.blogspot.jp/2011/08/blog-post.html Capitalization Punctuation Rules http://www.grammarbook.com/punctuation/capital.asp 注目ニュース 一覧 ◇ グーグル、Android公式IDE、Android Studio 1.0 を公開。 http://japan.cnet.com/news/service/35057619/ … 2年かかってようやく正式版に。 ◇ Google App Engineに複数の脆弱性。問題は 30を上回る、と研究者ら。 http://japan.cnet.com/news/service/35057585/ … Java 環境といえばオラクルのはずだが、なぜか Google。 ◇ 分散型バージョン管理システム Git に脆弱性、任意のコマンドが実行される恐れ。 http://www.forest.impress.co.jp/docs/news/20141219_681222.html … 大文字と小文字を区別しないファイルシステムが悪いとすると Linux が嫌われるだけ。 ◇ Plustek、Androidを搭載したネットワークドキュメントスキャナ。 http://pc.watch.impress.co.jp/docs/news/20141219_681196.html … 無線で簡単になるかどうかは、システムの出来次第。 ◇ アップルとIBM、提携後初の iOS アプリ群を提供。 http://japan.cnet.com/news/service/35057728/ … ちょっとした端末としては活用の価値あり。 ◇ アップルは韓国嫌い、横浜にR&D拠点、日本パッシング無しに多謝。 http://blogs.itmedia.co.jp/borg7of9/2014/12/post_7.html … 単に日本の技術を人件費が安い国に持っていくだけでは。 ◇ USBケーブルで音は変わるとアピールするMicroUSBケーブルが登場。 http://akiba-pc.watch.impress.co.jp/docs/news/news/20141217_680647.html … 気持ちの問題だが、病は気からと言われるように、影響はあるだろう。 次回の発行は、2015年 1月12日です。 ソフトウェアデザイン館 Sage Plaisir 21 ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm