このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

web帳

記事詳細

2013.12.12

Ruby 基本まとめ

ざっとRubyに関する基礎的な部分をまとめてみました。

Ruby基本

ruby実行

[code]ruby ファイル名[/code]

 irb

irb(Interactive Ruby)起動

[code]irb[/code]

irb(Interactive Ruby)終了

[code]exit[/code]

表示メソッド

[code]print [/code]
[code]puts[/code]

数値、文字列変換

to string(文字列へ)

[code].to_s[/code]

to integer (数値へ)

[code].to_i[/code]

to flort(浮動小数点へ)

[code].to_f[/code]

オブジェクト

オブジェクトのクラスを調べる

[code].class[/code]

オブジェクトのスーパークラスを調べる 

[code].superclass[/code]

インスタンスを調べる

[code].instance_of?(String)[/code]
[code].instance_of?(Fixnum)[/code]

空かどうかを調べる 

[code].empty?[/code]

オブジェクトIDを調べる

[code].object_id[/code]

オブジェクトをコピー

[code].clone[/code]

オブジェクトIDが同じか 

[code].equal?[/code]

中身を比較

[code] == [/code]

Rubyの変数

グローバル変数 $foo
インスタンス変数 @foo
クラス変数 @@foo
ローカル変数 foo
rubyの予約語
BEGIN END alias and begin
break case class def defined?
do else elseif end ensure
false for if in module
next nil not or redo
rescue retry return self super
then true undef unless until
when while yield

定数は全て大文字

[code]ADMIN[/code]

制御構造

if文

[code]if 条件 then
  条件が真の時に実行する処理
end[/code]

[code]if 条件 then
  条件が真の時に実行する処理
else
  条件が偽の時に実行する処理
end [/code]

unless文

[code]unless 条件 then
  条件が偽の時に実行する処理
else
  条件が真の時に実行する処理
end[/code]

if 条件1 && 条件2 then

 条件が真の時に実行する処理

end

case文

case 比較するオブジェクト

[code]when 値1 then
  値1と一致した時に実行する処理
when 値2 then
値2と一致した時に実行する処理
when 値3 then
 値3と一致した時に実行する処理
else
どの値にも一致しないときに実行する処理
end[/code]

繰り返し処理

[code]while文
while 条件 do
  条件が”真”の時に繰り返す処理
end[/code]

sleep

指定時間待機

until文

[code]until 条件 do
  条件が”偽”の時に繰り返す処理
end[/code]

for文

[code]for 変数 in オブジェクト do
繰り返し処理
end[/code]

timesメソッド で指定可数繰り返し

[code]整数.times do |変数|
  繰り返す処理
end[/code]

timesメソッド他の記述

[code]整数.times { |変数|
  繰り返す処理
}[/code]

upto,down toメソッド
times integer
upto integer
downto integer
step Numeric

uptoメソッド

[code]整数.upto(max) do |変数|
  繰り返す処理
end[/code]

downtoメソッド

[code]整数.downto(min) do |変数|
  繰り返す処理
end[/code]

stepメソッド

[code]整数.step(limit, step) do |変数|
  繰り返す処理
end[/code]

eachメソッド

[code]オブジェクト.each do |変数|
  繰り返す処理
end[/code]

ループ終了

break

example

[code]dollar = 102
i = 1
loop {
  rate = i * dollar
  if rate >= 5000
    break
  end
  print i, “$ ==> “, <span style="font-family: Arial, 'Arial New', 'MS P ゴシック', sans-serif;">rate</span>, “Yen¥n"</p>
  i = i + 1
}[/code]

rubyファイルからの rubyの呼び出し

win

[code]#!C:/ruby/bin/ruby[/code]

mac

[code]#!/usr/bin/ruby[/code]

コマンドラインで実行

[code]$ ./hoge.rb[/code]

文字コード指定

[code]#!/usr/bin/ruby -Ks[/code]

EUC -Ke
Shift-JIS -Ks
UTF-8 -Ku

制御文字
¥b バックスペース
¥e エスケープ
¥f 改ページ
¥n 改行
¥r 復帰
¥s 半角スペース
¥t タブ
¥¥ ¥ 
文字列中で変数、式を使用

[code]#{ 変数 }[/code]

example

[code]who = “たかやま"
print “こんにちは、”, who, ”さん”[/code]

[code]who = “たかやま"
print “こんにちは、#{who}さん”[/code]

計算式も可能

[code]print “計算:20 × 20 = #{20*20}です” [/code]

ファイル操作

ファイル操作

[code]File.open(“ファイル名”, “モード")[/code]

読み込みのみ

File.open(“index.txt”, “r")

r 読み込み
r+ 読み込みと書き込み
w 新規に作成して書き込み
w+ 新規に作成して読み込みと書き込み
a 追加で書き込み
a+ 追加で読み込みと書き込み

[code]f = File.open(“index.txt")[/code]

まとめて読み込み

[code]f.read[/code]

標準出力

[code]print f.read[/code]

読み込み後は閉じる

[code]f.close[/code]

1行ずつ読み込み

[code]f = File.open(“index.txt”)
f.each{|line|
  print line
}
f.close[/code]

配列とハッシュ

配列

[code]foo = [][/code]

example

[code]#!/usr/bin/ruby
arr = [“web帳”, “takayama”,”boy"]
print “このサイトは”, arr[0], “です¥n”
print “作者は”, arr[1], “で¥n”
print  arr[1], “は”, arr[2], “である¥n” [/code]

[code]fruit = [“みかん”,”りんご”,”なし”,”ぶどう”,”もも"]
puts fruit [0..3]
puts fruit [1, 3] [/code]

数を調べる

[code]puts fruit.size[/code]
[code]puts fruit.length[/code]

コマンドライン引数取得

[code]ARGV[/code]

example

[code]sample.rb one two[/code]

[code]#!/usr/bin/ruby

# 1〜3番目の引数を表示
puts ARGV[0]
puts ARGV[1]
puts ARGV[2] [/code]

全ての引数を表示

[code]puts ARGV [/code]

繰り返し処理での表示

[code]ARGV .each{|arg|
puts arg
puts “**************"
} [/code]

ファイルコピー

example

[code]f1 = File.open(ARGV[0])
f2 = File.open(ARGV[1], “w")

data = f1.read
f2.print data

f1.close
f2.close [/code]

ハッシュ

連想配列

キー(key)と値(value)

キー => 値

animal = {

  “cat” => “たま”,

 “dog” => “ぽち”,

 “bird” => “とりんどる”

}

key取得

[code].keys[/code]

value取得

[code].values[/code]

フェッチで取り出す事も可能

[code].fetch[/code]

eachでの繰り返しでの取得

[code].each_key{|key|
  puts “#{key}"
}[/code]

配列のハッシュ

[code]animal = {
“dog” => [“ぽち”,”じろう”,”ごま”],
“cat” => [“たま”,”ごろう”,”ひな”]
}[/code]

ハッシュの配列

[code]student = [
{ “no” => 1, “name” => “たかやま”, “blood” => “O”},
{ “no” => 1, “name” => “たなか”, “blood” => “A”}
] [/code]

ハッシュのハッシュ

[code]band = {
“1” => {“name” => “たかやま”, “part” => “guitar”},
“2” => {“name” => “たなか”, “part” => “vocal”},
“3” => {“name” => “なかた”, “part” => “bass”}
}[/code]

正規表現

マッチするかは~(チルダ)を用いて判別

[code]正規表現オブジェクト =~ 文字列オブジェクト[/code]

[code]/^How/ =~ “How are you? "
=> 0[/code]

[code]/sad/ =~ “I am sad. "
=> 5[/code]

主なメタ文字
. 任意の1文字にマッチ
* 0回以上の繰り返しにマッチ
+ 1回以上の繰り返しにマッチ
? 0回または1回の繰り返しにマッチ
{} 指定した範囲の繰り返しにマッチ
() グループ
[] 文字クラス
^ 行頭にマッチ
$ 行末にマッチ
| いずれかにマッチ
{m} m回にマッチ
{m,} m回以上にマッチ
{m,n} m回以上,n回以下にマッチ

選択

[code]/apple|orange/[/code]

グループ化

[code]/(sing){2}/ =~ "singapplesongsingsingsong"
=> 13[/code]

後方参照

正規表現グループによる後方参照

[code]/5(.)7(.)/ =~ "123456788"
=> 4[/code]

[code]$1
=> "6"[/code]
[code]$2
=> "8"[/code]

文字クラスの主な略記法
¥w アルファベットと数字
¥W アルファベットと数字以外
¥s 空白文字
¥S 空白文字以外
¥d 数字
¥D 数字以外
¥b 単語の境界
¥B 単語の境界以外
¥A 文字列の最初
¥Z 文字列の最後
日本語の正規表現
s Shift-JIS
e EUC-JP
u UTF-8
n 文字コードなし
文字を置換

[code]文字列.sub(/パターン/,”置換文字列")[/code]

すべて置換

.gsub

[code]puts str.gsub(/ウェブ/s,”Web")[/code]

メソッド

メソッド定義

[code]def メソッド名
 処理
...
end[/code]

引数

[code]def hello who
  処理..
end[/code]

または

[code]def hello(who)
  処理..
end [/code]

クラス定義

[code]class クラス名
 クラスの定義...
endf[/code]

モジュール

モジュールはインスタンスを作れない includeしての利用となる。( Mix-in)

[code]module モジュール名
  モジュール定義
end[/code]

ライブラリの読み込み

[code]require “hogege"[/code]

以上になりますー。

  • RSSを登録する

  • follow us in feedly

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、港区六本木で活動中。

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。