【Ruby】レッスン1-02:変数と定数の基本を理解しよう

一つ前のページでは初めてのRubyコードを書いてみました。
今回は 変数と定数 について見ていきましょう。
Lesson1:基礎文法編
・Lesson1-1:Ruby学習の入り口|初めてコードを書いてみよう
・Lesson1-2:変数と定数を理解しよう ◁今回はココ
・Lesson1-3:四則演算をしよう
・Lesson1-4:文字列を操作しよう
・Lesson1-5:乱数を生成しよう
・確認問題1-☆1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:オブジェクト指向編
変数と定数の基礎|Rubyでデータを扱う

プログラミングにおいて、「変数」と「定数」は重要な概念です。
変数は数値や文字列などのデータを格納し、後で再利用するための「箱」のような役割を持ちます。
一方、定数は一度設定した値を変更せずに利用するためのものです。
この章ではRubyにおける変数と定数の使い方について学んでいきましょう。
値を変えられる変数の基本
変数はプログラム内でデータを一時的に保存しておくためのものです。
好きな名前を付けて定義できますが、Rubyでは変数の名前は小文字またはアンダースコア(_)から始めるのが一般的です。
変数には数値や文字列などさまざまなデータ型を代入することができ、新しい値を代入すると以前の値は上書きされます。
x = 10 name = "Ruby" is_active = true
上記の例ではx
に数値10
、name
に文字列"Ruby"
、is_active
に真偽値true
が代入されています。
これらの変数は後で再利用が可能で、プログラムの中で自由に値を変更することができます。
値を固定する定数の基本
Rubyでは定数として扱いたいデータにはすべて大文字の名前を付けます。
定数とは、一度決めた値を変更せずにプログラムの中で使い続けることを意図したものです。
例えば円周率の値を3.14とした場合、あとで間違えて別の数値を上書きしてしまうのを防ぐために定数が使用されます。
ただし、Rubyの定数は「慣例として定数の再代入は避けるべき」という程度のものであり、技術的には再代入が可能となっています。
PI = 3.14 LANGUAGE = "Ruby"
ここで、PI
やLANGUAGE
は全て大文字で書かれているため定数であり、定義した値を変更せずに利用することが推奨されます。
定数に再代入を行おうとすると警告が表示されますが、エラーにはなりません。
Rubyの定数は不変であると考え、大切な値には再代入しないようにしましょう。
実例で理解する変数と定数
以下は変数と定数の実際の使用例です。
# 変数の例 count = 10 message = "こんにちは、Ruby!" # 定数の例 MAX_SCORE = 100 GREETING = "ようこそ" print "現在のカウント:" puts count # 変数を使った出力 #変数の再代入 count = 20 print "再代入後のカウント:" puts count # 変数を使った出力 puts GREETING # 定数を使った出力
変数の値は自由に変更できますが、定数は一度設定したら変更せずに利用するのが望ましいです。
まとめ
Rubyにおける変数と定数はそれぞれ異なる目的で使われます。
変数は値を変更可能で、プログラムの中で様々なデータを扱うために使われます。一方、定数は原則として値を変更せずに利用するためのものです。
プログラムの可読性や保守性を高めるため、変数と定数を適切に使い分けましょう。
練習問題|挨拶プログラムを作成して理解を深めよう

Rubyの練習問題&解説:変数と定数を使って挨拶メッセージを作成しよう!
変数と定数をしっかりと身に着けるため、練習問題に挑戦しましょう。
「変数と定数」の練習問題
Rubyの基本的な文法である「定数」と「変数」を使って、ユーザーに挨拶を表示するプログラムを作成しましょう。
定数を使って「WELCOME_MESSAGE」(挨拶メッセージ)と「COURSE_NAME」(コースの名前)を定義し、変数でユーザーの名前を取得します。
その後、定数と変数を組み合わせて、画面に挨拶メッセージを表示してください。
以下の要件に従ってコードを完成させてください。
- 定数
WELCOME_MESSAGE
に"ようこそ、Rubyの世界へ!"
を代入すること。 - 定数
COURSE_NAME
に"Ruby入門コース"
を代入すること。 - 変数
user_name
にユーザーが入力した名前を代入すること。 WELCOME_MESSAGE
とCOURSE_NAME
、そしてuser_name
を使って以下のような挨拶メッセージを表示すること。
表示例:ようこそ、Rubyの世界へ!太郎さん、Ruby入門コースへようこそ!
ただし、以下のような実行結果となるコードを書くこと。
ようこそ、Rubyの世界へ! 太郎さん、Ruby入門コースへようこそ!
【ヒント】自力で解くのが難しい人へ
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:定数
WELCOME_MESSAGE
に"ようこそ、Rubyの世界へ!"
を代入
2:定数COURSE_NAME
に"Ruby入門コース"
を代入
3:変数user_name
にユーザーからの入力をchomp
メソッドで代入
4:WELCOME_MESSAGE
を表示
5:user_name
を表示
6:文字列"さん、"
を表示
7:COURSE_NAME
を表示
8:文字列"へようこそ!"
を表示
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 定数の定義 =begin 【穴埋め問題1】 ここに「WELCOME_MESSAGE」定数を定義し、「ようこそ、Rubyの世界へ!」という挨拶メッセージを代入するコードを書いてください。 =end =begin 【穴埋め問題2】 ここに「COURSE_NAME」定数を定義し、「Ruby入門コース」というコース名を代入するコードを書いてください。 =end # 変数の定義 =begin 【穴埋め問題3】 ここに「user_name」変数を定義し、ユーザーからの入力を取得するコードを書いてください。 =end # 定義した定数と変数を使って挨拶メッセージを表示 puts WELCOME_MESSAGE print user_name print "さん、" print COURSE_NAME puts "へようこそ!"
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
この問題の解答例と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
# 定数の定義 WELCOME_MESSAGE = "ようこそ、Rubyの世界へ!" # 挨拶メッセージ COURSE_NAME = "Ruby入門コース" # コースの名前 # 変数の定義 user_name = gets.chomp # ユーザーの名前を表す変数 # 定義した定数と変数を使って挨拶メッセージを表示 puts WELCOME_MESSAGE print user_name print "さん、" print COURSE_NAME puts "へようこそ!"
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
定数の定義
WELCOME_MESSAGE = "ようこそ、Rubyの世界へ!" # 挨拶メッセージ COURSE_NAME = "Ruby入門コース" # コースの名前
WELCOME_MESSAGE
とCOURSE_NAME
は「定数」です。定数はプログラムの中で変更しない値を格納するために使用されます。Rubyでは定数は大文字で始めて定義します。定数はプログラムが実行される間、その値が変わらないことを前提としています。
このコードではWELCOME_MESSAGE
に挨拶メッセージを、COURSE_NAME
にコースの名前を設定しています。変数の定義
user_name = gets.chomp # ユーザーの名前を表す変数
user_name
は「変数」でユーザーが入力する名前を保存します。gets.chomp
はユーザーの入力を受け取り、入力の最後に付く改行を取り除くメソッドです。
このメソッドを使うことで、ユーザーの名前を入力してもらい、改行なしで名前が保存されるようにしています。挨拶メッセージの表示
puts WELCOME_MESSAGE print user_name print "さん、" print COURSE_NAME puts "へようこそ!"
puts
やprint
はRubyでテキストを画面に表示するためのメソッドです。puts
は改行付きで出力し、print
は改行せずに出力します。WELCOME_MESSAGE
、user_name
、COURSE_NAME
を組み合わせて挨拶文を作成し、ユーザーに歓迎のメッセージを表示します。
このように定数と変数を使うことで、動的なメッセージを簡単に作ることができます。
まとめ
このプログラムでは定数と変数の違いや、Rubyでの基本的な入力・出力方法について学びました。
定数は値が変わらないデータを保存するために使い、変数は変化するデータを扱います。
初心者にとっては、定数と変数の使い方の理解はプログラミングの基本です。
この知識を使って様々なメッセージやデータを扱うプログラムに挑戦してみましょう!
FAQ|変数と定数の使い方と違いについての基本疑問
- Q1. Rubyで変数名に使える文字のルールはありますか?
-
変数名は英小文字またはアンダースコアで始める必要があります。数字で始めることはできず、予約語(if, endなど)も使用できません。命名には意味のある単語を使うのがおすすめです。
- Q2. 定数は後から変更できないのですか?エラーにはなりませんか?
-
Rubyでは定数に再代入すると警告が表示されますが、完全に禁止されているわけではありません。ただし再代入は非推奨であり、定数は値を変えない前提で使うのが正しい使い方です。
- Q3. 変数と定数の使い分けはどう判断すればいいですか?
-
基本的に、今後値が変わる可能性があるものには変数を、値が固定であるべきもの(π、税率、設定値など)には定数を使います。意図が明確なコードにするための重要なポイントです。