ハッシュの作成と基本操作

学習の目標

本章では、以下の内容を学びます。

  • ハッシュの概念と基本的な仕組みを理解する
  • ハッシュの作成方法と使い方を習得する
  • シンボルをキーとしたハッシュの記法を学ぶ
  • ハッシュから値を取り出す方法をマスターする

はじめに

これまでの学習で、配列を使って複数の値を管理する方法を学びました。配列では各要素に順番(インデックス)でアクセスしていましたが、実際のプログラミングでは「名前」と「値」をセットで管理したい場合が多くあります。

Rubyのハッシュは、このような「名前(キー)」と「値」のペアを管理するための便利な機能です。このキーと値の関係は、辞書で言葉を引くイメージに似ています。

ハッシュとは何か

実際の例で考えてみましょう。ある人の情報(名前と年齢)を管理したいとします。

配列での管理

配列を使うと、次のように書けます。

person = ["太郎", 20]

この方法では、person[0]が名前で、person[1]が年齢だということを常に覚えておく必要があります。データが増えると、どのインデックスが何を表しているのか混乱しやすくなります。

ハッシュでの管理

ハッシュを使うと、同じ情報をより分かりやすく表現できます。

person = {"name" => "太郎", "age" => 20}

この書き方では、"name"には"太郎"が、"age"には20が対応していることが一目で分かります。

ハッシュは**波括弧{}で囲んで作成し、キーと値の間には=>(ロケット演算子)**を書きます。キーと値のペアが複数ある場合は、カンマで区切ります。

ハッシュの作成方法

ハッシュを作成する方法はいくつかあります。基本的な作成方法を見ていきましょう。

空のハッシュを作成する

まず、空のハッシュを作成し、後からキーと値を設定することができます。

# 空のハッシュを作る
empty_hash = {}
# ハッシュにキーと値を設定する
empty_hash["name"] = "太郎"
empty_hash["age"] = 20
puts empty_hash # {"name"=>"太郎", "age"=>20}

初期値を持つハッシュを作成する

ハッシュを作る際に、最初から複数のキーと値のペアを設定することもできます。

# 生徒の情報を持つハッシュ
student = {
"name" => "太郎",
"age" => 20,
"grade" => 2
}
puts student["name"] # 太郎
puts student["age"] # 20
puts student["grade"] # 2

複数行に分けて記述すると、特に多くのデータを持つハッシュの場合に読みやすくなります。

ハッシュからの値の取り出し方

ハッシュから値を取り出すには、キーを指定します。

person = {"name" => "太郎", "age" => 20}
puts person["name"] # 太郎
puts person["age"] # 20

存在しないキーを指定すると、nilが返されます。

puts person["height"] # nil

シンボルをキーとしたハッシュ

Rubyでは、文字列の代わりにシンボルをハッシュのキーとして使うことが一般的です。シンボルはコロン(:)で始まる特別な値で、文字列よりも効率的に処理できるという特徴があります。

従来の記法

シンボルをキーとして使う従来の記法は次のようになります。

person = {:name => "太郎", :age => 20}
puts person[:name] # 太郎
puts person[:age] # 20

新しい記法(Ruby 1.9以降)

Ruby 1.9以降では、シンボルをキーとする場合の省略記法が導入されました。この記法ではロケット演算子(=>)を使わず、キーの後にコロンを付ける形になります。

# シンボルをキーとして使う(新しい書き方)
person = {
name: "太郎",
age: 20
}
puts person[:name] # 太郎
puts person[:age] # 20

この書き方は見た目がすっきりしているため、現在のRubyでは広く使われています。

キーの指定に注意

新しい記法で作成したハッシュでも、値を取り出す際はシンボルを使う必要があります。

person = {name: "太郎", age: 20}
puts person[:name] # 太郎
puts person["name"] # nil (文字列でキーを指定するとnilが返る)

ハッシュを作成するときに使用した形式(この場合はname:)と、値を取り出すときに使用する形式(この場合は:name)が異なることに注意しましょう。

ハッシュの実用例

ハッシュは様々な場面で活用できます。例えば、ユーザー情報の管理、設定値の保存、データの集計などに適しています。

住所録の例

address_book = {
"山田太郎": {
email: "yamada@example.com",
phone: "090-1234-5678",
address: "東京都渋谷区"
},
"鈴木花子": {
email: "suzuki@example.com",
phone: "080-8765-4321",
address: "大阪府大阪市"
}
}
puts address_book[:"山田太郎"][:email] # yamada@example.com

このように、ハッシュの値として別のハッシュを設定することもできます。これにより、階層的なデータ構造を表現できます。

まとめ

本章では、Rubyのハッシュについて学びました。以下の内容を理解できたことと思います。

  • ハッシュはキーと値のペアを管理できる便利なデータ構造
  • 波括弧{}を使ってハッシュを作成し、キーと値の間にはロケット演算子=>を使う
  • 空のハッシュから始めて、後からキーと値を追加することもできる
  • シンボルをキーとして使うと、より効率的なコードになる
  • Ruby 1.9以降では、シンボルキーに対する省略記法(name: "値")が使える
  • ハッシュから値を取り出すには、ハッシュ名の後に角括弧[]でキーを指定する

ハッシュは配列と並んでRubyの基本的なデータ構造の一つです。名前(キー)と値をペアで管理できるという特性を活かし、より分かりやすいコードを書いていきましょう。

このセクションは有料サブスクリプションへの登録、またはログインが必要です。完全なコンテンツにアクセスするには、料金ページ(/pricing)をご覧ください。購入済みの場合は、ログインしてください。

Starterプランでより詳しく学習

この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。

作成者:とまだ
Previous
配列の要素を追加・削除しよう