imaizumeの個人メモ

コードとか旅とか飯とか

Ruby Silver取ったので例によって合格体験記書きました

Ruby Silver ゲットだぜ!!

昨年末にRuby Silver試験を受験して合格した。 75点合格ラインのところ、自分は84点でパスしたのでちょっと危なかった。 実際、試験終了ギリギリまで悩んだ問題も10%くらいあったことを考えるとこの結果には納得。

これで晴れて「俺はRuby書けるんだぜ」  (...え、何それ自慢??) というのを卒業し「俺はRuby Silver持ってるんだぜ!!」とドヤれる ( ̄¨ ̄) ...というのは嘘で、まぁSilverは基本レベルなのでそこまでドヤる程のものではない(汗)

さてRuby Silverの試験勉強で参考になるのが、ブログやQiitaに上がっている受験者の合格体験記。 知っての通りRuby SilverやGold試験は参考書がクソ参考書を解いただけでは独特の傾向や重点的に学習すべき部分が分からないので、そういうときには試験を受けた方の話が参考になった。 ということで、自分も試験を体験記を書いてみた。

前提条件

自分の体験記を書く前に、アドバイスが適切な人に届くよう自分のRubyに対するスペックを書いておく。 というのも人によって持っている前提知識がいろいろ違うと思うので、開発経験が浅い人はできれば違うポストを参考にしてほしい。

  • Rubyでの開発経験
    • 年数: 3年
    • 触れる頻度: 平均して週3,4日
  • 用途

こんな感じで、日常的にRubyに触っていて、ブロック渡しとかArray#mapとかの関数も割と普段から使っている点に注意されたい。

合格するまでに使った教材

ではお待ちかねの合格までの道のりを

Ruby技術者認定合格教本

これについては説明不要ですね。 とにかくこれで出題範囲をおさえて、知らない知識をどんどん取り入れていきましょう。 古いバージョン(Ruby 1.8対応)ではなく2.1対応のもの買うこと。

自分はこの本を1周して、知らないところにバンバン付箋を貼っていった。 そして知らなかったところをpryを使ってコードを打ち込みひたすら確認してを繰り返していくと知識の「穴」が埋まっていく。 本書では初めにirbの使用方法が紹介されているが、補完やシンタックスハイライトが効くし公式も推しているのでpryの方がオススメ。

[blogcard url=http://labs.timedia.co.jp/2011/12/rubyist-should-use-pry.html]

最後に演習問題がついているので、こちらも活用して出題傾向の把握に努める。

あとGold試験の教科書としてメタプロ本が推奨されているけれど一部はSilverに通じるところもある。 オープンクラスとか変数のスコープの話が参考になるので、Gold試験を受けるなら事前に買って読んでおいても損はないが、覚える必要も特にはない。

メタプログラミングRuby 第2版
Paolo Perrotta オライリージャパン 売り上げランキング: 76,543

公式サンプル問題

教本の問題だけだと足らないので、試験に慣れるためにも公式が出している模擬試験問題はやっておくべき。 以下のページ内の「模擬問題PDF(Silver) 」からPDFがダウンロードできる。

[blogcard url=http://www.ruby.or.jp/ja/certification/examination/]

ちなみに試験前日にこれを解いてみたときの正答率は50問中41問だった。 正直コレを見てかなり焦ったが、幸いここで外した問題を復習したことが当日にいくらか役に立った。

Ruby資格試験対策アプリ (Android)

なぜかAndroid限定なのだけれど、同じく公式が問題アプリを出してくれているのでこちらは移動時間に活用

無料で30問、課金すると全100問の問題が解けるらしい。 自分はこのアプリを使うのが試験直前になってしまったので結局課金しなかったけれど、30問で足らない人は是非課金しよう。

Google Play で手に入れよう

ミニツク

ミニツクというプログラミングドリルを無料で提供してくれているサイトがあり、アプリ同様参考書が開けない外出時等にスマホで問題を解くことができてとても重宝した。 出題の形式も、大体が4~5択の選択問題で実際の試験に合った形になっていたのが良かった。

[blogcard url=http://www.minituku.net/?locale=ja]

Ruby初心者だったら、ここの他の講座の練習問題も解いてみるのも良い。

 

以上が自分が使った教材。 読み物の数は教本だけだったし、演習用の教材は探せばもっと出てくるかも。

傾向と対策

とりあえず思ったことを書くと

  1. 実は「満遍なく出ない」=特に出題されやすい部分を重点的に覚える
  2. 似たような名前のメソッドもできるだけうまく整理して覚える
  3. 予約語とか変数の命名規則とか偽の値を選ぶ問題はボーナス問題と捉えよ
  4. 試験当日に解いた問題は教材でやった演習よりも優しく感じた (たぶんそういう風につくってあるのかな??)

まず1について。 実際に問題で出る範囲はある部分に集中しているので、早めに教本を一周して演習で傾向をつかむこと。 特によく出ると思った部分は

  • chopchompで最後の文字列を切り取るかどうか
  • StringArray の [] メソッド (範囲選択して部分文字列や配列を切り取らせるやつ)
  • Array#map や 和集合、積集合の演算
  • 正規表現と日付のパターン (英数字空白と行頭行末表現、年月日と時刻くらいは最低限覚えよう)

このあたりは重点的に覚えて可能な限り落とさないようにしたいところ。

次に2については、これがこの試験の特徴かつ関門と言える部分。

  • index, match, scan (String)
  • chomp, chop (String)
  • delete ファミリー, reject, slice (Array, Hash)

この辺りがしっかり区別できると高得点が期待できるし安心できる。

あとは

  • each_with_indexで渡すブロックで変数は |index, value| それとも |value, index| ??
  • Array(3,4)は [3,3,3,3]?それとも [4,4,4] ???
  • ArrayやHashの生成方法って[]{}以外に何があったっけ??

このあたりも忘れがちだけれどちょくとく聞かれるので忘れないようにする。

それから3についてだけれど、よく聞かれる問題はややこしいものばかりではない。 nilfalse を選べば良い問題や、_と英字で始まる単語を選べば良い問題などは、覚えることがとても単純なので、ボーナスと捉えて絶対に落とさないように。

4については個人的な感想なので絶対言い切れるわけではないけれど、参考書の方が難しく作ってあるというのはフツーにありそうなので、練習で9割取れるようになれば十分自信を持って試験に臨んで良いと思う。

まとめ

  • 考える問題はあまりないので、90分という時間は気にしなくて良い(大抵の場合たぶん余る)
  • 覚えるための近道は
    • 教本は1周でわからなかった所だけ付箋でメモる
    • その後はとにかく練習問題や演習をやる
    • 間違えた所はirbやpryで写経する
  • エディタ上では書けても、選択問題で出されると意外とわからなくなるよ (なのでしっかり演習をやること)

自分は直前まで修論の提出とかいろいろあって演習時間が思うように割けなかったが、それでも80点には届いたのであと2,3倍ちゃんと演習していれば90点は確実だっただろうなと思う。

次はGold試験を年度内に受ける予定。 覚える範囲広がる上に、メタプロ要求してくるとかなかなかハードル上がるなぁ...