【Ruby入門】Hash(ハッシュ)の基礎文法【コロン=シンボル】

こんにちは! フリーエンジニアの長瀬です。

みなさんはHash(ハッシュ)を使いこなしていますか?

この記事では、ハッシュの使い方についてまず、コロンの正体がシンボルであることを説明した後、Rubyで使われるハッシュについて基礎文法を網羅しました。

コロンを使った表記は珍しいので、初めは違和感があると思いますが、しっかりマスターして、できるRubyistに一歩前進しましょう。

コロンとは

コロンの意味

「:」コロンはRubyにおいて、そのオブジェクトがシンボルであることを明示するための記号です。

例えばRubyを勉強しているかたなら、上記のようなコロンのついている文字を見かけて、なんで:(コロン)がくっついているんだ気持ち悪い!と一度は思ったことがあると思います。

この:(コロン)をつけて表現すると、Rubyはシンボルとしてそのオブジェクトを扱います。

シンボルを使う理由

「別にシンボルなんてものがなくても、文字列だけでいいじゃないか」と思った方も多いのではないでしょうか?

しかし、実はシンボルを使うと文字列で普通に定義した時と比べて、少しだけ処理を高速化することができるからです。

まずシンボルはRuby内部では数値として扱われるので、文字列と比べればメモリサイズが軽くなります。

さらに文字列は定義するごとに新しいオブジェクトを生成しますが、シンボルはただ1つしか生成されず、その後呼び出したときはすべてその1つから値を参照します。

つまり、1つのオブジェクトだけで済むのでメモリを節約できます。

例えば、さきほどの例にあった:nameは表示の上では:nameですが、Rubyは:nameのことを数字だと思って扱っています。

あくまでも、イメージですが:name=3898 :Ruby=2232は表示の上では文字列です。

けれど、Rubyは3898,2232の数字にしか興味がないのです。

少し例が悪いですが、それは囚人番号のようなものです。

そうです囚人番号で呼べば、看守(Ruby)は何百人もの囚人の名前を覚える必要がない分、楽ができるというわけです。

Rubyは人間に比べれば記憶力がいいので、何百人であろうと名前を覚えることができますが番号を使った方がはるかに楽なことがわかります。

また囚人番号の例を使えば、シンボルのオブジェクトがただ1つだけ生成されるということも理解しやすいです。
そうです、現実でも同じ人間は2人存在しませんよね?

というわけで同じように、シンボルも重複して生成されないのです。

では、そんなシンボルを使ったハッシュの基礎文法を学んでいきましょう。

シンボルについてはこちらでまとめられているので参考にしてみてください。

【Ruby入門】コロン記号の意味とシンボルのやさしいまとめ!
更新日 : 2017年12月20日

ハッシュの基本形(リテラル)

ハッシュは、ブレース「{}」で囲み、カンマ「,」区切りで記述します。

キーと値のペアを「=>」で関連づけます。

キーと値には、数値や文字列を使うことができます。

ハッシュの基本的な使い方

値の取得

値の追加

値の更新

値の削除

要素数の取得

ハッシュでよく使うメソッド


【Ruby入門】sortの使い方まとめ 【to_hash sort_by】
更新日 : 2019年1月7日

【Ruby入門】findメソッドの使い方まとめ【ハッシュ 参照渡し】
更新日 : 2018年6月15日

【Ruby】Array(配列)の基礎からさまざまな使い方まで徹底解説!
更新日 : 2018年12月26日

逆引き!RubyHash便利メソッドまとめ【each/map/sort/key/merge】
更新日 : 2016年10月18日

参考書籍

たのしいRuby 第5版


ハッシュの作成方法、操作方法をはじめ、Hashクラスの基本的な使い方が解説されています。

また、応用問題まであるので使い方の練習をすることもできます。

パーフェクトRuby (PERFECT SERIES 6)


こちらもHashの作成方法、操作方法などについて解説されていますが、大型本なので豊富なサンプルコードをもとに解説されています。

より理解を深めたい場合に参考になりました。

侍編集部のおすすめ

侍編集部では、入門・中級・上級にレベル分けをしてRubyの書籍を紹介しています。

自分のレベルにあった書籍がきっと見つかるので、参考にしてみてください。

まとめ

いかがでしたでしょうか?

この記事では、コロンがシンボルだということが判明した後に、ハッシュの基本文法を解説しました。

この記事を読んだ方が少しでもコロン(シンボル)の違和感を解消できれば、ライターとして幸いです。

シンポルを上手に使いこなせるようになると、メモリを節約できるようになるのでぜひマスターしておいてください。

もしシンポルの意味やハッシュの基本文法について忘れてしまったらこの記事を確認してくださいね!

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a1
LINEで送る
Pocket

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説