IT ニュース&コラム 2019/ 7/29 通巻793号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ プログラムとしての定数と仕様としての定数を明確に分けること ■■ ほとんどのプログラミング言語は、値が変化しない変数(定数)に const などの キーワードを記述することで、値が変化しないことを明示するようになっています。 (今回の話では、C言語の #define と const と enum と Java の定数クラス static final は同じ扱いとします。) プログラミング言語における定数は、数学定数と異なり、プログラムを実行する 間だけ値が変わりません。 プログラムを実行する間に値が変わるようなコード を書くとコンパイル時にエラーとなり、値が変わらないことを保証することが できます。 厳密には、定数が初期化されたときから定数が使われなくなるときまで、 値が変わりません。 それ以外は値が変わる可能性があります。 たとえば、 コーディング中に値が変わる可能性があります。 そして、値が変わるタイミング については明示すべきと考えています。 たとえば、設定値は定数でコーディングされますが、設定値はユーザーによって コーディング時に変更される可能性があります。 たとえば、以下の定数が 変更されます。 ・対象となるOSや実行環境を選択する設定値 ・使用するライブラリ(やフレームワーク)の種類やバージョンを表す設定値 ・デバッグ用コードを使うかどうかの設定値 ・サンプル プログラムやテスト プログラムの入力値や正解値 また、通常ユーザーは変更せず、ライブラリの開発者が変更する定数もあります。 ・対象となるOSや実行環境やライブラリの種類を識別するための値 ・バージョン番号 ・最大値、境界値など また、数学定数の値は変わることはありません。 ただし、ライブラリの開発者が 定数の名前を変える可能性があります。 ・円周率 PI ・ネイピア数(自然対数の底の値) E 定数であるか定数でないかについて、ユーザーが最も興味があるのは、ユーザーに よって変更される可能性があるかどうか、つまり、 ユーザーが変更できる定数かどうか ではないかと思います。 そして、設定できる範囲についても興味があると思います。 ですので、ソース ファイルのコメントには、ユーザーが変更できる定数かどうかの 情報を載せるべきです。 その情報を提供しないと、設定値を変更すれば対応できた はずのことがユーザーが使えなくて不便だという評価をされたり、変更しては いけない定数を変更してクレームが発生したりといったリスクが発生します。 Natural Docs 形式のコメントでは、やや冗長なキーワードが使えるようになっている ので、それを活用するのがよいでしょう。 たとえば、以下のようなコーディング ルールにします。 このルールは、ドキュメント生成ツールによって生成された ドキュメントに、変更できる定数の一覧が Define の一覧にまとめられるという メリットがあります。 ・Define: ユーザーが変更できる定数(このコメントがあるコードで値を定義している) ・Constant や Enumeration など: ユーザーが変更できない定数 たとえば、サンプル プログラムに以下のコードがあったとき、ユーザーは A_MAX の値を変更できますが、B_MAX の値は変更できません(変更した時の動きは保証 しません)。 /*********************************************************************** * Define: A_MAX * 範囲は 0〜100 ************************************************************************/ #define A_MAX 10 /*********************************************************************** * Constant: B_MAX ************************************************************************/ #define B_MAX 10 /*********************************************************************** * Function: main ************************************************************************/ void main() { int array[10]; int i; for ( i = 0; i < B_MAX; i += 1 ) { array[i] = A_MAX; } } ■■ 注目ニュース 一覧 ■■ ◇ 京都アニメーション火災、アップルのクックCEOらも哀悼。 https://japan.cnet.com/article/35140108/ https://japan.cnet.com/article/35140323/ ◇ Makuake が切り開く、クラファンからリアルへの新販路、店舗と作る新たな流通。 https://japan.cnet.com/article/35139461/ … メーカーのアイデアがあふれる実験的商品が多数。 ◇ マイクロソフト、同時通訳する等身大ホログラムをデモ、MR、AI、翻訳技術を結集。 https://japan.cnet.com/article/35140123/ … リアルタイムでここまでできる。 ◇ 米司法省、テック大手の独禁法違反調査を開始。 https://japan.cnet.com/article/35140317/ … アメリカ政府もグローバルIT企業と良く思っていない。 ◇ NewDays 初、キャッシュレスの無人コンビニをJR武蔵境駅にオープン。 https://japan.cnet.com/article/35140287/ … レジだけ無人。品出しなどを行う店員はいる。 ◇ スマートスピーカーの音声広告、43%が受け入れつつある、2割が音声で買い物を経験。 https://japan.cnet.com/article/35139616/ … テレビなどで広告には慣れているからか。 ◇ グーグル、エンジニア採用向けの新ツール Byteboard、実用的なスキルを効率的に評価。 https://japan.cnet.com/article/35140250/ … IT技術者専用の採用試験サービス。 ◇ マウスコンピューター、mouse スマートホームの販売を終了。 https://japan.cnet.com/article/35140226/ … 家での自動化はあまり需要がなさそう。自分がコントロールできなくなる感覚。 ◇ Windows 7サポート終了まで半年切る、Windows 10移行状況や課題は。 https://japan.cnet.com/article/35140403/ … 実質、Windows 7 は今年まで。 ■■ ソフトウェアデザイン館 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