定数の定義と使い方

定数は変数と同じく数値や文字列などのオブジェクトを格納するために使用するものです。ただ定数は変数と違って基本的に一度値を格納したあとで別の値を格納しなおすことは行いません。ここでは Ruby で定数を定義する方法と実際の使い方について解説します。

(Last modified: )

定数を定義する

定数は次のように定義します。

定数 = オブジェクト

定数名に対してオブジェクトを代入すると定数が定義されます。定数はメソッドの中では定義できません。

Ruby ではアルファベットの大文字 (A から Z) で始まる名前が定数として処理されます。 2 文字以降は小文字でも構いませんが、一般的に定数はすべて大文字で記述するのが慣例となっているようです。

定数の場合は一度オブジェクトを代入すると基本的には変更を行いません(新しいオブジェクトを代入すると変更できまずが警告が表示されます)。具体的には次のように定義します。

PI = 3.14

この場合は定数「PI」に「3.14」と言う数値オブジェクトを代入しています。定数が定義されたあとであれば変数の場合と同じくプログラムの中で定数を記述することが可能です。

PI = 3.14
menseki = PI * 5 * 5

同じ値をプログラムの中で何回も使用する場合などに定数を使用すると便利です。例えば消費税として 0.1 という数値をそのままプログラムの中で何度も記述した場合、将来的に消費税が変更されたときにすべての 0.1 を書き換えなければなりません。

price = 1000 * (1 + 0.1)

消費税として TAX という定数を定義し、数値を直接記述する代わりに定数を記述しておけば、将来的に消費税が変更されたときも変更箇所は定数の定義の部分だけで済みます。

ZEI = 0.1
price = 1000 * (1 + ZEI)

また定数には一見するとどんな意味を持つのか分からない値に対し、分かりやすい名前を付けることができます。下記の例を見てください。

price = 1000 * (1 + 0.1)

プログラムを作成した人にとっては 0.1 が税率であることが分かっていますが、他の人が見たときに何故 0.1 と言う数値が加算されているのか分かりません。それに対して定数を定義することで値の意味が分かりやすくなります。

ZEI = 0.1
price = 1000 * (1 + ZEI)

他にも入力ミスをしそうな値( 3.141592356 など)を何度かプログラムの中で記述する場合に、定数に定義( PAI )しておくことでケアレスミスを防ぐこもできます。

一度値を代入した定数に別の値を代入する

定数は変数と異なり一度代入した値をあとから変更して利用するものではありませんが、 Ruby では定数に対してあとから別の値を代入して変更することが可能です。ただし、警告が表示されます。

次の例を見てください。一度定義した定数に対して、あとから別の値を代入しています。

ZEI = 0.1
puts(ZEI)

ZEI = 0.8
puts(ZEI)

実行すると次のような警告が表示されます。

0.1
warning: already initialized constant ZEI
warning: previous definition of ZEI was here
0.8

警告は表示されますが、定数の値は変更されている点にご注意ください。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

ZEI = 0.1

meat = 300 * (1 + ZEI)
puts("肉の値段は " + meat.to_s + " 円です")

fish = 250 * (1 + ZEI)
puts("魚の値段は " + fish.to_s + " 円です")

下記のように実行して下さい。

定数への代入

-- --

Ruby で定数を定義する方法と実際の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。