Ruby技術者認定試験Silverに受かったのでやったことをまとめてみた

先日Ruby シルバーに合格した。 受験するきっかけは、受験しろという上司の半ばパワハラを1年間受けてきてさすがにウザくなってきた事と同僚が公式の一問一答が出てると教えてくれて、解いてみたら割といい点数を取れたことがきっかけ。

基本的に業務でやってることプラス試験用に覚えないとけないメソッドが少しあるといった印象。 Rubyを割とやっていたら受かるんじゃないかなと思った。

やったこと

  • 試験本を購入して問題を解く(当たり前)
  • 解答は理由を答えられるように
  • 絶対出る分野があるのでおさえる
  • 一応、合格記事をググって眺める

前提

試験前の僕のスペックは以下の通り。

  • Ruby歴2年
    • 社会人になってプログラミングを始めた
    • 文系大学院卒
  • Rubyが初めての学習言語
  • IT系の知識はあまりない
    • 一応基本情報は持ってる(試験に受かるための勉強しかしてないので身になってない)

学習期間

  • 3日

学習期間3日とか書くと再現性低いじゃんと思われるかもしれないが、一応業務でも毎日Rubyを使ってるのでそこそこ知識はある状態。 基本的ことはわかってて普段業務で使う機会に恵まれなかったメソッドたち scan とか shift とかを必死に覚えた。 正直3日で受かると思ってなかった。

学習方法

1. 試験本を購入して問題を解く

Ruby技術者認定試験合格教本 という本を買って、巻末についている基礎問題とシルバー用の問題を2回解いた。なぜか僕には基礎問題の方が難しく感じられた。ちなみに1回目解いた際は、基礎問題は19/30問で、シルバー用の問題は37/50問くらい。 試験の概要も記載されているので買って損はないと思う。注意点がいくつかあって、Rubyのバージョンが2.1(試験もこのバージョン)とかなり古いのと誤植が多い。業務では2.5以上のRubyしか扱ったことなかったので、「なんでこの書き方」みたいなところが若干あった。

Ruby歴が浅い人はRubyの基本的なことを理解することも兼ねて基本書を一通りやることをオススメします。 僕が新人時代にRubyを勉強した書籍載っけときます。

チェリー本です。この書籍を通読すればRubyに関してはかなり理解できるんじゃないかと思います。

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

五十嵐さんの書籍。勉強会でお見かけしたことありますが、物腰柔らかくてすごくいい人そうでした。 図を多く用いていて、視覚的に理解できるような構成になっています。 かなり初心者向けなのである程度知識がある人はチェリー本からやればいいと思います。

2. 解答は理由を答えられるように

上記の問題集をやって、正解した問でも必ずなぜ正解なのかを紙に書き出した。 言わずもがな間違った問題は実際にirbで動かしてみて挙動を確かめる。 これを繰り返していく。無心で筋トレするのと同じ感じで。

やっていくうちに自ずと自分の苦手な分野がわかってくるのでそこを潰していく。受験勉強と似た感じの進め方をやった。 ちなみに僕の場合はIOクラスと組み込み系のクラスのメソッドで細かい挙動を覚えられていないことが弱点だった。

3. 絶対出る分野があるのでおさえる

何回か問題集を解いていくとこういうとこ絶対出るなっていうのがわかってくる。 例えば、

  • IOクラス
  • String/Array/Hashクラスのインスタンスメソッド
  • 演算子の優先順位に関して
  • 破壊的or非破壊的か
    • ! がつかない破壊的なメソッド
  • 同じ意味を持つメソッド(mapやcollect等)
  • Timeクラス

etc...

4. 一応、合格記事を眺める

最後に勉強方法とか試験の情報を集める意味でも3~4記事くらい眺めてみるのがオススメ。 多分同じようなことが書かれているので自分の勉強方法ややってることが間違ってないと安心できる。心の栄養剤みたいなもんです。

最後に

だいたい問題集と同じような問題が7割くらいは出るんじゃないかという感じだったが、僕が受験した時は sort に関する問題がやたら出た。業務で使ったことねーわ!!と心の中で憤怒しながらなんとか合格できたのでよかった(試験中は結構間違えた気がしてテンション下がった)。 試験を終えた瞬間にPCに合格か否かが出力されるので受かった時は気分いいけど落ちてたら失うものが大きい(受験料1.6万とその日のテンション)ので十分準備して受験されることをオススメします。3日しか勉強してない僕が言うのもなんですが。

次はGoldとります!