こんにちは。開発担当の木村です。
この度、「Ruby Association Certified Ruby Programmer Gold」に合格したメンバーが 5 名以上となったため、フェンリルは「Ruby Association Certified System Integrator Gold」として認定されました。
そのうち 3 名以上が Ruby Association Certified Ruby Programmer Gold と Ruby Association Certified Ruby Programmer Gold version 2.1 の両方に合格しており、フェンリルは version 2.1 にて認定を受けた企業となりました。
守秘義務上、試験内容に突っ込んだお話はできませんが、これから Ruby Association Certified Ruby Programmer Silver/Gold を目指す方へ抑えておきたいポイントを簡単にご紹介します。
おすすめ参考書
・Ruby 技術者認定試験 公式ガイド (ITpro BOOKs)
・Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)
・メタプログラミング Ruby(KADOKAWA/アスキー・メディアワークス)
上記3冊のうち、「Ruby 技術者認定試験 公式ガイド」と「メタプログラミング Ruby 」は残念ながら執筆現在 Amazon.co.jp にてマーケットプレイスのみでの販売となっています。
特に「メタプログラミング Ruby」に関しては試験対策としてだけでなく、是非 Ruby エンジニアは読んでおくべき本ですので入手できるうち手に入れましょう!
また、後述しますが上記の参考書は Ruby 1.8.7 時点での情報をベースに書かれているため、Ruby 2.1 では動作が変わっていたり、非推奨になっているメソッドもありますので、自分の目で確かめながら、学習する必要があります。
Silver 試験合格のために
Silver 試験では基本的に Ruby の組み込みクラスの標準メソッドの動作が問われます。下記のポイントを押さえて基本的な知識を身につけましょう。
1.「Ruby 技術者認定試験 公式ガイド」をひと通り読むこと
基本的には上記「Ruby 技術者認定試験 公式ガイド」をひと通り読むことで出題範囲の各メソッドを押さえることができます。まずは各メソッドがどんな動作をするかを理解しましょう。
2. メソッドが破壊系/非破壊系を覚えておくこと
インスタンス自身の状態を変えてしまう破壊的メソッドには必ずしも ! が付いているわけではありません。! がついてなくても破壊的であるメソッド(concat, insert など)をしっかりと押さえておきましょう。
3. 動作が同じ・似通ったメソッドも覚えておくこと
メソッド名が違っても動作が同じもの(map と collect, find とdetect など)をセットで覚えておきましょう。また、名前は似ているが微妙に異なった動作をするメソッドについても注意が必要です。(chop と chomp など)
#動作が同じメソッドの例 [1,2,3,4].map {|i| i + 1 } #=> [2,3,4,5] [1,2,3,4].collect {|i| i + 1 } #=> [2,3,4,5]
4. Active Record との違いに気をつけること
Ruby on Rails (Active Record) を同時に学習されている方は注意が必要です。ActiveRecord の create! や update! メソッドは ! が付いていますが、非破壊的という意味ではなく、失敗時に例外を発生させるか否かの挙動を制御する意味があります。破壊的/非破壊的と例外発生の許容を混同しないように気をつけましょう。
5. 実際の動作を irb / pry などで実際に確かめてみること
紙上でコードを眺めるだけでなく、実際に irb や pry で動作を確かめながら学習するとと良いでしょう。そうすることで、各メソッドの動作が体に染み込み、見たことあるけどなんだっけ状態を防げます。また、実際に業務で使う際の利用シーンもなんとなく想像しやすくなるのではないでしょうか。
Silver 試験に合格するためだけであれば丸暗記でもいいですが、自分の力として身に付けるためには、どんなシーンでこのメソッドが活用できるかを想像しながら学習を進めることをおすすめします。
今は公式の模擬問題もあるようなので、できるだけ多くの問題を解いてから試験に望んでみてください。
Gold 試験合格のために
Gold 試験ではとにかくオブジェクト指向についてしっかりと理解しておくことが必要です。
1.「メタプログラミング Ruby」を読むこと
「Ruby 公式資格教科書」をひと通り読み、演習問題を解くことは学習範囲を絞り込む意味でも有効ですが、正直これだけでは合格は困難です。オブジェクト指向の補強として「メタプログラミング Ruby」が強力な支えとなります。クラスの継承やメソッド・定数の探索チェーンについてはこの本で抑えておくと良いでしょう。
2. Ruby 独特のオブジェクト指向を理解しておくこと
Ruby の特異クラスの考え方は必須で理解しておきましょう。俗に黒魔術といわれていますが、使いこなすことができれば業務においても様々な拡張をする場合に大いに役立ちます。また、self が今何を指しているかなど意識しながら学習を進めることでちょっとひねった問題にも対応できます。
3. 自分で問題を作って解いてみること
例題を解くだけでなく、自分で問題を作って解いてみることが大切です。例題だけでは数に限りがあります。また、例題を解いただけではちょっとソースコードを変えられた時に対応できない可能性もあります。自作の問題を作成し、演習を繰り返すことで様々なパターンを身につけておきましょう。
例えば、以下の様なコードを書いてみて基本的な動作を学びます。ここから特異クラスにしてみたり、クラスの変数を削除してみたりすることで様々なパターンの動作が確認できますね。
module Hoge @@x = 'Module Hoge' end class Fuga @@x = 'Class Fuga' include Hoge end module Hoge p @@x end class Fuga p @@x end
4. 例題のソースコードをちょっと変えてみること
演習問題のコードをベースに、include する場所を変えてみたり、クラス変数をインスタンス変数に変えてみたりして様々なパターンで実行結果がどう変化するかも理解しておきましょう。単に実行するだけでなく、どういう実行結果になりそうか・何故その実行結果になるのかを押さえておくと応用問題にも対応できます。例えば上記 3 の項目の include の位置を変数宣言の上に持ってきたらどうなるかなど、とにかくいろいろ実行してみると良いでしょう。
5. 差分は公式サイトを中心に抑えておくこと
version 1.8.7 と version 2.1 両方を受験・合格していますが、version 2.1 になったことにより version 1.8.7 しか学習したことない方が全く歯が立たないということは一切ないと感じました。
ご存じのとおり、Ruby 1.8 → 2.1 で言語仕様が変わるほどの大きな変更は無いため、差分を抑えることはそこまで大変ではありません。Ruby 1.8 → 2.1 の差分かつ出題範囲である Enumerable#lazy, Fiber, Module#prepend, Refinements などをリファレンスを中心に学習しておく必要があります。
公式サイトの「Ruby 技術者認定試験改訂のお知らせ」 にあるような例は最低限、実行結果とソースコードを理解し、自分でも同じコードが書けるようにしておきましょう。
また、Silver と同じく、これらと同じような実行結果にするために、他に方法がないかどうかを併せて学習することをおすすめします。
最後に
試験に合格することがゴールではありませんが、この資格の試験勉強を通して得られる知識は実践に活かせるものばかりだと思います。
学生の方を対象に受験料の割引が受けられる「ガク割」もスタートしたため、社会人だけでなく、Ruby を学習中の学生の方にも受験しやすくなったのではないでしょうか。
将来策定されるであろう「Ruby Association Certified Ruby Programmer Platinum」に誰よりも早く合格するため、メンバー一同日々鍛練していきます!
Ruby on Rails エンジニアも絶賛募集中!
フェンリルでは、 Ruby on Rails を用いた WEB アプリケーション開発案件も多数あります。少しでも興味のある方、Rails が大好きなエンジニアの方、ぜひご応募ください。新卒の募集もしてますよ!
フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!
フェンリル採用チームの Twitter アカウントです。応募前のお問い合わせや、ちょっとした相談ごとなどお気軽にどうぞ!