Rubyの基礎知識

Rubyとは

Rubyとは

手軽なオブジェクト指向プログラミングを実現するための種々の機能を持つオブジェクト指向スクリプト言語

Rubyの特徴

  • シンプルな文法
  • 普通のオブジェクト指向機能(クラス、メソッドコールなど)
  • 特殊なオブジェクト指向機能(Mixin、特異メソッドなど)
  • 演算子オーバーロード
  • 例外処理機能
  • イテレータとクロージャ
  • ガーベージコレクタ
  • ダイナミックローディング(アーキテクチャによる)
  • 多くのUNIX上で動くだけでなく、DOSやWindows、Mac、BeOSなどの上でも動く

変数

特徴

  • 変数を使う際には、明示的に宣言する必要はない
  • 変数名に使える文字は、半角のアルファベットと数字、アンダースコア(_)
  • 変数名は必ずアルファベットの小文字で開始
  • 改行が文の終わり

変数の種類

変数名説明
foobarローカル変数
$foobarグローバル変数
@foobarインスタンス変数
@@foobarクラス変数
FOOBAR定数

参考サイト

Rubyの便利なメソッド

配列

配列をランダムに取り出す
[:aaa, :bbb, :ccc].rand
配列を分割
[1, 2, 3, 4, 5].split(3)
配列をグループ化
%w(1 2 3 4 5).in_groups_of(4){ |g| p g }
特定のキーからハッシュを作る
User.find(:all).index_by(&:login)

ハッシュ

ハッシュの差を取得
{:one => 1, :two => 2, :three => 3 }.diff(:one => 0, :two => 2, :four => 4)
ハッシュから特定の値を取り除く
hash.except(:controller, :action)
ハッシュから特定の値だけど取り出す
hash.slice(:title, :body)
元のハッシュの内容を優先してマージ
hash.reverse_merge(:template => "entries/list")

数値と文字列

特徴

  • 数値や文字列はすべてオブジェクトとして扱われる
  • 変数の型は自動的に変換されるので意識する必要はない

数値

  • 足し算やかけ算の結果、Fixnumの値を超えた場合は、自動的にBignumに変換
  • 整数値と小数値を計算した場合は、自動的にFloatに変換
  • 数値を表すオブジェクトのクラスは3つ
クラス説明
Fixnum変数に整数を代入
Bignum非常に大きな整数を代入
Float小数点付きの数字を代入

文字列

  • 文字列をシングルクォート(')やダブルクォート(")で囲むと、オブジェクトができる
  • 「+」で連結
  • ダブルクォート内の、「#{}」は、式として評価された値が展開
  • ダブルクォート内の特殊文字
エスケープシーケンス説明
\aベル
\bバックスペース
\eエスケープ
\f改行ページ
\n改行
\r復帰
\t水平タブ
\v垂直タブ
\"ダブルクォート(")
\'シングルクォート(')
\\¥マーク

数値と文字列の変換

数字から文字列
.to_s
文字列から数字
.to_i

配列

配列とは

インデックスを使って、複数のオブジェクトへの参照をまとめて管理することができるオブジェクト

メソッド

sampleメソッド
使い方
配列.sample(個数)
説明

配列から、ランダムにn個の要素を取り出す。Ruby1.9以降

[1, 2, 3, 4, 5, 6, 7].sample(2)
# [3, 1]
keep_ifメソッド
使い方
配列.keep_if {|arr| 条件式 }
説明

配列から、条件を満たさない要素を削除。Ruby1.9以降

["ipad", "iPhone", "ipod", "iTunes", "Android"].keep_if {|i| i =~ /^i/ }
# ["ipad", "iPhone", "ipod", "iTunes"]
repeated_combinationメソッド
使い方
配列.repeated_combination(個数) {|arr| block }
説明

配列から、任意の○個の重複の組み合わせを列挙する。Ruby1.9以降

repeated_permutationメソッド
使い方
配列.repeated_permutation(個数) {|arr| block }
説明

配列から、任意の○個からなる重複順列を列挙する。Ruby1.9以降

rotateメソッド
使い方
配列.rotate(個数)
説明

配列から、要素を回転させるようにして要素をずらした配列。Ruby1.9以降

ハッシュ

ハッシュとは

キーを使って、複数のオブジェクトへの参照をまとめて管理することができるオブジェクト

条件分岐

条件分岐とは

条件によって実行する処置を分ける

比較演算子

演算子説明
==等しい
===等しい
!=等しくない
>より大きい
>=等しいか、より大きい
<より小さい
<=等しいか、より小さい
<=>小さいときはー1、等しいときは0、大きいときは1
=~世紀表現のパターンマッチ(一致)
!~世紀表現のパターンマッチ(一致しない)

論理演算子

演算子説明
&&かつ
andかつ
| |または
orまたは
!ではない
notではない

if

if 条件式1 (then)
elsif 条件式2 (then)
else
end

unless

unless 条件式1 (then)
else
end

三項演算子

条件1 ? 正しいとき : 正しくないとき

case

case
when 条件式1 (then)
when 条件式2 (then)
else
end
case 変数
when 式1 (then)
when 式2 (then)
else
end

while

whike 条件式 do
end

ブロックとイテレータ

イテレータ

繰り返し処理に使うメソッド

数字.time do |i|
end

each

配列やハッシュの要素数だけ繰り返す

配列.each do |i|
end
ハッシュ.each do |key, value|
end

例外処理

begin
  例外が発生する可能性のあるプログラム
rescue
  例外の発生後に処理するプログラム
else
  例外が発生しなかった場合に処理するプログラム
end
def メソッド名(引数)
  例外が発生する可能性のあるプログラム
rescue
  例外の発生後に処理するプログラム
else
  例外が発生しなかった場合に処理するプログラム
end

オブジェクト

オブジェクトとは

データと手続きをまとめたもの

クラスとインスタンス

  • クラスはオブジェクトの設計図
  • インスタンスは、設計図に基づいて作成されたオブジェクト

オブジェクトの作成

クラス.new

メソッドの呼び出し制限

レベル説明
publicメソッドはどこからでも呼び出せる
protected同じクラスやサブクラス内のメソッドの中だけ呼び出せる
private同じクラスやサブクラス内のメソッドの中だけ呼び出せる

シンボル

シンボルとは

プログラム中のどこでも同一のオブジェクトを名前で表せるようにしたもの

:シンボル名

シンボルと文字列の使い分け

Railsでのシンボルと文字列の個人的な使い分け

  • コントローラやアクションの指定は文字列
  • 上記以外で識別子的に使う場合はシンボル
  • それ以外は文字列

正規表現

使い方

/○○/で囲んで記述

オプション

オプション説明
i大文字小文字の区別しない
o一度だけ式展開を行う
x#をコメントと見なす
m複数行モード