6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita株式会社Advent Calendar 2024

Day 6

【LT発表】Ruby 技術者認定試験 Gold に合格してみて

Last updated at Posted at 2024-12-12
1 / 19

自己紹介

翼 / Tsubasa

  • 2019年 新卒で営業会社に入社
  • 2020年 9月 にエンジニアに転職
  • 2023年 2月から Qiita にジョイン!
  • 2024年 7月に 名古屋から東京に転勤!
  • Ruby on Rails, React, TypeScript, GraphQL を業務で使いながら開発してます!
  • 初めてのLTです! よろしくお願いします!

Ruby 技術者認定試験とは

Ruby技術者認定試験制度は、Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師及びRubyを学ぶ学生などを対象とした認定試験制度です。

認定者は、Ruby技術者としての技術力を公正に評価され、高い水準のRubyによるシステム開発能力を持つことを認定されます。

ref: https://www.ruby.or.jp/ja/certification/examination/

試験はSilverとGoldがあり、今回はGoldの話をしようと思います!


概要

項目 内容
試験時間 90 分
試験方法 CBT 形式
問題数 50 問
合格ライン 75%
料金 16,500(学割で 8250 円)

Gold の認定条件は Silver と Gold の両方に合格することとなっています。
(因みに勉強時間は Silver 3週間、 Gold 3週間くらい)

https://www.ruby.or.jp/ja/certification/examination/ より


Goldの内容は?

Silverで求められる範囲(文法、オブジェクト指向、組み込みライブラリ、実行環境など)を更に掘り 下げた知識に標準添付ライブラリ知識やアプリケーション設計に必要となるクラスやオブジェクトに関する知識を追加し、Rubyによるプログラム設計技術を持つことを認定します。

https://www.ruby.or.jp/ja/certification/examination/ より


問題


class Class
  def method_missing(id, *args)
    puts "Class#method_missing"
  end
end
class A
  def method_missing(id, *args)
    puts "A#method_missing"
  end
end
class B < A
  def method_missing(id, *args)
    puts "B#method_missing"
  end
end

B.dummy_method

何が出力されるでしょうか

1.エラーになる
2.A#method_missing
3.Class#method_missing
4.B#method_missing

理由も一緒にどうぞ!


答え


正解は...

  • 3のClass#method_missing

解説

  • method_missing は呼び出されたメソッドが定義されていなかった時、
    最終的に呼び出されるメソッドになります。
  • 今回、 4 の B#method_missing でないのは B.dummy_method が呼び出されたときに
    B クラスのクラスメソッドとして dummy_method が定義されていないためです(インスタンスメソッドとして定義されている)。

問題

module M
  def foo
    super
    puts "M#foo"
  end
end

class C2
  def foo
    puts "C2#foo"
  end
end

class C < C2
  def foo
    super
    puts "C#foo"
  end
  prepend M
end

C.new.foo

1.C2#foo
C#foo
M#foo

2.C2#foo
M#foo
C#foo

3.M#foo
C2#foo
C#foo

4.エラーになる

理由も一緒にどうぞ!


答え


正解は.. 1の
C2#foo
C#foo
M#foo
でした!

解説

prepend は include と同様にモジュールのメソッドを クラスに取り込むためのメソッドです。
prepend の特性として、 呼び出したクラスよりも先に呼び出すため、
今回のような出力順になります。


取得してよかったこと

主に以下の4つ

  • いちいちググることがなくなる
  • Rubyを本質的/直感的に理解できる
  • オブジェクト思考に関する理解が深まった
  • 学習の習慣が染み付く

いちいちググることがなくなる

業務のスピードが上がることが一番大きいです!

  • 🤔 この配列を昇順にするのに何使えば良いんだっけ?
  • 💡 Array#sortメソッドを使う
    • ruby 配列 並び替え で検索するとかがなくなった
    • 積み重ねで業務時間短縮

Rubyを本質的/直感的に理解できる

  • 🤔 なぜ、 Stringより Symbolの方が処理ってなんで早いんだ?
  • 💡 SymbolStringよりもメモリ効率が良く、処理が早い
  • なぜ?
    • Symbol はイミュータブルで、メモリ上に一度しか存在しない
    • Stringはミュータブルで、同じ文字列が生成されるたびに新しいインスタンスが作成され、メモリを多く消費する

オブジェクト思考に関する理解が深まった

  • インスタンスメソッド、特異メソッド
    • Railsのモデル開発時 に特に 役立った
  • include、extend、prependの違い探索経路
    • テストにあった問題など

学習の習慣が染み付く

試験形式で締め切りがあることによって

  • 勉強する環境
  • 勉強を継続する仕組み作り

が作れる


結論


夏休みの宿題は最後にやるタイプの人は、資格駆動の勉強はオススメだぞ!

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?