初心者向けRuby構文リファレンス|忘れたときにすぐ見返せる基本文法ガイド
これはRubyの構文リファレンスです。
Rubyの学習では、覚えるべきことが多くて圧倒されがちです。
そこで、そんなあなたのためにこの構文リファレンスをまとめました!
記憶をさっと呼び戻し、Rubyプログラムを書くために必要な知識を手早く復習できます。
それでは、楽しく学びましょう!
目次
- 1. 文字列(String)
- 2. ハッシュ(Hash)
- 3. シンボル(Symbol)
- 4. nil
- 5. 配列(Array)
- 6. Enumerable
- 7. ファイル(File)
- 8. 正規表現(Regular Expression)
- 9. Ruby GemsとBundler
- 10. クラスとオブジェクト指向プログラミング
- 11. 変数の種類
- 12. %w、%i、%q、%r、%x
- 13. 括弧の使い方
- 14. コード例
- 15. まとめ
文字列(String)
文字列とは、2つのダブルクォート("")で囲まれた文字の並びのことです。テキストやデータを表現するために使われます。
構文例:
"I like chocolate"
シングルクォート('')を使うこともできます。
'Ruby is awesome'
重要なメソッド:
- size
- empty?
- include?
- gsub
- split
ハッシュ(Hash)
ハッシュ({})は、キーと値のペア(a => b)でデータを管理するデータ構造です。辞書のように使えます。ハッシュの要素にはキーを使ってアクセスでき、キーは一意(ユニーク)である必要があります。
例:
# 作成
h = { a: 1, b: 2, c: 3 }
# アクセス
h[:a]
# 値の設定
h[:test] = 10
新しいハッシュを作るときは{}(波括弧)を使いますが、要素にアクセスするときは常に[](角括弧)を使う点に注意してください。
このシンプルな違いで多くの初心者がつまずくので、しっかり覚えておきましょう。
文字列キーのハッシュ:
h = { "a" => 1, "b" => 2, "c" => 3 }
重要なメソッド:
- key?
- fetch
- new(デフォルト値の設定用)
- merge
シンボル(Symbol)
シンボルは識別用に使われる静的な文字列で、代表的な使用例がハッシュのキーです。必ずコロン(:bacon)から始まります。シンボルは中身(個々の文字)として使われることはありません。
ハッシュの波括弧({})の中で使うときは、コロンの位置が左右逆になります。
例:
{ abc: 1 }
これはシンボル:abcをキーとしたハッシュです。
nil
nilはシングルトンクラス(インスタンスが1つしか存在しない)で、「デフォルト値」や「見つからなかった」といった状態を表す値です。
条件式の中では「false」として評価されます。
配列(Array)
配列はオブジェクトのリストを表現するためのオブジェクトです。配列には他の配列を含め、あらゆる種類のオブジェクトを格納できます(a = [1, "abc", []])。
配列の要素にはインデックス(a[0])でアクセスし、ネストした配列にはa[0][0]のようにアクセスします。
例:
a = [] a << 10 a << 20 a << 30 a # [10, 20, 30]
重要なメソッド:
- size
- empty?
- push / pop
- join
- flatten
Enumerable
Enumerableは、Array・Range・Hashなどeachメソッドを実装しているあらゆるクラスの要素を繰り返し処理するためのRubyモジュールです。
重要なメソッド:
- map
- select
- inject
ファイル(File)
Fileは、Rubyでファイルを扱うためのクラスです。読み込み、書き込みはもちろん、ファイルサイズのような情報の取得まで行えます。
例:
File.read("/tmp/test.txt")
重要なメソッド:
- read
- write
正規表現(Regular Expression)
文字列の中からパターンや部分文字列、特定のものを見つけたいなら、正規表現がぴったりです。
メールアドレスや電話番号のバリデーション、テキストからの情報抽出などに活用できます。
例:
"aaaa1".match?(/[0-9]/) # true "".match?(/[0-9]/) # false
Ruby GemsとBundler
Ruby gems(gem)とは、Rubyプログラムで使うためにダウンロードできるパッケージのことです。
これらのパッケージは新しい機能を提供してくれます。
たとえばRailsでは、Devise gemで認証機能を、Kaminari gemでページネーション機能を簡単に追加できます。
クラスとオブジェクト指向プログラミング
Rubyはオブジェクト指向プログラミング言語です。すべてをオブジェクトとして捉えます。オブジェクトはその設計図である「クラス」から生成されます。
オブジェクトは「知っていること(状態)」と「できること(振る舞い)」を持ちます。オブジェクトに何かをさせるには、メソッドを使います。
重要なメソッド:
- class
- include / extend
変数の種類
変数とはオブジェクトにつけられたラベルで、これを使ってオブジェクトにアクセスします。変数をオブジェクトに関連付けることを「変数への代入」と呼びます。
例:
a = 1
Rubyではいくつかの種類の変数を使い分けます。
種類の一覧:
- ローカル変数(
something) - インスタンス変数(
@something) - 定数(
Something/SOMETHING) - グローバル変数(
$something)
主な違いは、どこからアクセスできるか(スコープ)という点です。
%w、%i、%q、%r、%x
パーセント記号(%)を使った特別な構文でオブジェクトを作成する方法があります。これは作業を省力化できるショートカットです。
Rubyのコードで%wを見かけたら、もう意味が分かりますね!
例:
array_of_strings = %w(apple orange coconut) array_of_symbols = %i(a b c) string = %q(things) regular_expression = %r([0-9])
- %w … 文字列の配列を作成
- %i … シンボルの配列を作成
- %q … クォートなしで文字列を作成
なお、パーセント記号(%)は剰余(モジュロ)演算子としても使われるので、混同しないように注意しましょう。
括弧の使い方
Rubyでは括弧やセミコロンは必須ではありませんが、使うこともできます。
基本的なルール:
- 引数なしのメソッドを定義するときは括弧を使わない →
def foo - 引数があるメソッドでは括弧を使う →
def foo(a, b, c) - 演算の優先順位を変えたいときは括弧を使う →
(a.size + b.size) * 2
括弧は可読性を高めるためにも、演算の順序を制御するためにも使われます。
コード例
よく使われるRuby構文の例を紹介します。
メソッド定義
def backup_database # メソッド本体 end
クラス定義
class Fruit # メソッド end
三項演算子
true ? "yes" : "no"
文字列補間
fruit = "orange"
puts "I have an #{fruit}. Would you like a slice of it?"
eachとブロック
[1,2,3].each do |n| puts n end
If / Else
n = 20 if n > 1 puts "Greater than 1" else puts "Less than 1" end
Case文
case 20 when 1..20 puts "Between 1 & 20" when 21..40 puts "Between 21 & 40" else puts "Not within a valid range" end
ここで1..20はRangeオブジェクトです。
まとめ
この記事では、Rubyプログラムを書くために必要な基本構文を学びました。繰り返し見返して、自然と身につくまで復習しましょう。
ご覧いただきありがとうございました。🙂
-
Rubyで学ぶNLP:Nグラム分析の楽しさと実践
大量のテキストデータが手元にあり、そこから何らかの意味を抽出したい——そんな場面に遭遇したことはありませんか? そんなときにまず試したいのが、テキストをNグラム(n-gram)に分割するという手法です。 Nグラムとは何か? Wikipediaには次のように定義されています。 計算言語学および確率論の分野において、n-gramとは与えられたテキスト列から取り出した、n個の連続した要素からなる列のことである。—— Wikipedia 具体例を見てみましょう。 Hello there, how are you? というフレーズを例にとると、ユニグラム(1要素のNグラム)は Hello, there,
-
【初心者向け】Androidブロードキャストレシーバーの基礎と実装入門
安定したインターネット接続が不可欠なアプリケーションを開発しているとしましょう。ネットワーク接続の状態が変化した際に、そのことをアプリへ通知させたい——そんなとき、どうすればよいのでしょうか?一つの解決策として、常時インターネット接続を監視し続けるサービスを実装する方法が考えられます。しかし、この実装にはさまざまな問題があるため、検討する価値すらありません。この問題に対する正しい答えがブロードキャストレシーバー(Broadcast Receiver)です。ブロードキャストレシーバーは、指定したイベントの変化を常にリッスンしてくれます。ブロードキャストレシーバーは、アプリケーションの状態に関わら