日常的に業務でRubyを書くようになって早3年。Silverに合格しました。資格のレベルとしては簡単なほうと言われますが、実務に活かす視点で考えてみました。#正式にはRuby技術者認定試験と言い、現在は初級的なSilverと、中級的なGoldの2つがあります。Ruby技術者認定試験Rubyアソシエーションは、プログラミング言語Rubyの普及と発展のための組織です。Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師及びRubyを学ぶ学生などを対象とした認定試験制度です。認定者は、Ruby技術者としての技術力を公正に評価され、高い水準のRubyによるシステム開発能力を持つことを認定されます。全50問で75点(38問)以上が合格、試験時間は90分です。自分にとってworkするかを検証したかったとったほうがいいのか迷いつづけるならさっさととって楽になっちゃおうです。レベル的にはまぁ取れるだろうぐらいには思ってました。実務をやりつづけるなかでも、知識はカバーしている必要はあるものの、資格として必要さを感じていませんでした。「とっといておいたほうが良いのかなぁ」と迷っていたので、これからも考えつづけるくらいならさっさと取ってしまおうというわけです。#資格の効力的に言えば、あまり重要視されない資格でしょう。試験に求められる知識レベル自体は比較的簡単です。実務をしてたら自然と身につくレベルの内容ですが、試験という性質上、合格していないと仕事にならないとも言えません。実務未経験者が持っていたら「ふーん、がんばってるね」程度には見てくれると思いますが、転職時の決定打になるほどの効力があるとは思えません。#しかし、試験の内容的にはなにごとも基礎は大事ですし、便利なメソッドの再確認にもなります。普通は必要に迫られてメソッドの動作を確認、理解することが多います。試験というきっかけを通して普段使ってないものも合わせてひととおり学習しておくのはなかなか良い体験になるでしょう。出題範囲は主に配列やハッシュに使えるメソッド、破壊的/非破壊的なメソッド、変数のスコープあたりに関する出題が多いです。これらは実務を行ううえでまず確実に正確に理解しておく必要があるものでしょう。実務ではメソッドの名称や動きを暗記しておく必要はないため「あんなメソッドあったなあ」と思い出せれば十分です。実務では自分以外の人が書いたコードを読む機会も多いです。頭の中にインデックスがあれば必要十分です。多くのメソッドや書き方を知っておくとレビュー速度が上がったり、時にはより良いコードへのアドバイスもできるでしょう。#まず試験という性質上、暗記が必要になるところ。実務ではドキュメントを見たりサっとirb(RubyのREPL)で確認したりできます。書いたコードの動作はテストコード担保されるのが必定です。資格試験に必要な暗記力は実務ではあまり要求されません。#次にひっかけ問題が数多く出題されること。正しい理解を確認するためにひっかけ問題になってしまうのはわからなくもないですが、ひっかけ問題に相当するようなコードは実務では出てきません。出てきた場合はいちはやく修正の対象になります。そんなひっかかってしまうほど誤解しやすかったり、読みにくいコードは書いてはいけません。こんな問題が出てきます。reverseしてるのに、その後で使ってないんです。reverseは非破壊的(元のレシーバーの値を変更しない)メソッドです。arr.reverseと代入するかしないといけません。こんなコード実務じゃありえないです。2行目はまったくの無駄です。仮にうっかりしてしまったとしても、自分で実行結果を確かめて修正するか、テストが落ちるのでわかるのが当然です。ありえないので、reverseしてるからついついreverseされた前提で考えてしまいませんか。#この試験に限定されたことではありませんが、試験内容の勉強とともに試験に合格するための勉強が求められます。ひっかけ問題にひっかからないよう精度を上げる必要があります。技術力を上げたいなら試験対策として精度を上げる勉強は不毛に思えてきます。上のひっかけのような問題にひっかからないために、実務では見ないようなコードを読んでうっかりひっかからないように注意して答える。新しく勉強したメソッドの挙動ならまだしも、何度も何度もすでに知ったメソッドの挙動を読みにくいコードを読んで間違えないよう精度を上げるためだけの反復練習を行う。これのなんと不毛なとか。いって精度を上げても実際合格するまでは心配なので油断できません。楽しくない勉強ですね。#いまだにv2.1なのもいただけません。現行のサポートされる最低バージョンは2.4系です。最新版ではないのはしかたないとして、サポート期限をとうに過ぎた2.1なのはいかがなものかと思います。現行Rubyは2.7.0が最新、v3が今年の末にはリリース予定です。#模試をやるとにかく模試をやる模試で間違えた問題を見直すです。#合格目的でなくても模試を2、3周するのは良い勉強になります。同じ模試だと答えそのものを覚えてしまって効果が薄れてしまいます。Examination合格教本とGistは固定の問題なので、期間を少し空けてやるほうが良いですね。RExは問題の順番はもちろん、内容も少し変わるので一番良くつかいました。以前あったドリル型問題集のミニツクは今はアクセスできなくなってるようで残念です。#模試をやったらかならず復習する。間違えたところはなぜ間違えたのかを明らかにする。ひっかけにひっかかったのか、挙動を誤解していたのか、全然知らないコードだったのか。解説を読むだけではなくirbのようなREPLで実際にコードを書いてみて確認するのはとてもいいですね。#まず、そもそもRubyが全然わからない、基本がわからないというのであれば、Progateをやったり、プロを目指す人のためのRuby入門(通称チェリー本)がオススメです。Qiitaが特に良かったです。これ以外に自分が間違えたところ、今イチ覚えられないところはテストの答え合わせをするたび、メモって見直すようにしていました。Ruby技術者認定試験バウチャーとかは焦って準備しなくてOKです。Prometricのサイトで予約日を指定してからクレカ払いが可能です。実際の試験は会場に行って、会場にあるPCからマウス操作で答えるタイプのテストです。持ちものは腕時計すら持ち込み禁止ですが、ホワイトボードとマーカーを貸し出してくれるのでメモをとったり、書いて整理してみたりは可能ですので安心してください。#88点で合格しました。模試は90点以上確実に取れるようになってたので、ちょっと下がりました。原因としてはまったく模試で触れられてなかったような問題がいくつかでました。覚えてる限りだと、each_with_objectのようなeachの亜種は完全にノーマークでした。ブロック変数が複数ある場合、どちらに何が入るか覚えておいたほうが良いでしょう。最初のほうでノーマークだった問題にあたって気持ちが焦せりました。試験はメンタルスポーツに近いですね。不安になると自信のある問題の解答も怪しく思えてきます。1周は20分ぐらいで終えれたので2回ほどみなおし、ケアレスミスを最低で3問は拾ったはずです。見直した結果、絶対間違えないだろう、と思える問題数が合格ライン以上だったので試験を終えました。そのぐらい不安になったので88点はまあ上出来ですかね。試験範囲の知識を着実に得るには試験勉強はとても良く、しかし、試験で合格点を確実に取るための勉強は不毛と言わざるを得ない。不毛だけど自信がつくまで解答精度あげるしかないです。された(Goldをどうするかはひとまず置いといて)でした。合格という結果以外も含めるとなかなか学びのある良い経験でした。