Ruby技術者認定試験Goldに1ヶ月で合格するまでにやったこと

先日、Ruby技術者認定試験Gold（Ruby Association Certified Ruby Programmer Gold version 2.1）に1発で合格しました。
そこで、合格までにやったことを以下にまとめます。これから受験する方の参考になれば幸いです。
## 受験前のRubyスキル
- 普段はJavaをメインにWEB系の開発をしており、Rubyの実務経験はゼロ。
- 2010年頃から「Rubyやりたいなー」と思いながら執筆時点の2017年まで放置していた。
- Rubyの勉強をはじめたのはGold試験を受験する**2ヶ月半前**。
- 1ヶ月半ほどかけて、Silver資格を取得。

→Silver受験についてはこちらを参照：[Java屋がRuby試験Silverに合格するまでにやったことを全部書く](http://pepepki.hatenablog.com/entry/2017/04/04/004047)

## 受験結果
- 点数は80点。（合格ラインは75点）

##勉強期間
- Silver資格取得後、**約1ヶ月**。
- 1日の勉強時間は1～2時間程度。
- 育児や家事で家にいる間もまとまった勉強時間が取れなかったため、**勉強時間の9割は通勤時間や仕事の昼休み**。
- 時間があるときに家で実機でコードを書き、動作確認していた。

##使用した教材・環境
### 教材
[A.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-ebook/dp/B016B877OG)
げんなりするほど誤植が多いものの、**試験範囲を押さえるためには必須**のテキストです。
巻末8章の「基礎力確認問題」と「模擬試験」は使えます。本番の試験ではここからかなり類似あるいはほぼ同じ問題が出題されていました。
参考書部分は説明があまり丁寧ではないので、必要に応じて後述の「メタプログラミングRuby」やWEB上のリソースで理解しておく必要があると思います。

[B.メタプログラミングRuby 第2版](https://www.amazon.co.jp/メタプログラミングRuby-第2版-Paolo-Perrotta/dp/4873117437)
Goldの範囲であるメソッド探索やメタプログラミング・ブロックなどの理解に役立つテキストです。
茶目っ気のある文章が少し楽しい。
2章から5章まではしっかり読んで理解しておくと、試験問題は「パズルを解くだけ」といえるほど簡単に感じるようになります。
試験対策として見るとあくまで副読本の扱いにはなりますが、Rubyの言語構造の理解のためには一読しておくのがオススメです。私は2章から5章まで3回読みました。
試験合格だけが目的なら書籍は上記A.とB.で十分だと思います。

[C.ITトレメ](http://jibun.atmarkit.co.jp/scenter/ittrain/121_cal.html)
1問1答で取り組みやすいWEB問題集(無料)。収録数は全部で60問。
Ruby1.9～2.1で追加された内容は出題されていませんが、基礎的な問題が多く学習初期～中期の問題演習にはオススメです。
コンテンツが古くスマホ対応していない（見にくい）のが玉にキズです。

[D.公式リファレンス](https://docs.ruby-lang.org/ja/2.1.0/doc/index.html)
A.の教科書での学習時や、問題演習時に不明点が出てきたときに参照します。A.の教科書では用例しか取り上げておらず、十分な仕様説明ができていないところもあります。
教科書を見て全然理解できなかったメソッドが公式リファレンスを見るとすぐに分かった、なんてことも度々ありました。

### 環境
私のマシンはWindowsですが、VirtualBox上にUbuntuを立ち上げてRuby2.1をインストールして動作確認しました。
この記事を読んでいる人は注意している人が多いと思いますが、**Rubyは最新ではなく2.1**です。最新版で動作確認すると実行結果が変わってくることもあるのでRubyのバージョンには注意が必要です。

##勉強方法
1. [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-ebook/dp/B016B877OG)のGold試験範囲を読み込む。
ざっと試験範囲を眺めて概要を理解する程度。この段階で暗記はしませんでした。期間は3～4日程度。

2. [メタプログラミングRuby](https://www.amazon.co.jp/メタプログラミングRuby-第2版-Paolo-Perrotta/dp/4873117437)の2～5章を**しっかり読む**。2～5章を2週間で3周しました。読み終わったころにはRubyのクラスやメソッドの風景がまるで霧が晴れたように変わっていました。
繰り返しますが、ここで**しっかり読んでおく**とあとがかなりラクになると思います。
3.  [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-ebook/dp/B016B877OG)の8章の問題演習をひたすら実施。
全ての選択肢に対して、なぜ正解なのか・なぜ誤りなのかを説明できるまで理解するようにしました。
この時に教科書の説明だけでは理解が不十分になってしまうので、[公式リファレンス](https://docs.ruby-lang.org/ja/2.1.0/doc/index.html)やQiitaなどのWEB上のリソースが役立ちます。
「基礎力確認問題」は4周・「模擬試験」は6周解き、最終的には問題を見た瞬間に答えが浮かんでくるようになっていました。

4. 3.と並行して[ITトレメ](http://jibun.atmarkit.co.jp/scenter/ittrain/121_cal.html)での問題演習。スマホで気軽に問題演習が出来るので、移動時間の学習に重宝しました。取り組み方は3.と同様です。
全部で60問収録されていますが、6周ほど取り組み、最終的には15分程度で60問解けるようになっていました。
3.と4.の学習期間が大体半月ほど。そのため学習期間の合計が約1ヶ月です。

## まとめ
しっかり教科書・メタプログラミングRubyを読み込み十分な問題演習・実機検証を行っておけばそれほど難しい試験ではありません。
試験は素直な問題が多いので、勉強した分の成果がそのまま出ると思います。