出典:Robert Risz,
あなたは「ハッシュ(hash)」をきちんと理解していますか?
rubyで使われるハッシュは、開発をしていく上で必ず使われるので、しっかりと理解して説明できなければ【初心者の壁】を超えることはできません。
今回はプログラミングスクール【テックキャンプ プログラミング教養】講師として何百回とrubyに関する解説をしてきた筆者が、分かりやすく簡単にrubyのハッシュについて説明いたします。
各章の終わりにはキーワードをオレンジ色で表示しているので、大まかに理解したい方はオレンジ色のみを確認頂いてもいいかと思います。
※本記事は、プログラミングスクール【テックキャンプ プログラミング教養】のWebアプリケーションコースで学ぶ内容をもとに執筆しております。
この記事の目次
ハッシュとは?
ハッシュの言葉の意味や関連するキーワードを紹介していきます。
ハッシュオブジェクト
ハッシュオブジェクト(略称:ハッシュ)はオブジェクトを複数保管できるオブジェクトです。
ハッシュオブジェクトは、自身の中にデータとそれに対応するキーのセットを所持することができます。
キーバリューストア
ハッシュのように、保存したいデータ(バリュー)とそれに対応する標識(キー)を対応させてペアで保存する方式のことをキーバリューストアといいます。
標識であるキーを指定すればそれに対応するデータを取り出すことが可能です。
まとめると以下のようになります。まずは、下記のまとめを覚えてしまいましょう。
・ハッシュは1つの変数で複数のデータを持つことのできるオブジェクト
・ハッシュはデータとそれに対応するキーをもっている
ハッシュオブジェクトの変数を作る
hash = {}
ハッシュは{} (中括弧)を使って記述します。
また左辺のhashは変数名であり、任意の名前を定義できます。
上の書き方では何もデータを持っていない空のハッシュが生成されます。
ちなみに生成のときからデータを持つこともできます。
以下の書き方でキーと値を持った状態のハッシュオブジェクトを生成できます。
{キー1 => 値1, キー2 => 値2, …}
hash1 = {"title" => "るろうに剣心"} hash2 = {:title => "時をかける少女"} hash3 = {title: "君に届け"} puts hash1 puts hash2 puts hash3
hash1とhash2はどちらも「title」というキーでハッシュを生成しています。
hash1はキーを文字列”title”で指定しています。
一方、hash2はキーが:titleとなっていますね。
これはシンボルと呼ばれるオブジェクトです。
また、hash3はhash2と同義ですが、コードの量が少なく好んで使われるので覚えておきましょう。
シンボルオブジェクト
シンボルオブジェクト(略称:シンボル)とは今回のハッシュのキーのような名前を識別するためのラベルです。
基本的に先頭に接頭語:をつけます。基本的には文字列と同じように扱えます。
ハッシュオブジェクトのキーは文字列オブジェクト、シンボルオブジェクトのどちらを使っても問題ないです。
こちらの章をまとめると下記が重要なポイントです。
・ハッシュオブジェクトは{}を使って生成する
・シンボルオブジェクトは名前を識別するためのラベルで基本は文字列と同様に扱える
・ハッシュオブジェクトのキーには文字列、もしくはシンボルが使える
文字列とシンボルのどちらを使えば良いの?
結論から言うとハッシュではシンボルを使いましょう。
文字列とシンボルはほとんど特性は同じです。ハッシュのキーも文字列とシンボルの両方が使えます。
# どちらも同じ hash1 = {:title => "時をかける少女"} hash2 = {"title" => "時をかける少女"}
しかし、ハッシュで使う場合に実行の速度がシンボルの方が速いため、ハッシュのキーにはシンボルの使用が推奨されています(最近は実行速度にそこまで差はなくなりました)。
また、キーがシンボルのハッシュの場合は省略してかけるので、コード量も少なくなり便利です。以上の理由より、キーにはハッシュを使うのが主流です。
・ハッシュのキーとして使うならシンボルの方が実行速度が早い
ハッシュオブジェクトから値を取得する
では、ハッシュの持っている値を取得してみましょう。取得の際に使うのがその値のキーです。
以下の書き方で取得ができます。
ハッシュオブジェクト[欲しい値のキー]
具体例を見てみましょう。
hash = {title: "時をかける少女"} puts hash[:title]
このコードをターミナルで実行すると “時をかける少女” という値を取得できます。
ここまでで重要なことは1つです。以下は必ず押さえましょう。
・ハッシュオブジェクトに値を追加するときは、対応するキーを指定して代入する。ハッシュオブジェクト[キー] = 値
ハッシュで情報をまとめよう
具体的にハッシュの中に要素を追加してみます。
まず空のハッシュを宣言することで、後からハッシュの要素を追加出来るようになります。
# 空のハッシュの宣言 post = {} #以下で要素の追加 post[:genre] = "マンガ" post[:title] = "るろうに剣心" post[:review] = "面白い!" #出力 puts post => {:genre=>"マンガ", :title=>"るろうに剣心", :review=>"面白い"}
また、以下のように定義したハッシュを使うことが出来ます。
puts post[:genre] => "マンガ" puts post[:title] => "るろうに剣心" puts post[:review] => "面白い!"
まとめ
いかがでしょうか?この記事の内容をしっかり理解して使いこなすことができれば、あなたもハッシュに関する基礎知識をマスターできたといえるでしょう。
引き続きプログラミングの学習を継続的に頑張っていきましょう。
こちらの記事もご参考ください。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。