Ruby Association Certified Ruby Programmer Gold version 2.1合格体験記

# はじめに

先日、[Ruby Association Certified Ruby Programmer Gold version 2.1](http://www.ruby.or.jp/ja/certification/examination/)に合格しました。得点は Silver 88点/Gold 78点（合格点はそれぞれ75点）と、Gold が結構ギリギリの結果でした。

自分は Ruby(Ruby on Rails) を使うようになって約半年ほどで、Ruby の知識に偏りがあるという漠然とした不安がありました。また、合格をする事で、試験で必要とされる技術レベルを満たしているという事をアピールできると考えて受験をしました。

# 試験の概要をつかむ
まずは [Ruby Association Certified Ruby Programmer Gold version 2.1](http://www.ruby.or.jp/ja/certification/examination/)のページを読んで、出題範囲等を確認します。[試験改定のお知らせ](http://www.ruby.or.jp/ja/certification/examination/index.data/rubycert.pdf)も重要なのですが、他の方のエントリを読んでいて知りました。

Ruby Association Certified Ruby Programmer Gold version 2.1 は「Silver（RY0-100）試験」と「Gold（RY0-200）試験」の2試験に合格する必要があります。

受験の順番はどちらが先でもOKですが、難易度は Sivler < Gold となるので、通常はこの順に受験する事になると思います。また、一日で両方受験するのではなく、Silver を受験後、時間をあけて Gold 向けの対策をしてから受験する方が多く、自分もそのようにしました。

# ウェブの受験体験記を読む

検索サイトや Twitter で「Ruby 試験 Silver」などと検索すれば、受験体験記がいくつかヒットします。後述しますが、試験の参考書が乏しく、どんな問題が出題されるのか、合格までに何に重点を置いて学習すればよいかを知ることが出来ます。

旧試験について書かれているものもあるので、対象試験バージョンに注意してください。

## Silver

- [一週間でRuby技術者認定試験に合格する方法 - プログラマ憧れプログラマ日記](http://nobyu.hatenadiary.jp/entry/20090724/1248442523)
- [資格 - Ruby技術者認定試験Silver version 2.1 必勝合格法 - Qiita](http://qiita.com/5t111111/items/9c50013f1a91b7dd702a)
- [PythonプログラマがRuby技術者認定試験を受けてみた](http://www.infoq.com/jp/articles/rubyexam)

## Gold
- [Ruby Programmer Gold 2.1 に合格した！次は Platinum 狙うぞ - kakakakakku blog](http://kakakakakku.hatenablog.com/entry/2015/05/31/120924)
- [Ruby技術者認定試験（Gold）合格経験](http://doruby.kbmj.com/TM/20140131/Ruby_Gold_)
- [【インタビュー】女子大生Webデザイナーが独学でRubyプログラマーへ転身！Ruby認定試験Goldを2ヶ月で取得したコツ](http://blog.layer8.sh/ja/2013/05/30/ruby-girl-01/)
- [ruby gold 落ちました・・・ - Qiita](http://qiita.com/sak_hrr/items/95be0f9b80502218ad8c)

# 参考書を読んで問題集を解く

2016/10/9日現在、Gold までカバーした試験対策用の参考書は次の1冊しかありません。

- [Ruby技術者認定試験合格教本 Silver/Gold対応　Ruby公式資格教科書](http://www.amazon.co.jp/dp/4774175676/) 

Gold はともかく、Silver はこれ1冊で十分だと思います。[サポートページ](http://gihyo.jp/book/2015/978-4-7741-7567-6/support)も確認しておきます。

また、もともと試験を決意する前に、Ruby の学習として [パーフェクトRuby](http://www.amazon.co.jp/dp/B00P0UR1CA/) を読んでいました。こちらは文法からメタプログラミングまで Ruby に関して広く扱った入門書です。

これらに加えてウェブ上に問題集があります。実際の試験問題はこれらの問題より一段階難易度が高く、単に正解するだけでは十分ではありません。間違った問題はなぜ間違ったのか、正解以外の回答はどこが誤りなのかを理解できるようにします。

- [模擬問題PDF(Silver) ](http://www.ruby.or.jp/ja/certification/examination/index.data/exam_prep_jp.pdf)
- [ITpro EXPO検定---ITpro EXPO 2008 - まつもと ゆきひろのRuby検定：ITpro](http://itpro.nikkeibp.co.jp/article/COLUMN/20080115/291042/)（※回答の送信先がリンク切れになっているようなので[【解説】](http://itpro.nikkeibp.co.jp/article/COLUMN/20080115/291095/?ST=itproexpo)を参照）
- [ITトレメ　Ruby技術者認定【Gold】試験 － ＠IT自分戦略研究所](http://jibun.atmarkit.co.jp/scenter/ittrain/121_exam_1_q.html)

# 実行環境を整え、自分用のメモを作る

上記問題集で間違ったり、正解したけれどあやふやだった問題は実際に動作させて確認するとより記憶に残ります。その際、テストで対象となる Ruby バージョン 2.1.X に合わせて rbenv + pry で環境を作成します。リファレンスは直接ウェブページではなく、Dash で参照した方が早くてオススメです。

- [rbenv を利用した Ruby 環境の構築 ｜ Developers.IO](http://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/)
- [Rubyistよ、irbを捨ててPryを使おう - TIM Labs](http://labs.timedia.co.jp/2011/12/rubyist-should-use-pry.html)
- [Dash で Ruby リファレンスマニュアル (日本語) を閲覧するためのツールを作成しました - 情報と音楽](http://penguinlab.jp/blog/post/2290)

また、確認した内容は自分用のメモを残しておきます。前提条件や細かい説明を省略した、自分が見れば分かるものです。

最初、[Marxico](https://marxi.co/) という Evernote に Markdown 形式で入力できるサービスを利用していました。Chrome の機能拡張または Mac アプリがあり、いい感じのデザインで保存されるのですが、10日間の試用後は $15.99/year の有料となります。

他に色々検討した結果、次のような仕組みになりました。

1. git の Private リポジトリに Markdown 形式でメモを作成
2. commit のタイミングで [redcarpet](https://github.com/vmg/redcarpet) + [highlight.js](https://highlightjs.org/) で HTML に変換
3. Dropbox に配備
4. 昼休みなど時間のある時に Dropbox のメモファイルを確認

Private リポジトリは [Bitbucket](https://bitbucket.org/) が無料で今のところ不満もありません。

## 2016/10/9追記

メモにスマートフォンからアクセスする場合、わざわざ Markdown から HTML に変換しなくてもアプリから直接確認・編集できるので、デザインなど細かい事を気にしなければこちらの方が簡単です。

1. Markdown アプリ（例えば Android だと [MarkdownX](https://play.google.com/store/apps/details?id=com.ryeeeeee.markdownx) ）をスマートフォンにインストール
1. Markdown 形式で作成し、そのまま Dropbox に配備
1. 昼休みなど時間のある時に Markdown アプリからメモファイルを確認・修正

# 最後に

受験対策をしていく上で、知識の偏りというよりもほとんど分かっていなかった事が認識できましたが、着実に理解が進んでいるという実感がありました。受験をしなくても時間をかければそのあたりを徐々にカバー出来たと思いますが、受験をした事でより早く出来たと思います。

また、普段のチームメンバーのコードで改善点をアドバイス出来るようになったり、OSS のコードを見て、知らないメソッドをすぐにリファレンスに頼ることが少なくなりました。

あとは試験の認知度があがれば技術レベルの底上げにも繋がるし、自分としては評価も上がって嬉しいです。

自分の考える Ruby の魅力は強力なメタプログラミングだと思うので、策定中で上位資格の Platinum はその辺りのリファクタリング技術が問われるのかな、なんて考えています。