my.code(); Logomy.code();
Ruby-4.コレクション (Array, Hash, Range)

my.code(); Logomy.code();

  • C++
    • 0.C++の世界へようこそ
    • 1.型システムと制御構造
    • 2.データ集合とモダンな操作
    • 3.ポインタとメモリ管理
    • 4.関数と参照渡し
    • 5.プロジェクトの分割とビルド
    • 6.クラスの基礎
    • 7.クラスを使いこなす
    • 8.継承とポリモーフィズム
    • 9.テンプレート
    • 10.STL ①:コンテナ
    • 11.STL ②:アルゴリズムとラムダ式
    • 12.RAIIとスマートポインタ
  • JavaScript
    • 0.JavaScriptへようこそ
    • 1.基本構文とデータ型
    • 2.制御構文
    • 3.関数とクロージャ
    • 4.'this'の正体
    • 5.オブジェクトとプロトタイプ
    • 6.クラス構文
    • 7.配列とイテレーション
    • 8.非同期処理①: Promise
    • 9.非同期処理②: Async/Await
  • Python
    • 0.環境構築と基本思想
    • 1.基本構文とデータ型
    • 2.リスト、タプル、辞書、セット
    • 3.制御構文と関数
    • 4.モジュールとパッケージ
    • 5.オブジェクト指向プログラミング
    • 6.ファイルの入出力とコンテキストマネージャ
    • 7.例外処理
    • 8.ジェネレータとデコレータ
  • Ruby
    • 0.rubyの世界へようこそ
    • 1.基本構文とデータ型
    • 2.制御構造とメソッド定義
    • 3.すべてがオブジェクト
    • 4.コレクション (Array, Hash, Range)
    • 5.ブロックとイテレータ
    • 6.クラスとオブジェクト
    • 7.モジュールとMix-in
    • 8.Proc, Lambda, クロージャ
    • 9.標準ライブラリの活用
    • 10.テスト文化入門
    • 11.メタプログラミング入門
  • Rust
    • 0.Rustの世界へようこそ
    • 1.基本構文と「不変性」
    • 2.関数と制御フロー
    • 3.所有権
    • 4.借用とスライス
    • 5.構造体とメソッド構文
    • 6.列挙型とパターンマッチ
    • 7.モジュールシステムとパッケージ管理
    • 8.コレクションと文字列
    • 9.エラーハンドリング
    • 10.ジェネリクスとトレイト
    • 11.ライフタイム
  • TypeScript
    • 0.TypeScriptへようこそ
    • 1.基本的な型と型推論
    • 2.オブジェクト、インターフェース、型エイリアス
    • 3.関数の型定義
    • 4.型を組み合わせる
    • 5.ジェネリクス
    • 6.クラスとアクセス修飾子
    • 7.非同期処理とユーティリティ型
my.code(); Logomy.code();

環境構築不要、その場で実践。

ut-code / my-code

Copyright © 2026 ut.code();

ut.code(); について
公式ウェブサイト公式 𝕏 アカウント

第4章: コレクション (Array, Hash, Range)

Rubyの強力な機能の一つに、柔軟で直感的なコレクション(データを集めて格納するオブジェクト)があります。他の言語でのListやMap、Dictionaryに相当するものを学びましょう。この章では、Array(配列)、Hash(ハッシュ)、そして Range(範囲)を扱います。

配列 (Array)

Rubyの Array は、他の言語における動的配列やリストに似ています。順序付けられた要素のコレクションであり、異なるデータ型の要素を混在させることができます。

配列は [] (角括弧) を使って生成します。

要素へのアクセスは [index] を使います。Rubyのインデックスは0から始まり、負のインデックス(末尾からのアクセス)をサポートしているのが特徴です。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):001:0> numbers = [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
irb(main):002:0> numbers[0]  # 最初の要素
=> 1
irb(main):003:0> numbers[-1] # 末尾の要素
=> 5
irb(main):004:0> numbers[-2] # 末尾から2番目の要素
=> 4
irb(main):005:0> mixed = [1, "hello", true, 3.14] # 型の混在が可能
=> [1, "hello", true, 3.14]
irb(main):006:0> empty_array = []
=> []

要素の追加と削除

要素の追加には << (shovel演算子) や push メソッドを使います。 pop は末尾の要素を削除し、それを返します。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):007:0> fruits = ["apple", "banana"]
=> ["apple", "banana"]
irb(main):008:0> fruits << "cherry"  # << (shovel) は高速で一般的
=> ["apple", "banana", "cherry"]
irb(main):009:0> fruits.push("orange")
=> ["apple", "banana", "cherry", "orange"]
irb(main):010:0> last_fruit = fruits.pop
=> "orange"
irb(main):011:0> fruits
=> ["apple", "banana", "cherry"]

便利なメソッド

Array には非常に多くの便利なメソッドが用意されています。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):012:0> fruits.length # 要素数
=> 3
irb(main):013:0> fruits.include?("banana") # 要素が含まれているか
=> true
irb(main):014:0> fruits.sort # ソートされた新しい配列を返す
=> ["apple", "banana", "cherry"]
irb(main):015:0> fruits.first # 最初の要素
=> "apple"
irb(main):016:0> fruits.last # 最後の要素
=> "cherry"

ハッシュ (Hash)

Hash は、キーと値のペアを格納するコレクションです。他の言語のMap、Dictionary、連想配列に相当します。

Rubyのハッシュには2つの主要な記法があります。

1. 旧シンタックス (Rocket Syntax)

=>(ハッシュロケット)を使う記法です。キーには任意のオブジェクト(文字列、数値、シンボルなど)を使用できます。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):001:0> # キーが文字列の場合
irb(main):002:0> user_profile = { "name" => "Alice", "age" => 30 }
=> {"name"=>"Alice", "age"=>30}
irb(main):003:0> user_profile["name"]
=> "Alice"

2. 新シンタックス (JSON-like Syntax)

Ruby 1.9から導入された、より簡潔な記法です。JavaScriptのオブジェクトリテラルに似ています。

注意: この記法を使うと、キーは自動的にシンボル (Symbol) になります。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):004:0> # 新シンタックス (キーはシンボルになる)
irb(main):005:0> user_profile_new = { name: "Bob", age: 25 }
=> {:name=>"Bob", :age=>25}
irb(main):006:0> # アクセス時もシンボル (:name) を使う
irb(main):007:0> user_profile_new[:name]
=> "Bob"

現在では、キーが固定されている場合は、シンボルを使った新シンタックスが好まれます。

範囲 (Range)

Range は、連続する値のシーケンスを表すオブジェクトです。for ループや case 文での条件分岐によく使われます。

範囲の作成には (start..end) と (start...end) の2つの形式があります。

.. (終端を含む)

..(ドット2つ)は、終端の値を含む範囲を作成します。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):001:0> inclusive_range = (1..10) # 1から10まで (10を含む)
=> 1..10
irb(main):002:0> inclusive_range.to_a # to_aで配列に変換できる
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
irb(main):003:0> inclusive_range.include?(10)
=> true

... (終端を含まない)

...(ドット3つ)は、終端の値を含まない(未満の)範囲を作成します。

Ruby 実行環境
ブラウザ上で動作するRuby3.4のREPL実行環境です。
プロンプト (irb>) の後にコマンドを入力し、Enterキーで実行します。
Ctrl+Cまたは左上の停止ボタンで実行中のコマンドを中断できます。
irb(main):004:0> exclusive_range = (1...10) # 1から10まで (10を含まない)
=> 1...10
irb(main):005:0> exclusive_range.to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
irb(main):006:0> exclusive_range.include?(10)
=> false

範囲の活用例

Range は case 文と組み合わせると非常に強力です。

ファイルを編集:grade_checker.rb
def assign_grade(score)
  case score
  when (90..100)
    "A"
  when (80...90) # 80は含むが90は含まない (80-89)
    "B"
  when (60...80)
    "C"
  else
    "F"
  end
end

puts "Score 95: #{assign_grade(95)}"
puts "Score 90: #{assign_grade(90)}"
puts "Score 89: #{assign_grade(89)}"
puts "Score 60: #{assign_grade(60)}"
puts "Score 59: #{assign_grade(59)}"
ruby grade_checker.rb
ブラウザ上で動作するRuby3.4の実行環境です。
左上の実行ボタンを押して、このページ内のgrade_checker.rbに書かれている内容を実行します。
Score 95: A
Score 90: A
Score 89: B
Score 60: C
Score 59: F

この章のまとめ

  • Array: [] で作成する順序付きリスト。<< で追加、pop で取り出し、[-1] で末尾にアクセスできます。
  • Hash: {} で作成するキー/バリューペア。
  • Symbol: :name のようにコロンで始まる識別子。イミュータブルで高速なため、ハッシュのキーに最適です。
  • Hashのシンタックス: キーがシンボルの場合、{ key: "value" } というモダンな記法が使えます。
  • Range: (1..10)(含む)と (1...10)(含まない)があり、連続したシーケンスを表現します。

練習問題1: ショッピングカートの管理

あなたのショッピングカートを表現する配列 cart があります。 cart は、商品情報を表すハッシュの配列です。 以下の操作を行ってください。

  1. cart に { name: "Orange", price: 120 } を追加する。
  2. cart の最初の商品の名前 ("Apple") を表示する。
ファイルを編集:practice5_1.rb
cart = [{ name: "Apple", price: 100 }, { name: "Banana", price: 80 }]
ruby practice5_1.rb
ブラウザ上で動作するRuby3.4の実行環境です。
左上の実行ボタンを押して、このページ内のpractice5_1.rbに書かれている内容を実行します。

練習問題2: ハッシュの操作

ユーザーの設定を保存するハッシュ settings を作成してください。

  • キーにはシンボルを使用します (:theme, :notifications)。
  • :theme の初期値は :light、:notifications の初期値は true とします。
  • settings を作成した後、:theme の値を :dark に更新してください。
ファイルを編集:practice5_2.rb
settings =
ruby practice5_2.rb
ブラウザ上で動作するRuby3.4の実行環境です。
左上の実行ボタンを押して、このページ内のpractice5_2.rbに書かれている内容を実行します。
前のページ« すべてがオブジェクト
次のページブロックとイテレータ »