Ruby技術者認定試験Silver version 2.1 必勝合格法


先日、[Ruby技術者認定試験Silver version 2.1](http://www.ruby.or.jp/ja/certification/examination/)を受験して合格してきました。
今、[再受験無料キャンペーン](http://www.ruby.or.jp/ja/news/20141105.html)というのをやっていますが、「そんなキャンペーンあるなら受けてみよっかなー、でもまだガイド本でてないしなー」と迷っている方もいると思います。
ぶっちゃけ、この資格取りたい人であればこのチャンスに受けた方がいいです。
ただ落ちてももちろん責任はとれません！

※勝手に[Ruby技術者認定試験Silver 必勝合格法](http://qiita.com/nappa/items/840422d0960345fedbfd)の続編みたくしてます。ごめんなさい。

## 試験の内容

試験は50問あり、すべて選択問題です。100点満点中75点以上を取れば合格です。
試験範囲は前述のRuby技術者認定試験制度公式サイトの出題範囲の通りです。

## 対策

### Ruby でのプログラミング経験が豊富な人

- [Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応](http://www.amazon.co.jp/Ruby公式資格教科書-Ruby技術者認定試験-Silver-Gold対応-EXPERT/dp/4774150010/ref=pd_sim_b_1?ie=UTF8&refRID=11SV3S8XJMWH9V5Y21ZE)の「第6章 添付ライブラリ」以外を読んで暗記する
- 上記ガイド本の「第7章 Ruby技術者認定試験Silver演習問題」を満点がとれるようになるまで繰り返す
- [Ruby技術者認定試験改訂のお知らせ](http://www.ruby.or.jp/ja/certification/examination/index.data/rubycert.pdf)の「改訂のポイント」以降を読んで内容を暗記する

※上記ガイド本で「第4章 オブジェクト指向」の一部などはSilver試験範囲外ですが、経験豊富な人は全部読んだ方がより理解が進んで暗記もしやすくなるので読んだ方がいいです。

### Ruby でのプログラミング経験が少ない人

- [Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応](http://www.amazon.co.jp/Ruby公式資格教科書-Ruby技術者認定試験-Silver-Gold対応-EXPERT/dp/4774150010/ref=pd_sim_b_1?ie=UTF8&refRID=11SV3S8XJMWH9V5Y21ZE)の「第4章 オブジェクト指向」のSilver範囲外の箇所、および「第6章 添付ライブラリ」以外を読んで暗記する
- 上記ガイド本の中で理解できない箇所があれば irb (または pry) で実際に実行して動きを確かめたり、[リファレンス](http://docs.ruby-lang.org/ja/2.1.0/doc/index.html)などで調べる
- それでも理解できないときには人に聞く、「たのしいRuby」など別の初心者向けの本を併用する、などしてなんとか理解する
- 上記ガイド本の「第7章 Ruby技術者認定試験Silver演習問題」を満点がとれるようになるまで繰り返す
- [Ruby技術者認定試験改訂のお知らせ](http://www.ruby.or.jp/ja/certification/examination/index.data/rubycert.pdf)の「改訂のポイント」以降を読んで内容を暗記する

### ポイント

経験が豊富だろうが少なかろうが、結局はほとんど暗記です。
ただ、特にプログラミング自体の経験が少ない場合には、書かれている内容自体が理解できないと暗記するのが難しく、応用問題への対応もできないかもしれませんので、理解するためのフォローが必ず必要だと思います。

経験が少ない人は、ガイド本の内容が古いので Ruby 2.1 の実行環境構築でつまづくかもしれません。

- Windowsの人は、[RubyInstaller for Windows](http://rubyinstaller.org) から 2.1.x をダウンロードしてインストールしてください
- Mac の人は、Mavericks 以降なら 2.0 がインストールされています。2.1.x ではないですが試験対策としては十分と思います。不安であれば調べて 2.1.x をインストールしてください

それと、これは __超重要__ ですが、上記のガイド本は記載の誤りがかなり多いので、必ず [正誤表](http://gihyo.jp/book/2012/978-4-7741-5001-7/support) をチェックしておいてください。

また、ガイド本の対象バージョンは 1.8 ですが、「これは 1.9 では ... に変更されています」などの補足がある箇所があるので、そこはしっかり把握しておいてください。
試験は 2.1 なので、そういった記載があった場合に有効なのは本文ではなく補足の方です。

あと、気になる 1.8 -> 2.1 への変更点による試験内容の差分ですが、大した量ではありません。
Ruby がバージョンアップしても、Silver の対象となるような基礎的な部分への変更はごく一部と言ってよいので当然と言えば当然です。
差分への考慮は全部捨てても、それ以外でしっかり点をとれれば十分に合格点には到達できます。
最低限、上記した「Ruby技術者認定試験改訂のお知らせ」に記載の内容の周辺だけ見ておけば良いと思います。
2.1 対応のガイド本が出ていない現状、変更点を全部追うのは、試験対策だけを考えるとちょっと労力に見合わないです。

※ちなみに私は [Ruby技術者認定試験 公式ガイド](http://www.amazon.co.jp/dp/4822234304) を読んだことがありません。
古い本ですが、Silver 対策だけであればこちらの方が良いのかもしれません

## コツ

Silver 対策記事では大抵書いてあることですが、試験の傾向としてこの辺をしっかり押さえておきましょう。

### そのメソッドは破壊的か非破壊的か？

例えば、

- concat は破壊的？非破壊的？
- delete は破壊的？非破壊的？


ちゃんと正確に覚えておく必要があります。

### 同じ振る舞いをするメソッド

例えば、

- Enumerable#map
- Enumerable#collect 

は、名前が違うだけで全く同じ振る舞いをします。

### 微妙に違う振る舞いをするメソッド

例えば、

- IO#gets
- IO#readline

は、似た働きをするメソッドですが微妙に違います。

### 勘違いしやすいメソッド

例えば、

- String#chop
- String#chomp

は名前が似ていて勘違いしやすいけど別ものです。

### 戻り値(の型)

例えば、

- Array#find
- Array#find_all

似た名前ですが、それぞれ、戻り値として何が返ってくるでしょうか？
もし覚えてなくても、メソッドの名前から推測できませんか？

### Comparable モジュール

なぜか、「Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応」では触れられていませんが、出題対象です。

### ファイルを開くときのオプション

ファイルを開くときには `r`, `w` などのオプションを指定できます。
それぞれの違いを明確に覚えておいてください。

### 「ごうかくにっき」的なやつを読んでおく

「ruby silver」などで検索すると、受験した人の日記が色々と見つかると思います。
内容に触れているものも多いので、目を通しておくと、「読んでてよかった」と思うものがきっとあると思います。

## まとめ

おそらく、ここで書いた内容に沿ってしばらく勉強するだけで、普段 Ruby を使っていなくてもプログラミング経験者であれば90点くらいは余裕で狙えるでしょう。
暗記ばっかりでキツいですが、覚えた分はしっかり身になった実感がありますので、受験する価値は大いにあると思いました。