見出し画像

初学者が2ヶ月くらいでRuby Association 認定 Ruby Programmer Gold 3.0を取得する方法

今年 (2025年) 1月にRuby Association 認定 Ruby Programmer Gold 3.0を取得しました。ちなみに、昨年 (2024年) 12月に Ruby Programmer Gold 3.0も取得しました。そのログを残しておきます


簡単なプロフィール

  • 29歳男性。独身独居。

  • 開発職ではない。稀にIT企業にいる何をしているか不明な人。

  • Ruby歴0年5ヶ月くらい。PythonとJavaは遊び程度なら書ける。職業エンジニアではないので売り物になるコードは書けない。

  • 応用情報技術者とかAWSの資格は何個か持っている。


取得した理由

  • 開発職のメンバーが自分のチームにいるのに、Rubyのことよく知らないのって、どうなの…?と思ったから。

  • ちょうど会社にigaigaさんが毎週来てくれていたので、チャンスだと思ったから。


勉強の軌跡

Ruby自体の勉強

  • 去年の10月から毎週1時間、非開発職のみんなでigaigaさんにRubyを教わる時間を作りました。テキストはRuby 超入門です。

  • Rubyの言語仕様は、講義と自習を通じて2ヶ月くらいで大体把握しました。よくわからないところはChatGPTに聞いたり、Ruby Reference Manualを読んで、とにかく毎日書いて動かしました。


Silverの勉強

  • 11月末から1ヶ月かけて以下を実施しました。

    • ① 公式テキストの基本問題と演習問題を解く

    • ② 公式の模擬試験を解く

    • ③ REXの問題を解く

  • ①は、版が更新されていても、巻末の問題は更新されていないので、古い物でも問題ないと思います。1周だけして、あとは間違えた問題を見返してました。

  • ②は、一番大切です。全ての問題に対して周辺知識をまとめた解説noteを作りました。他人に解説できるようになるまで、何周も解き直しました。

  • ③は、Silverだとあまりやる必要なかったです。


Silverについて思ったこと

わーい
  • 標準ライブラリに関連する問題は、ほとんどでない

  • 押さえておくべきは、まずHash、Array、String、Integer、Floatなど基本的なクラスの特徴とメソッド。次いで、リテラル、演算子、ヒアドキュメント、エラー処理。Classも細かいところまではあまり出ない。

  • 破壊的変更をするメソッドとそうでないものの区別はくどいほど出るのでよく押さえておく。

  • とにかく書いて動かす。わからないときはChatGPTに聞きまくる。


Goldの勉強

  • 12月末から1ヶ月かけて以下を実施しました。

    • ① igaigaさんと出題範囲や模試の問題を眺める

    • ② 公式テキストの基本問題と演習問題を解く

    • ③ 公式の模擬試験を解く

    • ④  REXの問題を解く

    • ⑤ ②③④でエンカウンターしたわからない問題をigaigaさんとChatGPTに聞く

  • まずぶち当たった問題は、問題を読んでもチンプンカンプンということ。SilverからGoldのレベルアップは尋常ではありません。

  • そこで、まず①で書いた通り、igaigaさんと模試の問題を眺めてみて、どんな知識が要求されているのか、どうやって問題を解いていくのかを整理しました。プロの人がどうやってコードに書いてあることを解釈するのかを眺めて、その真似っこをしてみようと企んでいました。

  • ①を通じて、全体を眺めつつコードは後ろから読んでいくといいんだな〜と学びました。出力の結果から処理を追いかけていくと言う順番でないと、問題が何を問おうとしているのかがわからず、着目するポイントが定まらないからです。

  • 次に②、③です。Silverと同じように、基本的には模擬試験の問題に重点を置きました。

  • ④については、Goldの方は範囲に対して②③で実施できる問題数が少なく、演習問題の量を稼ぎたかったため、同じくらい気合を入れて実施しました。ただ全部満点になるような時間とエネルギーは投下していません。②③で演習不足だったクラス関連の問題が潤沢に収録されているので、結果とても良かったです。


Goldについて思ったこと


わーい
  • 標準ライブラリに関連する問題は、やはりほとんどでない。Date/Time周りをみておくと良いでしょう。

  • 押さえておくべきは、クラス周り。継承、インスタンス変数、定数探索、レキシカルスコープ、特異クラスなど。この辺りは(当時の性能だと)ChatGPTでも間違えるような問題が出題されていたので、かなり注意深く学習する必要がある。次いで、Silverで出題された内容の発展的な内容。さらに、引数の取り方、遅延評価、エイリアス、大域脱出、Enumerable モジュールのincludeなど。

  • 3.0から追加された新しい機能は、番号付き引数 Numbered Parameterとパターンマッチングが出ました。

  • Silverの時以上に、とにかく書いて動かす!!わからないときはChatGPTに聞きまくる。クラス周りの問題は複雑すぎて初見では理解できないことがほとんどのため、ちょっとずつ自分の手で書いて、挙動を変えて覚えていく。


感想

  • Rubyの言語仕様について大分理解が進みました。

  • Railsを経由しないでRuby Goldまで取り切ったので、Railsを学習し始めてから、Rubyの仕様とRailsの仕様の違いがよくわかるようになりました。

  • 開発チームに簡単なPRなら送れるようになったので、チームメンバーのやっていることを理解するという当初の目的も果たせました。嬉しいです。

  • アドバイスは、①出題されたコードは下から読んでいこう、②問題は全部自分の手で写経しよう、③ChatGPTに質問して解けなかった問題の解説をさせつつ類題を出させよう、の3つです。


いいなと思ったら応援しよう!