桐生あんずです。Ruby技術者認定試験Silverに合格したので勉強法や試験勉強を通して得たことなどを書いていきます。
Ruby技術者認定試験Silver受かりました pic.twitter.com/kf4VbW9kdL
— 桐生あんず (@anzu_mmm) September 14, 2018
1,Ruby技術者認定試験を受けた理由
「Ruby技術者認定試験」とはRubyアソシエーションという非営利団体が実施しているプログラミング言語のRubyへの知識や実力を測る認定試験制度です。
SilverとGoldに分かれており、Silverは「Rubyの文法知識、Rubyのクラスとオブジェクト、評文のライブラリの知識について」、Goldでは「Silverで求められる範囲(文法、オブジェクト指向、組み込みライブラリ、実行環境など)を更に掘り下げた知識に標準添付ライブラリ知識やアプリケーション設計に必要となるクラスやオブジェクトに関する知識」に関する実力を測るものです。(公式サイトから抜粋)
なんでいきなりこの資格を取ろう!と思ったかというと、今年の6月にあったRubyKaigiに参加し様々な発表を聞いてみてもっとRubyの言語仕様や内部構造をもっとちゃんと理解したいと思ったのと、同年代の子達がGoldまでちゃんと取っているのをみて凄いなあと思ったので私も取ってみたいと思ったからです。まあ羨ましかったんですよね。(下の記事にそこらへんの詳細が書いてあります)
というわけで夏休み中の時間のあるうちに勉強して受験することにしました。
2,勉強法
試験の1ヶ月〜2週間前は、とりあえずRubyKaigiの出張本屋さんで買った公式の合格教本を斜め読みしていました。過去問をやる前に文中の教材ページは全部目を通した方がいいと思い込んでいましたが今思えば非効率的だった気がする。
[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応) Ruby公式資格教科書
- 作者: 牧俊男,小川伸一郎,前田修吾,CTCテクノロジー株式会社
- 出版社/メーカー: 技術評論社
- 発売日: 2017/08/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
試験日10日前ぐらいになってから、そろそろ過去問をやらないとマズいのではと思い始めたのでネットで落ちている過去問を探して解いたり公式の合格教本のSilver基礎問題30問+演習問題50問を解く活動を始めました。
・使った教材一覧
・Rubyがミニツク(Ruby技術者認定試験Silver対策問題集)
ネットで無料公開されているRubyの学習サイトです。
公式の問題集ではありませんが、様々な問題が用意されていて難易度も後半になっていくにつれ上昇していくので良い教材だと思いました。特にドリル5では試験でよく出てくるFileクラスやDirクラスの問題を中心に取り扱っていて勉強になりました。
あと4択クイズ形式のWebアプリケーションなのでスマホからでも解きやすくて電車の中でのスキマ時間中によく解いていました。(回答時のUIがちょっと見づらい部分もあるのが気になりますが)
gistで公式の模擬問題集が公開されています。
最初に紹介したミニツクと比べると比較的容易な問題が多い印象でしたが、本番ではこの模擬問題集と似た形式の問題がそこそこ見られました。最初に答えを見ずにやってみて自分の実力がどれくらいなのか測ると良いかもしれません。(自分の場合は確か86点ぐらいでした)
公式で出されている問題集ということもあるのか、本番の試験の問題はこの本で出てきた問題の雰囲気と近いものが多かった印象でした。何回やっても損はないと思います。間違えた部分は該当するリファレンスの部分を読み込んで理解を深めるのを繰り返すのをやるとかなり効率的だと思います。
この教材のリファレンスもよく読み込んでいましたが、逆引きRubyもよく眺めていました。試験直前には家にあったパーフェクトRubyも引っ張り出して覚えることの多いFileクラスの章やTimeクラスの章を読み込んでいました。
勉強期間中にネットで合格体験記のエントリを巡回してみたところ、私と同じようにこの3点の問題集を回して試験勉強をしている方がかなり多かった印象を受けました。1発でちゃんと受かりたい方はこの3点を重点的にやることが大事だと思われます。
・頻出問題の傾向
過去問を解く内に「あっこういうタイプの問題がよく出てるな」と気付いてきたのでシンプルにまとめておきます。
・Stringクラス、Arrayクラス、Hashクラスまわりのメソッド
・論理演算子の使い方(特に||や&&について聞かれることが多かった印象)
・クラスとインスタンスや、モジュールの動きやオブジェクトの所属するクラスを問う問題(superの使い方などがよく出る)
・ファイルの読み書きに関するもの("a","a+","r","r+","w","w+"の違いをちゃんと理解しているかなど)
・Timeクラスのメソッド(strftimeメソッドはどんな処理を行うものなのかなど)
・同じ動きをするメソッドについて(mapとcollect、selectとfind_all、findとdetectなど)
・!がついていない破壊的メソッドについて(concat,shift,unshift,pop,pushなど)
受ける方はこれらの内容を重点的に調べて学習していくのがオススメです。
・参考にしたサイト
リファレンスサイトを中心に眺めることが多かったですが、特定のメソッドについての解説や、Rubyについての小ネタをまとめたもの、知っておくとちょっと面白い情報などもちょくちょくリサーチしていました。
リファレンスサイト。すごく見やすくて便利でした。
最初はこのメソッド群に対しての扱い方に混乱していたのですが、これを読んでスッキリしました。
私と同じでRuby技術者認定試験Silverを受けた方の記事。!のつかない破壊的メソッドを一通り眺めたいときにすごく便利でした。
配列の抽出・検索を行うメソッドについて問う問題がかなり多いのでこういった情報がまとめられているとすごく助かります。
こんなメソッドもあるのか〜と色々勉強になりました。betweenメソッド良いなーと思ったのですが確かにcaseで代用できちゃいますね……。
map と collect、reduce と inject ―― 名前の違いに見る発想の違い
同じ動きをするメソッドについて名前の違いに見る発想の違いをまとめたもの。手続き型言語と関数型言語、どちらに沿っているかどうかということですごく興味深かったです。私もそろそろ関数型言語をちゃんと触ってみたい……。
3,合格して得たこと・思ったこと
周りにいる日常的にRubyを書いている人たちを見てると、別にこの資格がなくてもバリバリコードを書けている人はたくさんいるので、「この資格を取れば技術力がグッと上がる!!」みたいな期待はあまりなかったのですが、Ruby歴1年ぐらいのひよっこ学生エンジニアの自分の場合は勉強してみる価値は十分あったんじゃないかなと思いました。
業務中ではRailsを主に触っていて、雰囲気でRubyを書いている感が否めなかったのですが、この試験の勉強を通してRubyのクラスやインスタンスの仕組みやメタプログラミングについて、どんなクラスやメソッドが用意されているかなどを改めて包括的に知ることができたのでRubyの仕様に対して以前よりも具体的なイメージを持つことができるようになったと思います。この経験を糧にして今後コードを書いていくのが楽しみです。
といったように、得られたものはあったと感じているので、業務でRubyを触り始めたけどイマイチよく掴めない方や、Railsで個人サービス開発をしているけれどRubyに対してちゃんと理解できているか不安な人はこの試験に向いていると思います。
株式会社万葉さんも新人研修にRuby技術者試験Silverの受験を組み込んでいるとのことですが、新人Rubyエンジニアの方とはかなり相性の良い試験だと思ったのですごく納得しました。
4,まとめと今後の展望
6月のRubykaigiの時に立てた「苦しんで覚えるC言語」の読破とRuby技術者認定試験に挑戦するという二つの課題を達成できたので嬉しいです。
この流れでGoldの方も受けた方が良いと思ったので3週間後の10/5に試験をセッティングしました。「メタプログラミングRuby第二版」をそれまでに読まないとだ〜〜。この流れでどんどんRubyについて深く知っていけそうで楽しい。
今のところ3章まで読んでいますが試験勉強が功をなして書いてあることの意味がちゃんと分かって嬉しい。家に置いてあるEffective Rubyも合わせて読みたい。
ただ、受かったとはいえSilverの点が予想よりも結構低かったのでそこは反省した方が良さそう。Goldの方はギリギリ合格にならないように頑張ります!!!
そんな感じです。