体調不良のため長らくお休みしていました、過去をさかのぼって更新していきます。

ドットインストール Ruby入門

[PR] 記事内には広告が含まれています。

Vagrant UPがようやくなんとか復旧したので勉強を開始。

ローカル環境

  • PowerShell
    cd MyVagrant
    cd MyCentOS
    vagrant up

     

  • Putty
    MyCentOS open
    login as vagrant
    pass vagrant

     

[vagrant@localhost ruby_lessons]$ ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
[vagrant@localhost ruby_lessons]$

Rubyがインストールされていると使える便利なコマンド

  • irb インタラクティブにルビーを操作していくことができる

[vagrant@localhost ruby_lessons]$ irb
irb(main):001:0> p "hello"
"hello"
=> "hello"
irb(main):002:0> exit

exitで抜ける

  • ri 知りたい命令やオブジェクトのドキュメントを見ることができる

例も豊富なのでわからないときがあれば見ると良い。

qで抜ける

02 はじめてのRubyプログラム

403 Forbidden

コマンドラインは見通しが悪いのでファイル転送ツール(Cyberduck)で操作していく。

実行はPuttyから

[vagrant@localhost ruby_lessons]$ ruby hello.rb
hello world[vagrant@localhost ruby_lessons]$

ruby hello.rb 命令 ファイル名

print "hello world"

print 渡したオブジェクトを文字列にして表示させる

print “hello world”;
末尾セミコロンも使えるが、改行があれば省略できるので、1行に複数の命令を書きたいとき以外には使わない

# コメント
パウンドキーを頭につける

=begin
ここの中はコメント
=end
一気に書きたい場合は =begin =endで囲う

  • puts “hello world”
    +改行がつく

     

  • p “hello world”
    デバッグ用、オブジェクトの種類がわかりやすいように表示してくれる(””つけるなど)

03 変数、定数を使ってみよう

403 Forbidden

変数

変数はいきなり使い始めることができるが
英子文字か_アンダーバーで始めなければいけない

msg = "hello world"
puts msg

変数には何回でも値を割り当てることができる

msg = "hello world"
puts msg
msg = "hello world again"
puts msg

[vagrant@localhost ruby_lessons]$ ruby hello.rb
hello world
hello world again

定数

プログラム中で値を書き換えてほしくないもの

最初が英大文字
慣習的に全部大文字にする場合が多い

VERSION = 1.1
puts VERSION
VERSION = 1.2
puts VERSION

とした場合

[vagrant@localhost ruby_lessons]$ ruby hello.rb
1.1
hello.rb:9: warning: already initialized constant VERSION
hello.rb:7: warning: previous definition of VERSION was here
1.2

rubyは警告は出るが値は書き変わってしまう点に注意!

04 オブジェクトを理解しよう

Rubyは全ての値がオブジェクトになっている

オブジェクト=便利な命令をいろいろ持っているデータ型

例)
“Hello World”.length で文字数を返してくれる
“Hello World”.reverse 逆順に並べた文字列を返す

1.1.round 四捨五入して1を返す
1.1.floor 小数点以下を切り捨て

オブジェクトの種類によって命令がいろいろある
命令=メソッド

どのメソッドが使えるかは、値がどの種類のオブジェクトに属しているかによって変わる

オブジェクトの種類=クラス
値=インスタンス

String Class 文字列
Float Class 浮動小数点

クラスの扱に慣れることによって、思った通りのプログラミングができるようになる

05 数値オブジェクトを使おう

403 Forbidden

数値はそのまま記入
32
4.8

オブジェクトがどのクラスに属していて
どんなメソッドを持っているか調べる

.class
.methods
というメソッドを使う

floatクラスで、一覧のメソッドが使える

代表的なメソッド

四則演算 + – * / % **(べき乗)

割り算の結果を小数点にしたい場合は、一方を浮動小数点にする
p 10.0 / 3

有理数 分数を扱う場合
p Rational(2,5)
五分の二

p Rational(2,5) + Rational(3,4)
p 2/5r + 3/4r

でもOK

[vagrant@localhost ruby_lessons]$ ruby hello.rb
13
30
4.8
3
1
3.3333333333333335
(23/20)
(23/20)

p 52.6.round 四捨五入
p 52.6.floor 切り捨て
p 52.6.ceil(シール) 切り上げ

06 文字列オブジェクトを使おう

403 Forbidden

ダブルクォーテーションまたは
シングルクォーテーションでくくる

”” 特殊文字が使える、式展開ができる

\n 改行
\t タブ

puts “hello \n wor\tld”
puts ‘hello \n wor\tld’

式展開

name = “taguchi”
puts “hello #{name}”


hello taguchi

文字列オブジェクトでよく使うメソッド

+連結
*繰り返し

puts “hello” + “world”
puts “hello” * 10


helloworld
hellohellohellohellohellohellohellohellohellohello

07 ?や!がついたメソッドを使おう

403 Forbidden

文字列オブジェクトに使えるメソッドの続き


  • upcase 文字を大文字にしたものを返すだけ
    upcase! 文字を大文字にしたものを返しつつ、元の文字列も大文字で書き換える

!がついたメソッドはおおもとの文字を書き換えてしまうという意味で『破壊的なメソッド』と呼ぶ

name = “taguchi”
puts name.upcase
puts name

puts name.upcase!
puts name

TAGUCHI
taguchi
TAGUCHI
TAGUCHI

他にも!のついたメソッド
downcase 全部小文字にする
reverse 文字順を逆にする
など

  • ? 真偽値 true or false を返す

empty? 空かどうか
include? 特定の文字が含まれているか

name = “taguchi”
p name.empty?
p name.include?(“g”)

false
true

08 配列オブジェクトを使おう

403 Forbidden

colors = [“red”,”blue”,”yellow”]

p colors[0] 添え字

p colors[-1]末尾
p colors[-2]末尾から2番目
p colors[0..2]0~2まで
p colors[0…2]0~2の直前まで
p colors[範囲外の数字] nilというオブジェクトが返る

nil 何もないという特殊なオブジェクト

要素の書き換え

colors = [“red”,”blue”,”yellow”]
olors[0] = “pink”
colors[1..2] = [“white”.”black”]

要素を追加する

colors.push(“gold”)
または
colors << “silver”

その他のメソッド

p colors.size 要素の数を示す
p colors.sort 並べ替え

09 ハッシュオブジェクトを使おう

403 Forbidden

ハッシュ
key / value
ペアにしてまとめておくことができるオブジェクト

scores = {“taguchi” => 200, “fkoji” => 400}

keyは文字列でも数値でもなんでもよいが、
『シンボルオブジェクト』が良く使われる。

:taguthi

文字列を使うよりより高速

scores = {:taguchi => 200, :fkoji => 400}

さらに簡単に

scores = {taguchi: 200, fkoji: 400}

↑こう書いても良い

ハッシュ要素へのアクセス

p scores[:taguthi]

ハッシュの値の書き換え

scores[:jkoji] = 600

さらに便利なメソッド

p scores.size 要素の数
p scores.keys キーの一覧
p scores.values 値の一覧
p scores.has_key?(:taguchi) そのキーがあるかどうか

2
[:taguchi, :fkoji]
[200, 400]
true