Ruby技術者認定試験Gold 必勝合格法

  • 61
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Silver 必勝合格法 に続いて、Ruby技術者認定試験Gold 必勝合格法をお届けしますよ。

★☆注意☆★

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まわり)。2.0 からはさらにややこしくなります (Refinementsというのが追加されますんで)。単に資格をゲットするだけなら、今のほうが学習量が少なくて済むはずです。

2014/10/1 から Ruby 2.1 対応の問題に改訂されます。これで Ruby 1.8 系に触る理由が無くなりましたね。

Gold 試験の概要

試験は4択問題が50問で、100点満点中75点以上を取れば合格です。Silver と同じですね。

Silver を合格しないと Gold を受験できない、ということはありません。ただ両方に合格しないと "Ruby Association Certified Ruby Programmer Gold" の認定証が届きません。つまり……先に Gold を取るメリットは、ありません。そんなトリッキーなことをするのはやめましょうね。

試験範囲

Silver の延長戦上にある部分と、そうでない部分とでできています。前者は過去問をやりながらメソッドや文法をゴリゴリ覚える、という作戦でいけます。

後者はメタプログラミングです。method_missing はもちろん、module を include すると何が起きるのか、特異メソッドを定義すると何が起きるのか、クラス構造にどんな変化が起きて、メソッドコールはどんな順序で実行されて、フガフガ……とにかく細かいところまで詳しく知っておかなければなりません。

対策本は必須、だけど足りない!

対策本は今 (2013/05/06) のところ 「Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応」一択です。この本しかありません。ですので、まずは何も考えずにこれを買いましょう。

この本、残念ながら誤りが多いので、買ったら必ず正誤表の内容を反映させてください。

巻末の「Ruby Gold 演習問題」を解けるようになるまで勉強すれば合格できます。概ね実際の問題ソックリの良問が採録されています。これらをなんとなく感覚で解けるレベルではダメです。どうしてそんな解答が正しいのか、どうしてこんな問題が出題されるのか、これを使うとどのくらい良いことが起きるのか、ということまで考えながら解きましょう。

で、どうすれば解けるようになるのか、というところですが……これが極めて難しいのです。ちょちょいと勉強するくらいでは、まるで歯が立ちません。

なにせメタプログラミングを勉強しないといけないのです。そのためにはアタマの作りを少し変える必要があるのです。Rubyでプログラムが書けるかどうかというレベルの話ではないのです。天上の世界へと想像をめぐらせる必要があります。ですから、どうしても専門的な訓練が必要になります。そこで……

「メタプログラミングRuby」で強化

「メタプログラミングRuby」 を読みましょう。メタプログラミング部分に関してはこの本で勉強するほうが良い……というより、この本でないとわからないと思います。試しに今、 Module クラス、Class クラス(そう、クラスクラスです) のリファレンスマニュアルを読んでみてください。……どうですか? わかりますか? わかりませんよね? (わかる人はボクよりアタマのいい人なのでこんな記事なんか読まなくていいですよーだ。)

この本、名著です。資格を取るためと割り切る必要なんかありません。どっぷりと漬かりましょう。Rails の魔法もちゃんとわかるようになりますし、すごく大げさなことを言ってしまうと、いかに Ruby で書くことが幸せなことかが理解できます。

しかし副作用として「思わずメタプログラミングをしたくなってしまう病」にかかってしまいます。どっかの国のことわざで「ハンマーを持った人には何もかもが釘に見える」と言いますが、まさにそれです。これはしかたないことので、気をつけるほかありません。まわりの人にも前もって宣言しておくとよいでしょう。「オレ、メタプロ病にかかるかもしれん……」と。

泥沼問題に注意

Silver と同じく、50問中に難問が1〜2問ほど出題されます。参考書に載ってない、どう考えてもわからない、実際にプログラムを走らせてみないとわかる気がしない、そんな問題です。

どういう意図かはわかりませんが、そういう泥沼問題が出てきます。100点を取るのは至難の業です。時間が足りない場合はそんな問題をとっととスルーして、他の問題の見直しに時間を使いましょうね。