2011年秋、Ruby技術者認定試験Silverを受験し、無事合格しました。今年に入ってから同僚にも取得者が出てきました。というわけで、自分が受験したときの話や、他人の話をまとめてきましたよ。
★☆注意☆★
Ruby 技術者認定試験は 2014/10/1 に改訂されます。本記事は旧バージョン受験時のものなので、参考にしないほうがいいでしょう。……参考に……し……してもいいけど、どうなっても知りませんよ!
注意(2013/9/23追記, 2013/12/4, 2014/7/10更新, 2014/8/3 取消し)
現行(2014/7/10現在)の試験は、Gold/Silverとも Ruby 1.8.7 を対象としています。しかしRuby 1.8.7 はレガシーになり、公式のサポートはもはや提供されていません。Heroku 社によって提供されていた延長サポートも2014/7/31で終了します。今から Ruby 1.8.7 を使うのは激しく非推奨です。
ですから、……これは個人的な意見ですが……まじめに勉強したい皆様には、受験の延期を推奨します。
逆にまじめでない (単純に資格をゲットしたいだけの方) なら、今のうちに受験するのがおすすめです。1.9 以降は比較的ややこしくなるので (特にStringまわり)、今のほうが学習量が少なくて済むはず、です。
※2014/10/1 から Ruby 2.1 対応の問題に改訂されます。これで Ruby 1.8 系に触る理由が無くなりましたね。
試験の内容
試験は4択問題が50問で、100点満点中75点以上を取れば合格です。
Ruby でのプログラミング経験が豊富な人
- Ruby技術者認定試験 公式ガイド の付属の練習問題をやる。
- 解けなかった問題の周囲を勉強する。
これだけです。
やってみるとわかりますが、かなり経験豊富な人でも 1. でいきなり合格点を超えるのは難しいです。かなり凹みます。でも仕方ありません。経験豊富な人でも解けない問題が多いです。これは Ruby の各種組み込みクラスやメソッドの多様性に起因しています。知らないメソッドが問題に出てきた、と思ったら、良く知ってるメソッド別名だった、とか。だいたいそのパターンです。Enumerable#map と Enumerable#collect は同じ振る舞いをするメソッドですが、だいたいどちらか片方しか使わないものでしょう? 点数が取れないのは、だいたいそのせいです。
練習問題で手薄なところに気づいたら、あとはるりまを読みながら、ひたすら暗記です。
練習問題と本番の問題はかなり似ているので、これで攻略できてしまいます。
くれぐれも無勉で一発合格できるなどと思わないように!
Ruby でのプログラミング経験が少ない人
- Ruby技術者認定試験 公式ガイド で Ruby をひととおり勉強する。
- API を irb (または pry) で叩いて覚える
- 公式ガイドの練習問題を繰り返しやる
この試験で点数を稼ぐコツは単純です。暗記、暗記、暗記、です。深く考えないと解けないような問題はでません。「日商簿記3級」とか「漢字検定2級」みたいなものです。
API や構文を一個ずつ根気よく写経していきましょう。
コツ
練習問題はパーフェクトに解けるように
出題される問題の 90% くらいは練習問題のバリエーションです。練習問題が100%解けるようになれば、まず間違いなく合格できます。練習問題をパーフェクトに解けるようにてしおきましょう。
練習問題に出ないものは手を抜く
練習問題に出てこないものをがんばって覚えてもあまり試験には出てきませんから、あまり時間をかけないようにしましょう。
難しい問題は捨てる
50問中、ひっかけ問題やマニアックな知識を問う問題が1問〜2問程度出題されます。Rubyのコミッタでも解けないような問題です。どれだけ勉強をしても解けません。さっさとあきらめて、適当にそれっぽい選択肢を選んで、次の問題に進みましょう。
驚き最小の原則
Ruby という言語は「驚き最小の原則」にしたがって設計されています。びっくりするような挙動をしないように、丁寧にメソッド名やクラス名が決められています。
問題で迷ったときは、このことを思い出してください。『まつもとゆきひろさんが「驚き最小の原則」にしたがって設計したら、この問題の答えはどうなるだろうか』を考えてみると、解けるかも……?
合格したら
めでたく合格してから1ヶ月ほど経つと、合格証明書が届きます。Ruby のふるさと、島根県のなんかすごい和紙でできた合格証明書です。「まつもと ゆきひろ」の署名が輝いています。(その合格証明書を使うと給料が上がる、住宅ローンの契約時に有利になる、転職時に有利になる、……というような効果はとくにありません。)
次はRuby技術者認定試験Gold目指してがんばりましょう。