Ruby技術者認定試験（version 2.1）勉強法

# はじめに
Rubyを勉強し始めて約１年半，先日Ruby技術者認定試験Goldに合格することができました。先輩に教えてもらったことも含めて後輩に伝えられるように，備忘録として自分の勉強法をまとめておきます。
 また，Ruby技術者認定試験を今後受けようと思っている方のお役に立てれば幸いです。

# Ruby技術者認定試験受験歴
||受験した月|点数|合否|
|:--|:--|:--|:--|
|Silver試験|2016年12月|68点|不合格|
|Silver試験|2017年2月|90点|合格|
|Gold試験|2018年3月|94点|合格|

# Silver試験・Gold試験勉強法まとめ
Silver試験・Gold試験のいずれの場合も，まずは書籍を読み進めた後，各模擬問題を解く→間違ったところについて確認・整理する，を正答率100％になるまで繰り返しました。その過程で，コードを書いたり，リファレンスを見たり，分からないところを調べてまとめたりしました。

## Silver試験勉強法
### 1. 『たのしいRuby 第5版』を読み進める
Ruby定番の入門書『たのしいRuby 第5版』を購入し，Rubyの学習を始めましたが，始めてすぐにRailsでの開発に携わることになったので，自分は開発をしながらRubyを覚えていきました。

[たのしいRuby 第5版](https://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC5%E7%89%88-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9/dp/4797386290/ref=sr_1_1?s=books&ie=UTF8&qid=1522977782&sr=1-1)

Siver試験の１回目の受験は不合格でした。受験を決めた後，後述するRuby公式資格教科書の模擬試験を解いてみたところ，分からない問題があまりにも多く，模擬問題を解く以前にそもそも勉強できていない範囲が多く残っていることに気付きました。そこで，模擬問題を解くのを止め，２回目の受験で合格することを視野に入れて，『たのしいRuby』を引き続き読み進めました。１回目の受験で不合格になった後，ある程度試験範囲を理解できた段階で，２回目の受験に向けて模擬問題を解いていきました。

### 2.  勉強内容を見直しつつ模擬問題をひたすら解く

自分が解いた模擬問題は以下の通りです。

* [模擬問題(Silver試験用)](https://gist.github.com/sean2121/945035ef2341f0c39bf40762cd8531e0)　50問
* [Ruby技術者認定試験合格教本 Silver/Gold対応 Ruby公式資格教科書](https://www.amazon.co.jp/Ruby%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-Silver-Gold%E5%AF%BE%E5%BF%9C-Ruby%E5%85%AC%E5%BC%8F%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-%E5%A2%97%E4%BA%95-%E9%9B%84%E4%B8%80%E9%83%8E/dp/4774175676/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=&sr=) Silver基礎力確認問題　30問
* 同 Silver模擬試験　50問
* [Rubyがミニツク Ruby技術者認定試験（Silver）対策コース](http://www.minituku.net/courses/1049510743/contents/775230600.html) ドリル１～３　計30問

「模擬問題(Silver試験用)」はもともと「模擬問題集PDF(Silver試験用)」としてRuby Associationの公式サイトで配布されていたものです（自分がSilver試験に合格した後，GitHubに移行されたようです）。Ruby公式資格教科書は誤植が多いので，後述する改訂２版を利用する方が良いと思います。<font color="Red">また，Rubyがミニツクはバージョン1.8.7を前提しているので，必ずirb等で確認するようにしてください。</font>Rubyがミニツクにはドリル４～６もありますが，Silver試験対策としてはドリル１～３で十分だと思います。余裕があればドリル４～６も解いてみるといいと思います。

また，Gold試験対策で利用したオンラインセミナー「RubyExamination（REx）」にSilver試験の模擬問題があるので，そちらも解いてみることをお薦めします。

* [RubyExamination](https://rex.libertyfish.co.jp/) Silverチャレンジ　50問

## Gold試験勉強法

Gold試験の勉強は，以下の記事を参考にしてSilver試験対策と同じように進めていきました。

[Ruby Gold勉強方法のまとめのまとめ](http://tamata78.hatenablog.com/entry/2015/08/17/215136)

### 1. Ruby公式資格教科書を読み進める
[Ruby Gold勉強方法のまとめのまとめ](http://tamata78.hatenablog.com/entry/2015/08/17/215136)で優先度(高)になっていた『Ruby技術者認定試験合格教本(Silver/Gold対応) Ruby公式資格教科書』を，Siver試験の範囲の復習を行いながら読み進めました。標準添付ライブラリについては範囲が広い割に出題数が少ないので，模擬問題で出てきたものを中心に学習していきました。

[[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応) Ruby公式資格教科書](https://www.amazon.co.jp/%E6%94%B9%E8%A8%822%E7%89%88-Ruby%E6%8A%80%E8%A1%93%E8%80%85%E8%AA%8D%E5%AE%9A%E8%A9%A6%E9%A8%93%E5%90%88%E6%A0%BC%E6%95%99%E6%9C%AC-Silver-Gold%E5%AF%BE%E5%BF%9C-Ruby%E5%85%AC%E5%BC%8F%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8/dp/4774191949/ref=sr_1_1?s=books&ie=UTF8&qid=1522977440&sr=1-1)

### 2. 『メタプログラミングRuby 第2版』を読み進める

Ruby公式資格教科書をある程度理解した後は，『メタプログラミングRuby 第2版』を読み進めました。この書籍は，上司と部下がレガシーコードをリファクタリングするという形式で説明が進んでいきます。おおよそ１章～５章がGold試験の試験範囲です。

[メタプログラミングRuby 第2版](https://www.amazon.co.jp/%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0Ruby-%E7%AC%AC2%E7%89%88-Paolo-Perrotta/dp/4873117437/ref=sr_1_1?s=books&ie=UTF8&qid=1522977521&sr=1-1)

実はGold試験の勉強を始めようと思った段階で２章まで読み進めていたのですが，その時の自分にはやや難しく感じたため，途中で読むのを止めていました。以下の点から，Ruby公式資格教科書などで基本的な内容を理解してから読み進めることをお薦めします。

* 一般的な入門書・解説書にあるような文法・組み込みクラスなどのリファレンス的な内容がない
* 多くのメタプログラミングの用語が出てくる
* メタプログラミングの例としてgemが挙げられている箇所がある

逆に，ある程度理解した後で読むと非常に面白いので，一読する価値のある良書だと思います。

### 3. 勉強内容を見直しつつ模擬問題をひたすら解く

自分が解いた模擬問題は以下の通りです。

* Ruby公式資格教科書 Gold基礎力確認問題　30問
* 同 Gold模擬試験　50問
* [RubyExamination](https://rex.libertyfish.co.jp/) Goldチャレンジ　50問
* [CTC教育サービス Ruby技術者認定試験【Gold】模擬問題](https://www.school.ctc-g.co.jp/ruby/training_ruby_gold_01_10.html)　60問

RubyExaminationを利用するにはGitHubのアカウントが必要です。また，CTC教育サービスの模擬問題には何問か間違っているものがあるので，必ずirb等で確認するようにしてください。

間違える問題が少なくなってきたら，[Ruby Gold勉強方法のまとめのまとめ](http://tamata78.hatenablog.com/entry/2015/08/17/215136)の「4.その他の勉強のポイント」や[Ruby Gold 試験範囲を一気に見直す](http://tamata78.hatenablog.com/entry/2015/11/03/101002)の「Ruby Gold受けた人たちの復習ブログで知識を補う」，それらの関連記事の部分に挙げられていた記事を読み，知識の理解度を確認するとともに，足りない知識について補いました。実際にこれらの記事の内容が何問か出題されたので，必ず目を通すと良いと思います。

# おわりに
以上がRubyのSilver試験・Gold試験対策として自分が行った勉強法です。いずれも，Railsでの開発や試験の勉強法について教えてくれた会社の先輩方や，参考記事の著者の皆さんのおかげで合格することができました。特にGold試験については，90点以上でGold資格を取得した会社の先輩方が良い目標となり，94点を取ることができました。今後は自分が，会社の後輩，そしてこれからRubyの習得を目指す方々のお役に立てれば良いなと思っています。最後まで読んでいただきありがとうございました。

# 参考：Rubyリファレンスサイト

- [るりまサーチ](https://docs.ruby-lang.org/ja/search/)  
『たのしいRuby 第5版』でも紹介されているRubyのリファレンス検索サイトです。初めの内は「るりまサーチ」を利用すると良いと思います。各バージョンを横断的に検索するのに向いているので，例えばメソッド名で検索してバージョンごとに比較するときなどに役立ちます。
<br>
<br>
- [プログラミング言語 Ruby リファレンスマニュアル](https://docs.ruby-lang.org/ja/)   
Ruby公式のリファレンスマニュアルです。Rubyの学習がある程度進んだ段階では，「るりまサーチ」を利用せず，直接リファレンスマニュアルを探す方が速い時もあります。文法などのRubyの言語仕様について調べたいときは，リファレンスマニュアルを直接探す方が速いと思います。