̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ IT ニュース&コラム 2015/ 4/20 通巻685号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 大文字小文字に統一するな - リーダブル・コード(34) 以前、HTML の表現力と XML の活用力の両方を備えた XHTML 2.0 が規格の候補 として発表されましたが、Apple、Mozilla、Opera の反発によって策定中止と なりました。 XML は、DOM と呼ばれる API を使うことで、JavaScript だけでなく多くの プログラミング言語でアクセスすることができ、XML で記述されたデータに 対して様々な自動処理ができます。 一方で、Web上には HTML データが膨大に 存在するため、そのデータを活用できるよう XHTML が策定されました。 しかし、XHTML には、XML に準拠するために、次の欠点がありました。 ・XML のタグは大文字小文字を区別するため、HTML のタグは小文字に変更 ・子要素が無い要素の末尾に / が必要 ・属性値は、数値であっても " " または ' ' で囲まなければならない これからは XHTML だと信じて、将来のために HTML のタグを小文字に統一する ことや、/ を付けることを勧める人が現れました。 しかし、現在は、上記の 欠点が無い HTML5 にまとまっています。 それにも関わらず、未だに進める 人が存在します。 XHTML が普及したら効率的になるでしょうか。 いや、なりません。 なぜなら、 XML に準拠する作業をしなければならないからです。 将来のために今を犠牲に する必要性はケース・バイ・ケースなのです。 可読性も下がります。 ブラウザーが表示できるということは、HTML が解析ができていることなのに、 なぜ XML に合わせる必要性があるのでしょうか。 プログラムが高速かつ確実 にできることを人間が守るルールにすることは非効率です。 C言語のヘッダーファイルの名前を小文字に統一するルールが一部に存在します。 ヘッダーファイルの名前を記述するときに、大文字にするか小文字にするか 迷わなくなるメリットがあります。 しかし、名前の意味が分からなくなる 副作用があります。 stdio.h を初めて見て意味が分かる人はいません。 StdIO.h なら少し分かるかも知れません。 stadnard input output header の略語です。 略語であれば、大文字・小文字を元の語に合わせる必要はありま せん。 しかし、略語は使う頻度が多いときだけ有効です。 膨大なライブラリ を使う必要がある現在では、略語は非効率であり、略語でなければ、大文字 小文字は元の語に合わせなければ可読性が落ちます。 そもそも小文字にしな ければならない原因は、大文字小文字を区別する Linux のファイルシステム です。 略語が必要な原因は、8.3形式のファイル名しか使えない大昔の MS-DOS です。 MS-DOS 用のファイル名への変換マップを用意して、#if で場合分けを したり、大文字小文字が間違っていないことを自動的にチェックするツールを 通すだけで済むことです。 そうすれば、統一することに対する副作用が ありません。 そもそも、MS-DOS 用と共通のソースが使えるとも思えませんが。 エクセルやデータベースで大量のデータを扱っている場合、大文字小文字の スタイルを統一した方が読みやすくなります。 しかし、どのデータも小文字に 統一すべきというわけではありません。 英文に合わせるなら、性・名の先頭 を大文字、それ以外を小文字にすべきでしょうし、クレジット カードに合わ せるなら全て大文字にすべきでしょう。 ケース・バイ・ケースなのです。 プログラムやエクセルのマクロで、小文字だけや大文字だけに変換することが できます。 エクセルの PROPER 関数では先頭を大文字、それ以外を小文字に 変換することができます。 大文字と小文字を区別したくない処理をするときは、 その処理の中で変換すればよいのです。 しかし、マスターデータに変換処理を してはいけません。 特にキャメルケースでは、単語の区切りの情報が失われます。 なので、大文字または小文字に変換する関数があるから、統一するルールを 順守することが簡単だと判断するのは間違いです。 可読性を上げるためにスタイルを統一するために、変換することに副作用が あるのであれば、スタイルが合っていないデータを自動的に見つける機能を 作成・使用するとよいでしょう。 ただし、例外を無視する機能は「必須」です。 無視できなければ、自動的に変換できないデータに対して毎回警告される ことになってしまい、逆に非効率です。 それが面倒なので変換を強制する ルールを作ることは、ルールの目的を見失っています。 クレジット カードがなぜ大文字だけなのか理由は(推測でしか)分かりま せんが、マスターデータを登録する際に、大文字(半角)で書くように 要求されることがあります。 しかし、なぜそのような面倒なことをユーザーに 要求してしまうのでしょう。 入力後に自動的に大文字変換して、変換したこと を通知するだけのことです。 たとえば、口座番号が全角で入力されたら、 自動的に半角に変換するネット銀行があります。 スタイルを統一したマスター データはこのように作成します。 日本では、人の名前を厳密に識別するために、戸籍統一文字・住基統一文字が ありますが、コンピューターで表現できない文字が多くあります。 IPAmj明朝 フォントをインストールすれば表示できますが、インストールされているのは 一部のコンピューターだけです。 そのため、類似の文字に変換する MJ縮退マップ というものがあります。 厳密であれば万事良いというわけでは ありません。 ケース・バイ・ケースであり、それに対応する個別の手段が必要 なのです。 自動処理において副作用が生じるのは、そんなに珍しいことではありません。 例外を認める機能やルールが必要なのです。 それができなければ、ルールを 採用する方が逆に効率が悪くなるのですが、問題を解決する方法を挙げなければ ならない強迫観念にせまられたり、メリットばかりに目を奪われたりしてできた、 役に立たないどころか副作用のあるルールがあまりに多いのです。 事情を理解 できない人のために体裁を整えるだけで現状維持なことがベストであることが 多いです。 参考 http://www.nemuchan.com/html5/ http://ja.wikipedia.org/wiki/ファイルシステム#.E6.A9.9F.E8.83.BD http://www.jpcert.or.jp/sc-rules/c-pre08-c.html 注目ニュース 一覧 ◇ Apple Watchで何ができるの? サードパーティ製アプリで見えてきた! http://www.itmedia.co.jp/pcuser/articles/1504/17/news160.html … アプリ単体より、iPhone とマルチタスクするケースが多いと推測している。 ◇ Apple Watchは高級時計の夢を見るか?弱点とアップルが試みた再定義。 http://japan.cnet.com/news/service/35062967/ … 時計として買う価値があるかも知れない。 ◇ Apple Watchの全貌にユーザーは気付けるか。長押しに感じる不安。 http://healthcare.itmedia.co.jp/hc/articles/1504/08/news042.html … 元々アップル製品は、製品から気づきを起こさせない傾向にはあった。 ◇ Apple Watch でカンニングをどう防ぐか。 http://healthcare.itmedia.co.jp/hc/articles/1504/18/news008.html … 一度一般的に普及した方が、対策が充実するだろう。 ◇ ベンチャーは労働時間制度の適用から除外を。新経済連盟がコメント。 http://www.itmedia.co.jp/news/articles/1504/06/news133.html … 楽天はベンチャーじゃない。 ◇ アイホンがiPhoneに対応。解錠も可能。 http://pc.watch.impress.co.jp/docs/news/yajiuma/20150410_697269.html … 親機がある場所まで移動しなくてもよくなる。 ◇ Google Chrome 42 でNPAPIが無効化。Unity Web PlayerSilverlightLyncなどに影響。 http://www.forest.impress.co.jp/docs/news/20150417_698382.html … 代替方法がこれでは企業システムに使えない。 ソフトウェアデザイン館 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