めだどくしょ

読書感想文を書きます。情報科学・技術、プログラミング、アート。Twitter -> @meda_dada

Ruby技術者認定試験(Silver)に合格しました

f:id:nitrogen037:20170909213928j:plain

Ruby技術者認定試験、Ruby Association Certified Ruby Programmer Silver version 2.1に合格しました。 88点でした。90点には一歩届かず。

感想の少ない資格試験なので、ブログに思ったことを書き記しておきます。

どうしても教本が中心となる

公式の教本は誤字脱字の件もあってネット上の低評価レビューが目立ちますが、現状ではこれ以外に過去問の傾向を解説している書籍がないため、必ず買いましょう。 私はレビューを読んで改訂前のを買いましたが、アマゾンレビューで酷評されている改訂版と内容はほぼ同じです。改訂版が会社にあるのでテキトウなことは言っていないです。

説明文章の誤字脱字はともかく、サンプルコードの方は「それ通りに動かない」ということはなかった…と思います。とはいえ、書籍の紹介されているコードが動くかどうかのためにコーディングするのではなく、自らの技術として身につけるために自分のパソコンできちんとコードを動かしましょう。そうすればインプットと、期待するアウトプットが頭の中で一致していきます。

(※補足:どうやら先月である2017年8月25日に改訂版の改訂版、すなわち改訂2版が出版されたようです。ここで書いている「改訂版」は2015年に発売された方、「改定前」は2012年の方のバージョンを指しています)

あと有名なのが、この無料で開放されている自習ページ

ミニツク - Rubyのe-ラーニング研修システム

いくつかの質問は本当にSilverの範囲内なのか分からないですが、非常に役に立ちます。

このSilver試験、様々な意見があるものの、本番を受けるまでどこからどこまでが試験範囲なのか分からないと思います。 それがまた受験する日によって問題も大きく変わっている可能性もあります。

自分の時は実行環境系の質問はゼロ、オブジェクト指向問題が2,3問、IO系が3問といった感じでした。 残りのほとんどの問題が組み込みクラスのメソッドに関する質問でした。

本番では13問間違えばアウトなわけですから、守備範囲を広げることが重要になってきますが、私の場合のようなことになると受験時に若干肩透かしを食らうことになります。

ただ、例えそうであろうと、「ここまではSilverで、ここからがGold(上の難易度)」と境界を知りながら効率よく学習するには、必ず教本を手元に置いておきたいです。

あと、これら以外にはネット上にもあるドキュメントを精読しました。

オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.4.0)

自分にとっての"精読"は、気になったクラスのページを印刷して、通勤中にも読むレベルでの精読でした。必読必須なStringクラスならば両面印刷で20ページぐらいでしょうか。インクがもったいないので白黒印刷にしました。

f:id:nitrogen037:20170909215411j:plain

マジでこういうレベル。何故そこまでやったかというと、試験当日にメソッドの知識に抜け漏れがあったせいで落ちるのが絶対に嫌だったからです。ベンダー資格は受験料が高いからこそ、持ち前の執念さを発揮するタイミングでした。

申し訳ないけど、同じ難易度を再受験するだなんて絶対に嫌だわ…。2回目で合計3万2千円払うとか、その金があれば色々できるだろ?!汗

的確なコードリーディングの手立てとなる

このテスト、何もライブコーディングして出来上がった制作物を評価してもらうわけでなく、提示されたコードのアウトプットを正確に把握するためのテストであるわけで、つい直感でコーディングしがちな私には大変良い薬となりました。人間であって動物でない以上、ちゃんと頭を使って、業務上でもプログラミングの読み書きが冷静にできるようになりたいものです。

日本出身のプログラミング言語の認定試験として、その資格取得における勉強環境の劣悪さにはいち日本人として残念に思いますが、Silverの難易度は一定以上のRuby知識の基礎を保証するものとしては十分に機能すると思いますので、多少合格までの道のりが手探りになりますが目指す意義はあります。

事実、今回の勉強に関していえば、直接実務に役に立つ内容でしたしね。

会社に取れと言われた資格の勉強は個々のモチベーションに依存しそうですが、会社でやることと直結している分には必要性は感じられるはず(Railsとかに触るとかならばね)。

Ruby Goldに関しては、いつ受験するかは未定。上司と相談して決めると思います。


おまけとして、チェックポイントを置いておきます。

  • Rubyでは何が真偽として評価されるのかが分かっていればOK
  • Rubyにはどういう変数であるのか、全体像を理解していれば怖くない
  • メソッド系の中心となるEnumerableモジュールのメソッドを、自分でも書くことで覚えよう
  • そしてEnumerableがモジュールであることに注目。言語のバージョン2.1以降だとどの組み込みクラスにincludeされているでしょうか?配列とハッシュはともかく、map・collectは文字列に使える?整数はどう?
  • このように、クラスとモジュールの利用方法は当然勉強しましょう
  • もしかしたら、特定のクラスのもつ定数も暗記したいかもしれません
  • 自分で気になったメソッドがどのクラスに属すメソッドなのか?逆にクラスのもつメソッドのコンソール上での確認方法は?こういうのも知っていると勉強が捗ります
  • 実務とは少し離れた範囲では、IO系の知識が必須。これは実際にコンソールでカタカタして挙動を見て覚えるしかないでしょう。教本に書いてあることが理解できないとかなら、もしかしたらUnix系のコマンドを少し触るべきかもしれません
  • 過去問の傾向として頻出するメソッドの挙動は、骨の髄まで理解するレベルでしゃぶり尽くしましょう。普段スルメを食べる感覚で!(※一個だけ、よく出てくるメソッドでも細かい挙動を把握していなくて落とした質問がありました。無念)
  • 勉強量がそのまま結果につながる資格なので、泥臭い努力を惜しまずに