「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

ハードコーディング

pointこの用語のポイント

point別の場所に分けて書いた方が良い処理や値をソースコードの中に直接書いちゃうことだよ

point後で見たり変更したりするのが大変だから、嫌がられることが多いよ

スポンサーリンク

簡単に書くよ

ハードコーディング(英:hard coding)とは

人間語で書いたプログラムの元ネタを「ソースコード」と言うのですけどね。別のところに分けておいた方が良いであろう処理や値をソースコードの中に直接埋め込むこと
です。

表示するよ


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「ソースコード」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

ソースコードは「人間語で書いたプログラムの元ネタ」です。

ハードコーディング

プログラムを作って動かすまでの一般的な流れは

1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従ってコンピュータさんがお仕事する


です。

ハードコーディング2

コンピュータさんは人間語が分かりません。

ハードコーディング3

人間様はコンピュータさんの言葉が分かりません。

ハードコーディング4

プログラムは人間様が作る物です。
そこで、最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これもやって」な命令を人間語で書くのです。

ハードコーディング5

次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に仕事をするのはコンピュータさんです。
コンピュータさんが命令の内容を理解できるようにする必要があります。

ハードコーディング6

コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。

ハードコーディング7

かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。

この話で登場した

人間語で書いたプログラムの元ネタ

を「ソースコード」と言います。

ハードコーディング8

以上を踏まえて、本題に入ります。

ソースコードの書き方には特に決まりはありません。
コンピュータさんが「あぁ、これは命令だな」と正しく認識できる形であれば、どう書いても良いのです。

ただし!

それは趣味でプログラムを作っている人の場合です。
お仕事でプログラムを作るときは、いろいろなことを考慮する必要があります。
例えば

・他の人が見ても分かりやすく
・後から変更するのが楽なように
・できるだけ同じような書き方で


などですね。
どこにどれだけこだわるかはお仕事現場次第ですが、後のことを考えないで「取り合えず動けば良い」で作ると、へぼプログラマ呼ばわりされることになりかねません。

その「取りあえず動けば良い」の際たるもので

本来、別のところに分けて書いておいた方が良いであろう値や処理を直接ソースコードの中にべた書きする

のが「ハードコーディング」です。

例えば、そうですね。
以下のような処理があったとしましょう。

関数 金額計算(商品単価, 個数){
 消費税率 = 0.1

 金額 = 商品単価×個数 + 商品単価×個数×消費税率

 return 金額
}


商品単価と個数を渡すと税込の金額が返ってくる処理です。
この処理は以下のように書くこともできます。

関数 金額計算(商品単価, 個数){

 金額 = 商品単価×個数 + 商品単価×個数×0.1

 return 金額
}


消費税率の「0.1」を直接処理の中に入れ込んじゃう形式です。

この2つの処理において、後者の「0.1」を直接処理の中に入れ込んじゃう形式がハードコーディングです。
例えば「消費税率をハードコーディングしてんのかよ!クソなコードだな!」と言ったりしますよ。

何故ハードコーディングがクソ扱いされることが多いかですが

・パッと見たときに分かりにくいから
・後から変更するのが大変だから


です。

今回の例では数行の処理でしたが、実際にはもっとたくさんの処理が書いてあるはずです。
そんな中、ひょっこり「0.1」という数字が出てきました。
「何じゃ?こりゃ」となりませんか?

前後の処理を見れば、まだ「消費税率かな?」と予想できるかもしれませんけどね。
その数字が何を意味するかを探さなくてはいけません。
ちょっと面倒くさいです。
これが「パッと見たときに分かりにくいから」の理由です。

次に「後から変更するのが大変だから」の理由です。
消費税率が変わって10%だったのが15%になりました。
ハードコーディングされていると、該当する場所をすべて変更しなくてはいけません。
今回の例では1回しか使っていませんが、実際には何回も出てくるはずです。
それを一から全部変更しなくてはいけません。
見落としがないように気を付ける必要があります。
ちょっと面倒くさいです。
これが「後から変更するのが大変だから」の理由です。

できるだけハードコーディングは避けるようにしてください。
その方が優秀なプログラマっぽい気分になれます。

ちなみに、処理の中に直接埋め込んだ値は「マジックナンバー」と呼ばれます。
何の意味があるか分からないけど、とりあえず動くために必要な値だからでしょうかね。
マジックなナンバーなのです。
余裕があれば、併せて覚えてあげてください。


image piyo2

一言でまとめるよ

まぁ「ハードコーディング」って単語が出てきたら「外に出すべき処理や値をソースコード(人間語で書いたプログラムの元ネタ)の中に直接埋め込むことなんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク

おまけ

■訳してみるよ

「hard(ハード)」の意味は「硬い」とか「堅い」とか「難しい」とかです。
「coding(コーディング)」は「code(コード)」+「ing」です。
「code(コード)」の意味は「記号」とか「暗号」とか「符号」とか「コード」とかです。
何となくくっつけると

硬い記号にする

となります。