ハッシュの作成と基本操作
学習の目標
本章では、以下の内容を学びます。
- ハッシュの概念と基本的な仕組みを理解する
- ハッシュの作成方法と使い方を習得する
- シンボルをキーとしたハッシュの記法を学ぶ
- ハッシュから値を取り出す方法をマスターする
はじめに
これまでの学習で、配列を使って複数の値を管理する方法を学びました。配列では各要素に順番(インデックス)でアクセスしていましたが、実際のプログラミングでは「名前」と「値」をセットで管理したい場合が多くあります。
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"] # 20puts 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の基本的なデータ構造の一つです。名前(キー)と値をペアで管理できるという特性を活かし、より分かりやすいコードを書いていきましょう。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。