Ruby初心者だけどRuby Association Certified Ruby Programmer Silverを取得した!

Rubyを始めて2ヶ月くらいですが、Ruby Association Certified Ruby Programmer Silverを取得しました!ので受験記録を書きます。

他の方のブログの受験日記では、「ちょっと勉強すれば取れた」的なことが結構書いてあったので、舐めてほぼ無勉強で受けたら普通に一回落ちました。きちんと勉強して2回目はバッチリ受かったので、これから受けようと思っている方の参考になれば幸いです。
ちなみに再受験無料キャンペーン中だったので、2回目は無料で受けられました!

Rubyアソシエーション: Ruby技術者認定試験再受験無料キャンペーン

私とRuby

Rubyの経験は2ヶ月程度。といっても本職はSIerのなんちゃってインフラSE(しかも仮想化)なので、仕事でバリバリ使ったわけではなく、仕事の合間にRuby on RailsのWEBアプリ(リソースの集計やらなんやら内部で使う簡単なもの)を作ってみたり、家で本を読んだりした程度。プログラミング初心者というわけではなく、以下の言語は使ったことがあります。

  • C++
    • 大学院のとき2年ほど。ROOTという統計処理ライブラリを使った解析プログラムを書いてました。
  • Java
    • 会社入ってから1年弱。jspにゴチャゴチャとロジックが書いてある2000年頃に作られたふるーいシステムの改修したり、Java FXを使ったGUIアプリ作ったりしました。

1回目の受験

転職に向けて自分のスキルを客観的に示せるものが欲しいなー思い、「年末年始に勉強して、仕事始めの週末に受けるぞー!」と年末に申し込みました。ただ体調崩したり全然別のこと(友人のWEBサイト作り)とかやってしまって全然勉強できなかったのですがね。。。で、直前にキャンセルしようと思ったら、もう期限切れ…という状況で勉強を始めたのは試験を始めたのは2日前からでした。

勉強に使ったのは以下のサイトです。
とりあえず練習問題を2週して、大体解けるようになったので「いけるんじゃないか・・・?」と思ってしまいました。
ミニツク - Rubyのe-ラーニング研修システム

結果は・・・惨敗。ミニツクの問題が悪いわけではありません。。。問題が出来るようになったのはただ単に答えを覚えてしまっていただけでした。そして単純に知識のなさを痛感。Railsをちょっと触っただけでは知らないメソッド、文法がいっぱい出てきました。

二回目の受験に向けて

Rubyの基本をお勉強

そもそもRailsの勉強はしたけど、Rubyは真面目に勉強してない状態だったので、改めて1からRubyを勉強することにしました。

まず読んだのは、色んなブログで見かけますが以下の本。

自分が買った本の帯には「本書は初心者の気持ちを裏切らない出来になっています -Rubyの父 まつもとゆきひろ」と書いてあるのですが、本当にその通りだと思います。Rubyではこうやって書く/書ける、Rubyはこういう作りになっている、ということが綺麗に体系立てて書いてあるので、さーっと流して読んでもかなり勉強になります。試験で問われたことも結構出てくるので、本当にこの本を済から済まで勉強すれば(読むだけでなく実際に動かして覚えるとこまですればですが)、試験対策はいらないかもなと思いました。

試験対策

本で勉強

とはいえ再受験の期間が1月までだったので、とりあえず以下の本を買いました。レビューでも書かれますけど、対象のRubyバージョンがかなり古い(本は1.8.7系、試験は2014年10月より2.1)ので、挙動で??ってところがあったら調べてみた方がよいです(あと結構誤植が…)。「1.8.7まではこうだけど1.9以降はこうなるよー」って注意書きは一応あります。

Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)

Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)

模擬試験が一式ついていますが、これと同じような問題が本番の試験にも結構出ました。Rubyの基礎は分かっている!って人は、模擬試験目的に買ってみても良いと思います。私みたいな初心者の方は、試験以外のところも一通り目を通すと「こういうところが問われる/こういう挙動に注意」というところが分かって良いです。

公式リファレンスを読んで勉強

あとは出勤時間なんかにスマホからRubyのリファレンスマニュアル読んでました。
オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル
他の方の合格記にもリファレンスマニュアルを読んだーとよく書いてあったので真似しました。丸暗記できればそれがいいと思いますが、自分は無理なので以下を意識して読みました。

  • メソッドが破壊的か非破壊か(chomp!/chomp 、concatとか)
  • 同じ動作で違う名前のメソッドがあるか(detect find とか)

実際に動かしてみる

基本暗記の試験なのでアルゴリズムを問われたり実際に書けとかは無いわけですが、実際に自分で動かしてみると身につくし理解も深まります。自分のMacにも実行環境はあったのですが、ここ変えたらどうなるんだろ?っていうのが直ぐ試せるという意味だとWEB上の実行環境って都合がよいです。paiza ioというサイトで自分は色々試してました。
ブラウザでプログラミング・実行ができる「オンライン実行環境」| paiza.IO

感想

プログラミングって「必要な部分だけその都度勉強」ってなりがちだと思うんですけど、資格を取るとなるとその言語について体系的に学ぶことが出来てよいですね!当たり前の話ではあるんですが、Rubyを真面目に勉強した後Railsアプリを見てみると「これはこういう意味だったのか!」というのが結構あります(まー裏返すと如何に自分が理解せずに使ってたかってことなんですがね)。
学生の方でも結構取っている人がいるようなので、これだけではアピールに全然ならんと思いますが、「最低限何か書ける/分かっているんだな」と思ってもらえると嬉しいな。

また無料キャンペーンがあったらGold受けたい。