slides

Ruby 入門の薄い本

を目指して書き始めました (ノω・)テヘ

〜 道半ば 〜

秒速@284km

表参道.rb #23 ~ Ruby/Railsの学び方 ~

goku.jpg


秒速@284km

goku.jpg

みなさん

こんにちは


Hello World!

# hello.rb
puts("Hello, World!")

$ ruby hello.rb
#=> Hello, World

今日 Ruby を覚えたくて来ている方 ✋


はじめての Ruby

Yugui さん著

この本で Ruby に入門しました。 およそ 200 ページという薄さで必要な内容が纏まっているスゴイ本 (Ruby 1.8, 1.9 対応)


Ruby 以前

(私の場合)


今日話すこと


前提


経験則


ではどうするか

順に見ていきます


irb

対話的実行環境

irb を用いると、その場で対話的に Ruby プログラムを実行することができます。便利。

$ irb
irb(main):001:0> 1+1
=> 2

print デバッグ

式の値をちょっと見てみたい時に、irb と共に重宝します。

p "foo"  #=> "foo"
p 123    #=> 123
p 1 == 1 #=> true

配列

必要

a = 1
b = "str"
c = [a, b, 3, "string"] #=> [1, "str", 3, "string"]

p c[0]    #=> 1
p c[1]    #=> "str"
p c[-1]   #=> "string"
p c[0..1] #=> [1, "str"]
c[0] = 9  #=> 9
c[0]      #=> 9

イテレータ

必要

foo = ["a", "b", "c"]
foo.each do |item|
  print item + " "
end
#=> a b c 

# 配列の各々の要素についてブロックを評価して、それらの評価値を纏めて新しい配列を構築します
foo.map{|f| f.upcase} #=> ["A", "B", "C"]

# &: とかググり難い
foo.map(&:upcase)

# ソート
bar = [3, 2, 5, 4, 1]
bar.sort #=> [1, 2, 3, 4, 5]

ハッシュ

必要

months = { Jan: 1, Feb: 2, Mar: 3 }
months[:Feb] #=> 2

数値

比較 演算子

必要

1 == 1
1 ~= 1
1 < 1
1 <= 1
# 宇宙船演算子
1 <=> 2 #=> -1
1 <=> 1 #=> 0
3 <=> 2 #=> 1

文字列

式展開

a = 2
"a = #{a}" #=> "a = 2"
"a + 2 = #{a + 2}" #=> "a + 2 = 4"

文字列

パーセント記法

検索して調べ辛いと思うシリーズ

%w(foo bar baz)
#=> ["foo", "bar", "baz"]

文字列

ヒアドキュメント

検索して調べ辛いと思うシリーズ

s = <<"EOS"
sample
text
hello
EOS

#=> "sample\ntext\nhello\n"

変数

必要。説明は端折ります。


演算子と優先順位


制御式

必要

if foo
  ...
elsif bar
  ...
elsif baz
  ...
else
  ...
end

unless foo
  ...
end

case や while

脱出

break, next

1.upto(3) do |i|
  next if i == 2
  loop do
    puts "break するよ"
    break
  end
  # break でここに脱出するよ
  puts i
end

例外処理

必要そう

begin
  do_something # 例外を生じる可能性のある処理
rescue => error
  puts error.message
end

メソッド

必要

def sum(x, y)
  x + y
end

sum(1, 2) #=> 3

クラス

必要。クラス名は大文字で始まる。

class Foo
  def initialize(bar, baz) # 多言語で言うコンストラクタのようなもの
    @bar = bar # @ ではじまる名前の変数はインスタンス変数
    @baz = baz
  end
  attr_accessor :bar, :baz # 属性への getter, setter を定義する
end

foo = Foo.new(1, 2) # インスタンス化
p foo.bar #=> 1
p foo.baz #=> 2

継承

class Duration < Range
  ...
end

モジュール

インスタンス化できないクラス のようなもの

module Foo
  def self.hello
    puts "hello"
  end
end
Foo.hello #=> hello

インスタンスメソッド

クラスメソッド

リファレンスマニュアルを読む時には知っておいた方が良い (# と . の違い) https://docs.ruby-lang.org/ja/latest/doc/index.html


Railsの学び方


RailsTutorial 周回

おすすめ 感謝の Rails Tutorial 周回で強くなる。祈る時間が増える。


Railsの学び方


Rails の教科書

これは私は入門の時期にやった訳ではない。 比較的最近になってから読んだ。 rails tutorial が難し過ぎると感じて周りに聞ける人もいない状況などでは、Rails の教科書がとても良さそうに見える。

“はじめに” で書かれているとおり、Rails の教科書を読み進めると Rails Guides や Rails Tutorial を読み進める為の基礎知識が身につきます。というのが達成されそう。


別の視点で大事だと思うこと