🦧

【2023年版】Ruby Gold 3.1 合格のための学習方法

2023/10/28に公開

今年春頃にRuby Gold 3.1 を取得しましたので、ここに私の学習方法についてまとめます。
合格までに使った書籍やサイトなどを紹介させていただき、受験者の方が合格へ近づく手助けをできたらと考えています。ちなみに点数は 80/100 とギリギリでした。

執筆者について

受験時のスペックを記載します

  • 実務経験 1年を超えたくらい
  • 競技プログラミング At Coder 茶色レベル
  • Ruby Silverは実務に入る前(Gold受験時の1年前)に取得済み

Ruby に対して、ひいてはバックエンド側に対してより深い理解や知識を得たいと考えたのが受験のきっかけでした。
受験当時は実務経験 1 年を超えたくらいでしたが、難易度的には実務未経験でも十分合格を狙える試験ではないかと考えています。勉強時間は 2 週間( 50 時間未満)程度であったと思います。

学習について

  • 使った教材はRuby技術者認定試験合格教本REx Ruby Examination、そしてRuby Goldを受験した先人たちのブログ記事です。
  • 基本的にはRuby合格教本で基礎知識をインプットし、RExやブログ記事で掲載されている問題を手を動かしながら理解を深めていく、分からない部分に関しては徹底的に調べあげるという形で学習していました。

次から具体的な学習の手順を紹介します。

STEP1 Ruby技術者認定試験合格教本

所要時間 10 時間

  • Ruby Silverの受験から 1 年以上期間が空いてしまっているため、ざっと読んで基礎知識をさらいました。
  • 試験範囲の教本に記載されている部分に関して、教科書に記載の説明では分かりにくい部分に関しては検索し、きちんと理解できたと言えるレベルまで知識を磨きました。
  • 実務で Ruby を長く触っていたりする方に関してはこのSTEPに関しては飛ばしてしまっても問題ないと思います。
  • STEP 1 をこなせば、30〜40点ほどは得点できる状態になっていると思います。

STEP2 REx Ruby Examination

所要時間 20 時間

  • RExに関しては90% を超えるまで問題を解き、誤った問題は解説を読みました。それでも理解が浅くなっている部分は検索したり、手を動かしながら理解を深めました。オンラインの実行環境でプログラムを実行して理解を深めました。
  • 問題を解く中でどの問題が弱いのか傾向をつかみ、そのテーマに関して調べ、まとめるなどをしていました。
  • RExに関しては「継承」に関して本番でも出そうな問題が多く掲載されているので、きちんと理解して得点源になるよう学習を進めたいところです。
  • STEP 2 をこなせば、50〜60点ほどは得点できる状態になっていると思います。

参考までにRExの模擬試験の結果は下記の通りです。ご自身の結果を比較することで、現時点での合格可能性をある程度予測できるのではないかと思います。

回数 得点
1 回目 44 点
2 回目 60 点
3 回目 78 点
4 回目 84 点
5 回目 82 点
6 回目 86 点
7 回目 90 点
8 回目 84 点

STEP3 Ruby Goldの記事を読み漁る

所要時間 20 時間

STEP 2 よりも時間をかけて取り組みました。1年前の実務経験がない時期に受験を1度したことがありました。REx で 95% ほど得点できる状態で受験しましたが、合格点に10点足らない65点で不合格になった経験があります。REx で出題されない問題も多く、それをカバーする対策が非常に重要だと考えています。

  • 以下で紹介するブログではRExではあまり出題されないRuby 3.1 で導入されたメソッドや概念を学習でき、合格に近づくことができます。必ず読み、メソッドやclassへの理解を深めたいです。
  • filter_mapナンパラ_1ぼっち演算子Hash#digなどが紹介されています。
  • STEP 3 をこなせば、75〜85点ほどは得点できる状態になっていると思います。

参考にしたブログ記事

Ruby Gold 3.1の対策と出題傾向について(2022年11月)
新しいRuby技術者認定試験Gold 3.1を受けた
Ruby技術者認定試験 Goldの直前に振り返っておきたいところ
武田哲也さんのRuby技術者認定試験受験記

試験で重要だった項目

  • クラス変数は共有される
class A
  @@a = 1
  def l
    puts @@a
  end
end
class B < A
  @@a = 2
  def m
    puts @@a
  end
end
class C < A
  @@a = 3
  def n
    puts @@a
  end
end

A.new.l #=>3
B.new.m #=>3
C.new.n #=>3
  • eachの外でローカル変数を規定していれば、eachの中で代入され、外で出力できる
l = 0
[1,2,3,4].each do |i|
  l = i
end
puts l #=>4
  • 配列の代入
a,b = [1,2]
puts a #=>[1,2]
puts b #=>nil

勉強しなかった項目

Goldの受験の際によく薦められているメタプログラミングRubyという書籍は読みませんでした。

実務未経験時に受験した際には読みましたが、実際の試験でこちらの内容を問われることはなく、合格するという一点においてはあまり効果はないと感じていたためです。ただ、Rubyひいてはプログラミング言語に対する理解は多分に深められるので受験後に読んで、さらに深くRubyを理解するきっかけにしたい本です。

受験を通しての感想

受験を通して今まで曖昧な理解だった部分が減り、コードに対する理解も深くなりました。Ruby Goldは、バックエンドエンジニアとしてステップアップするためのおすすめの資格であると感じました。受験を通して以下のように成長できました。

  • オブジェクト思考に関する理解が深まり、コードの関連性が深く理解できるようになった。
  • インスタンスメソッド、特異メソッド、インスタンス変数、クラス変数、定数などの使い分けがはっきりとできるようになり、適切な選択ができるようになった。
  • Enumerator、例外処理、Proc、Lambdaなど自由に扱える記法が増え、実装の幅が広がった。

さいごに

お読みいただきありがとうございました。
少しでもお役に立てたら「LGTM」していただけると嬉しいです。

Discussion