自己紹介
翼 / 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
の方が処理ってなんで早いんだ? - 💡
Symbol
はString
よりもメモリ効率が良く、処理が早い - なぜ?
-
Symbol
はイミュータブルで、メモリ上に一度しか存在しない -
String
はミュータブルで、同じ文字列が生成されるたびに新しいインスタンスが作成され、メモリを多く消費する
-
オブジェクト思考に関する理解が深まった
- インスタンスメソッド、特異メソッド
- Railsのモデル開発時 に特に 役立った
- include、extend、prependの違い探索経路
- テストにあった問題など
学習の習慣が染み付く
試験形式で締め切りがあることによって
- 勉強する環境
- 勉強を継続する仕組み作り
が作れる