Edited at

Ruby技術者認定試験Silver version 2.1 初心者プログラマーが挑む!

More than 3 years have passed since last update.

僕は、普段仕事でRailsで作られた製品のSE的なことをしているがプログラムは全く書けないし、読めない。

それでも何とか心優しいメンバーに支えられながら日々仕事をしてきたのだが、よくよく考えてみると「自分は何もできない」だとやっと気付いた。

少し前から薄々感じてはいたが、ただただ毎日を過ごす生活の中で行動できずにいたのだが、やっぱりプログラムが読める/書けるようになりたい!!

で、先輩に相談したところ、先ずはRuby技術者認定試験Silverを取ってみろってことなので、勉強した内容をまとめていこーと思う。

 


同じ意味を持つメソッド


  • map = collect

  • select = find_all

  • find = detect

  • delete_if = reject!

  • inject = reduce


include/require

ちょっとよくわからない。

とりあえず、これだけ覚えた


  • Mathモジュールの定数PIを使いたい時はincludeするかMath::PIって書く


  • require時はダブルコーテーションで囲む


require "csv"


破壊/非破壊的メソッド


破壊

基本的には、!末尾についたメソッドは破壊的となる

- concat

- shift

- unshift

- push


非破壊


  • chop

  • chomp

  • compact

  • uniq

  • upcase

(例)以下の場合chopchompは非破壊的メソッドなので、何もしないことになる

x = "Hello, World.¥n"

x.chop
x.chomp
p x
=> "Hello, World.¥n"


例外

基本的には、こんな感じ

begin

処理
rescue
例外が発生したら実行される(複数書くことが可能)
else
例外が発生しなかったら実行される
ensure
必ず実行される
end

begin

puts 10 / 0
rescue ZeroDivisionError => ex
puts ex.message
ensure
puts "エラー発生"
end


文法


変数について


  • ローカル変数:アルファベット小文字で始まり、「1」文字以上

  • グルーバル変数:$で始まる

  • インスタンス変数:@で始まる

  • クラス変数:@@で始まる

  • 定数:アルファベット大文字で始まる


偽の値


  • nil

  • false

""0は真になる


三項演算子

# 「条件 ? 条件が真の場合の値:条件が偽の場合の場合」

x = 5
y = x < 5 ? "A" : "B"
puts y
=> B


文字列


変換

# 整数と見なされない文字があれば、一つ前の文字まで変換する

p "12345abcde".to_i
=>12345


削除

puts "012356789".delete("12-56-")

=> 0789
puts "012356789".delete("^12-56-")
=> 12356

puts "abcdefg.¥r¥n".chomp
=> abcdefg.
puts "abcdefg.¥r¥n".chop
=> abcdefg.
puts "abcdefg.".chop
=> abcdefg


配列


取り出してみる

a = [1,2,3,4]

# 全部同じ結果になる
p a[1...3]
=> [2, 3]

p a.slice(1,2)
=> [2, 3]

p a[2..-2]
=> [2, 3]

p a[1,2]
=> [2, 3]


演算子

a = [1,2,3]

b = [1,3,5]
p a & b
=> [1, 3]
p a | b
=> [1, 2, 3, 5]
p a + b
=> [1, 2, 3, 1, 3, 5]
p a - b
=> [2]


ハッシュ


生成方法

{a: 1, b: 2, c: 3} # OK

Hash[:a, 1, :b, 2, :c, 3] # OK
Hash.new(:a) # OK

{a = 1, b = 2, c = 3} # NG
{:a 1, :b 2, :c 3} # NG


削除

h = {a: 1, b: 2, c: 3}

p h.clear
=> {}

h = {a: 1, b: 2, c: 3}
h.delete(:a)
p h
=> {:b=>2, :c=>3}

h = {1 => "papa", 2 => "mama", 3 => "jiji", 4 => "baba"}
p h.reject {|x,y| x < 2}
=> {2=>"mama", 3=>"jiji", 4=>"baba"}


存在するか

h = {a: 1, b: 2, c: 3}

h.has_key?(:a)
=> true
h.include?(:a)
=> true
h.member?(:a)
=> true


正規表現

p "HogeHOGEhoge"[/[A-Z][^A-Z]+/]

=>"Hoge"

p "tanaka saitou 543 harada 112 noguchi".scan(/¥d+/).length
=> 2
p "tanaka saitou 543 harada 112 noguchi".scan(/¥w+/).length
=> 6


まとめ - 2016/8/5追記 -

昨日受験してきましたが、無事に合格しましたー!!

なので、簡単ではありますが今回受験して思ったこと=合格必勝法をまとめます!!


  • 各メソッドの戻り値を覚えておく

  • 破壊的か非破壊的か覚えておく


  • Ruby技術者認定試験合格教本 Silver/Gold対応 Ruby公式資格教科書の予想問題集をやり込む

  • ↑↑の予想問題集に出てくる問題を全てirbで実際に動かす これ一番大事!!

最後の行に書いたことが何より大事です。

今回僕の反省点は問題集をやり過ぎて何となくで記憶してしまったこと。

実際の試験は問題集の逆が出たりすることが、めちゃくちゃ多かったのが感想です。

皆さんの参考になれば嬉しいです。