Rubyは有名なプログラミング言語です。シンプルさと生産性の向上を目指しています。また、完全なオブジェクト指向プログラミング言語でもあります。さらに、Rubyは自然に読めて書きやすいエレガントな構文を備えています。
どのようなプログラミングでも、さまざまなデータ型を管理する必要があります。データ型は、データの特定のクラスを説明するものです。プログラム内でデータをどのように処理すべきかをマシンに指示します。データ型は、そのデータに対して何ができるか(実行できる操作を含む)を決定するために極めて重要です。このチュートリアルでは、Rubyで利用可能なデータ型について深く掘り下げます。また、動的型付けについても探求します。この機能を使用すると、Rubyは明示的に宣言することなく、変数のデータ型を自動的に決定できます。始めましょう!
前提条件
このガイドで示されている手順を実践して実装するには、次のコンポーネントが必要です。
- 適切に設定されたLinuxシステム。詳細については、CloudSigmaでの個人用Ubuntuサーバーのセットアップ.
- 適切に設定されたRuby開発環境。以下を参照してください:UbuntuへのRubyのインストール(APTを使用)の公式ドキュメント.
Rubyのデータ型
Rubyは、整数、浮動小数点数、文字列、配列、シンボル、ハッシュなど、あらゆるプログラミング言語で遭遇する一般的なデータ型をすべて備えています。次に、Rubyのさまざまなデータ型の扱い方について概要を説明します。
ステップ1 – 整数
数学と同様に、整数はコンピュータプログラミングにおいて、端数のない数(整数)を指します。値は正、負、または0になります。値の範囲は次のとおりです:
|
1 |
{-∞, …, -1, 0, 1, …, ∞} |
Rubyで整数を試してみましょう。最初の例は、画面に単純な整数を出力することです:
|
1 2 |
print 99 print "\n" |
次に、整数の変数を扱います。ここでは、変数 sample_intには整数値(99)が含まれており、 print関数が変数の値を画面に出力します:
|
1 2 3 |
sample_int = 99 print sample_int print "\n" |
整数を使って計算を行うこともできます。次の例は、2つの整数の単純な加算を示しています:
|
1 2 3 |
sample_int = 99 + 100 print sample_int print "\n" |
大きな数値を扱う場合、読みやすくするためにカンマ(,)を使用することがよくあります。たとえば、視認性を高めるために100万(1000000)は1,000,000と書かれます。カンマの使用は禁止されていますが、Rubyではアンダースコア( _)を区切り文字として使用できます。次の例を見てみましょう:
|
1 2 3 |
sample_int = 1_000_999 print sample_int print "\n" |
アンダースコアを使用すると、特に大きな整数値を扱う場合にコードの可読性が向上します。
ステップ2 – 浮動小数点数
「浮動小数点数」(または略してfloat)は実数を表します。数学的な定義と同様に、実数は有理数または無理数になります。Rubyでは、floatは基本的に小数点を含む数値です。
画面に浮動小数点の値を出力してみましょう:
|
1 2 |
print 55.66 print "\n" |
次の例は、浮動小数点変数の宣言を示しています:
|
1 2 3 |
sample_float = 55.66 print sample_float print "\n" |
浮動小数点の値や変数に対して、さまざまな数学的演算を行うこともできます。次の例は、2つの浮動小数点数の単純な加算を示しています:
|
1 2 3 |
sample_float = 55.66 + 99.222 print sample_float print "\n" |
浮動小数点数と整数を加算するとどうなるでしょうか?結果の値は浮動小数点数になります。次の例では、55.0は整数(端数のない数)ですが、浮動小数点数として扱われます:
|
1 2 3 |
sample_float = 55.0 + 10 print sample_float print "\n" |
ステップ3 – 真偽値
真偽値は数学の論理学における真偽値を表します。Rubyでは、真偽値データ型は次の2つの値で表されます: trueおよび false:
-
より大きい
-
100 > 99: true
-
99 > 100: false
-
-
より小さい
-
500 < 999: true
-
999 < 500: false
-
-
等しい
-
10 == 10: true
-
9 == 99: false
-
数値と同様に、 trueまたは falseを保存することもできます 値を変数に格納できます。次の例はこの機能を示しています:
|
1 2 3 |
result = 9 == 99 print result print "\n" |
ステップ 4 – 文字列
プログラミングにおいて、string は一連の文字(アルファベット、数字、記号)として表されます。Rubyでは、文字列はシングルクォーテーション( ')またはダブルクォーテーション( ")で囲まれます。すでに Rubyでの文字列の使用について詳しく説明しましたので、このセクションは短くなります。
次の例は、基本的な hello world プログラムをRubyで記述したものです:
|
1 |
print "hello world!\n" |
文字列を変数に格納することもできます。次の例では、文字列の結合も取り入れています:
|
1 2 |
username = "Cloudsigma" print "hello, " + username + "!\n" |
ステップ 5 – 配列
配列は、同じデータ型の要素の固定サイズコレクションを格納できるデータ構造です。また、同じデータ型の変数のコレクションとして概念化することもできます。これは、ほとんどの現代のプログラミング言語において最も基本的なデータ構造の1つです。
Rubyでは、配列は次のように定義されます:
|
1 |
[value_1, value_2, …, value_N] |
これまでに説明した他のデータ型(整数、浮動小数点数、文字列)の配列を作成することも可能です。以下にいくつかの例を示します:
-
整数: [-5, 0, 5]
-
浮動小数点数: [-9.99, -6.99, -3.99, 0, 3.99]
-
文字列: [“the”, “quick”, “brown”, “fox”]
次の例では、これらすべてのタイプの配列を実装しています:
|
1 2 3 4 5 6 |
print [-5, 0, 5] print "\n" print [-9.99, -6.99, -3.99, 0, 3.99] print "\n" print ["the", "quick", "brown", "fox"] print "\n" |
print関数が配列を検出すると、配列全体が画面に出力されることに注意してください。より便利にするために、配列を変数として扱うことがよくあります。コードを更新してみましょう:
|
1 2 3 4 5 6 7 8 9 10 |
array_int = [-5, 0, 5] print array_int print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string print "\n" |
これで、配列の個々の要素を操作できるようになります:
|
1 2 3 4 5 6 7 8 9 |
array_int = [-5, 0, 5] print array_int[2] print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float[1] print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string[3] print "\n" |
Rubyでは、配列のインデックス値は0から始まることに注意してください。
便宜上、Rubyの配列には、 .first メソッドと .last メソッドが用意されており、最初と最後の要素を出力できます:
|
1 2 3 4 |
array_float = [-9.99, -6.99, -3.99, 0, 3.99] puts array_float.first puts array_float.last print "\n" |
Rubyの配列には、もう1つの興味深い特徴があります。異なるタイプのデータを同時に保持することができます。たとえば、文字列、シンボル、さらには他の配列を格納することもできます:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mixed_array = [ "hello", 99.99, "world", [ "the", "quick", "brown", "fox" ] ] print mixed_array print "\n" print mixed_array[3] print "\n" |
ステップ 6 – シンボル
Rubyにおいて、シンボルは、ラベルや識別子のように機能する特別なデータ型です。シンボルは不変(イミュータブル)であり、変更することはできません。シンボルは、値を持たない変数を宣言しているかのように見えます。
以下はシンボルの例です:
|
1 |
:time_zone |
一般的に、シンボルは重要な何かを識別するために使用されます。しかし、それ以外の状況では、文字列で十分です。
オブジェクト指向言語であるRubyは、たとえ文字列が同一であっても、すべてのもの(文字列を含む)を固有のメモリ位置を持つオブジェクトとして扱います。しかし、シンボルを参照する場合、プログラム内のどこであっても同じオブジェクト、つまり同じメモリ位置になります。
ステップ 7 – ハッシュ
ハッシュは、キーと値の辞書のようなコレクションです。多くの場合、ハッシュはユーザーに関する情報など、関連するデータを保存するために使用されます。
ハッシュの簡単な例を以下に示します。ユーザーのユーザー名とパスワードを含むハッシュ user_infoを作成しました:
|
1 2 3 4 5 6 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info print "\n" |
キーと値のペアの値を取得するには、キーを使用する必要があります。次の例は、このプロセスを示しています。
|
1 2 3 4 5 6 7 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info["username"] print "\n" |
Rubyでは、少し異なる構文( : を =>):
|
1 2 3 4 5 6 |
user_info = { username: "HelloWorld999", password: "password123" } print user_info[:password] print "\n" |
この構文構造は、他の言語(例えば、JavaScriptなど)で使用される構文に似ています。この構文構造では、キーはシンボルとして定義されます。そのため、値にアクセスするために "username" を使用する代わりに、以下を使用します: username を使用して値にアクセスします。
動的型付け
変数を宣言するときに、データ型を明示的に割り当てる必要がないことにすでに気づいているかもしれません。代わりに、変数の値によってデータ型が決まります。Rubyは、dynamic typingを使用しており、型チェックは実行時に行われます。対照的に、static typingプログラミング言語(例えばC/C++)では、コンパイル中にデータ型が決定されます。
次の例では、変数 dyn_var に代入されたすべての値が有効です:
|
1 2 3 4 5 |
dyn_var = 123 dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" dyn_var |
動的型付け言語では、既存の変数を再利用して異なるデータ型を格納することができます。ここでは、この現象を示すために前の例を更新しています:
|
1 2 3 4 5 6 7 |
dyn_var = 123 puts dyn_var dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" puts dyn_var dyn_var |
この例が示すように、新しい値が代入されるたびに、実行中に dyn_var のデータ型が変化します。これは、あるデータ型を別のデータ型に変換するときに便利です。次の例はこれを示しています:
|
1 2 3 4 |
print "enter length: " length = gets.chop length = length.to_f puts length |
ここで、
-
キーボードからの入力は文字列であるため、最初は length は文字列です。
-
目的の値は浮動小数点数(float)であるため、 to_f メソッドを使用して文字列値を浮動小数点数に変換しています。
-
値が変更されたため、 length には浮動小数点数データ型が割り当てられます。これが、画面にその値を出力したときに表示されるものです。
2つの異なるデータ型を混ぜようとするとどうなるでしょうか?Rubyはエラーをスローします。見てみましょう:
|
1 |
print 9 + "77" |
データ型の識別
Rubyでは、すべてがオブジェクトとして扱われます。Rubyのすべてのオブジェクトには、次のメソッドが備わっています。 class。このメソッドを呼び出すと、ソースのデータ型が何であるかがわかります。以下は、 class メソッドの使用例です:
|
1 2 3 4 |
puts 55.class puts (55.55).class puts true.class puts nil.class |
データ型を特定するもう1つの方法は、 kind_of? メソッドを使用することです。このメソッドは、オブジェクトのデータ型を指定されたデータ型と比較し、真偽値(Boolean)を返します。次の例で確認してみましょう:
|
1 2 |
puts 55.kind_of?(Float) puts 55.kind_of?(Integer) |
同様に、もう1つのメソッド is_a? もデータ型を比較して真偽値を返します。唯一の違いはメソッドの名前(ラベル)です。しかし、開発者にとって読みやすく理解しやすいため、こちらの方が好まれる場合があります。前の例を で更新してみましょう。is_a?:
|
1 2 |
puts 55.is_a?(Float) puts 55.is_a?(Integer) |
最後に
どのプログラミング言語を使用する場合でも、その言語がサポートするデータ型を十分に理解しておく必要があります。このガイドでは、Rubyプログラミングで最も一般的に使用されるデータ型について説明しました。整数、浮動小数点数、文字列、シンボル、真偽値、およびハッシュについて、例を交えて解説・実演しました。
Rubyの理解を深めるのに役立つ、当ブログの他のチュートリアルもぜひご覧ください:
- Ubuntu 20.04にRVMを使用してRuby on Railsをインストールする方法
- PostgreSQLを使用したRuby on Railsのセットアップ方法
- Ubuntu 21.04上のRuby on RailsアプリでMySQLを使用する方法
- CloudSigma PaaSの探索:Ruby PaaSホスティングサービスを活用する方法とは?
ハッピーコンピューティング!




































コメント
コメントはまだありません。最初のコメントを投稿しましょう。