先日、Ruby技術者認定試験silverに無事一発合格できました。
Ruby技術者認定試験silverに合格しました。 pic.twitter.com/I21lnJFb5P
— おはようポテト @インターン生ブロガー (@ohayoupoteto22) August 7, 2020
ということで今回は
- Ruby技術者認定試験を受けようか迷っている
- 合格した人って何をどのくらい勉強したんだろ?
- 過去問とか実際に出た問題を知りたい
という方に向けて、Ruby技術者認定試験Silverに合格した際の勉強法と、実際に出題された問題をまとめました。
参考になれば幸いです⸝⸝- ̫ -⸝⸝
お品書き
Ruby技術者認定試験とは?
Ruby技術者認定試験制度は、Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案を行うコンサルタント、Rubyを教える講師及びRubyを学ぶ学生などを対象とした認定試験制度です。認定者は、Ruby技術者としての技術力を公正に評価され、高い水準のRubyによるシステム開発能力を持つことを認定されます
(引用:Ruby Associationより)
簡単にまとめると「Rubyをある程度知ってるよということを証明できる資格」です。
大まかな内容は以下の通り。
- 制限時間90分
- 50問で4択(1問2点)
- 76点以上で合格
- 難易度はGoldとSilverの2つ
- 受験料は16,500円(学生は半額)
くるみ
試験の難易度
このRuby技術者認定試験Silverは、しっかりと勉強していけば決して難しい試験ではありません。
というのも、本番の問題は後述する参考書やサイトの問題を少しいじったようなものがほとんどです。
要領の悪さでいったら日本有数のブログ主でこそ1ヶ月弱かかりましたが、真面目な人であれば2〜3週間ぐらい勉強すれば合格できるのではないでしょうか。
くるみ
結果発表はいつ?
得点に関しては本試験終了後すぐに公開され、合否もその場で判明します。
そしてもし合格だった場合、1週間後ぐらいに電子版での合格証明書が届くカタチです。
合格証明書届いた😳 電子版だけど https://t.co/KhW00n0SuT pic.twitter.com/Xq4QlpYKSr
— おはようポテト @インターン生ブロガー (@ohayoupoteto22) August 11, 2020
早めの予約がおすすめ
今回受験して感じたことがもう一つ。
それは「取り敢えず早めに試験の予約した方がいい」ということです。
自分みたいな超絶怠惰人間の場合だけかもしれませんが、いつまでも予約しないと「まだ受けないから勉強しなくていいや」みたいな思考になってズルズルいってしまうので、取り敢えず早めに予約しておくのが良さげです。
試験は基本いつでも受験することが可能ですからね。
Ruby技術者認定試験Silverに合格した際の勉強方法
まずはブログ主がどんな感じに勉強したのかについて。勉強期間は1ヶ月半ぐらいでした。学校の勉強や他の独学しているものもあるのでそれらが終わってからの時間によくやっていました。
具体的にどんなことをしたのか、それぞれ詳しく見ていきましょう。
参考書を1.5周ぐらいする
勉強に用いたのはRuby技術者認定試験ではお馴染みのこの参考書です。ぶっちゃけこれ一冊さえあればなんとかなるかなと思います。
ですがこの参考書、かなり簡潔にまとめられていますがお世辞のも少ないとは言えない量です。
実際僕も序盤は「ほならね、この参考書を読破してやりますよ」と意気込み1~2週間近く睨めっこしていたのですが…
しばらくしてから「あれこれ一生終わらなくね」と気付くことに。
なので一通り読んで理解したら次のステップに移ってよいかなと。どうせ問題演習で分からないところを調べる辞書として手垢まみれになるので。
今になって思うのは「もっと早くから問題演習に取り掛かればよかった」、これに尽きます。
ちなみに上の参考書は説明が端折ってあるところもあるのでそこは「たのしいRuby」などの他の書籍で補完していました。
メソッド君たちと仲良くなる
ぶっちゃけここをすっ飛ばして問題演習に取り掛かってもいいと思います。
「一発合格しなきゃ実家が燃やされる」なんて人はやった方がいいかもですが。
くるみ
そこでベタではありますが、単語帳を用いて暗記する方法をとりました。
ちなみに単語帳に書いたメソッドの数は130ぐらいです。(覚えたとは言ってない)
ひたすら問題演習をする
そしていざ問題演習へ。
一日50問を解くことをノルマとし、間違えた問題やポイントは逐一メモ帳にまとめていました。字汚すぎますね。
過去問の代わりになるサイト
次にその問題演習で利用した3つのサイトをご紹介します。
ミニツク
「ミニツク」はRuby技術者認定試験Silverの問題だけでなく、Rubyの基礎的な文法についての勉強もできるサイトです。
ドリル形式になっていて、その場で解答と解説が表示されるので効率よく勉強することができるのでオススメです。
くるみ
REX
「REX」はRuby技術者認定試験の問題をランダムで出題してくれるサイトです。ちなみにGoldの問題もあります。
参考書や本試験より難易度は少し高めですが、これに慣れておくことで本試験が簡単に感じるようになります。
前半に「そこまで難しくなかった」と書きましたが、それもこのサイトでしごかれたおかげかも…
くるみ
DIVE INTO EXAM
「DIVE INTO EXAM」は先ほど挙げたREXと同じように問題を”ランダムで”出題してくれるサイトです。
難易度は参考書より少し高めでREXよりは少し簡単です。余裕があれば触ってみるといいかもしれません。
結局どのサイトを使えばいいの?
僕の場合はここで挙げたサイトを全部日替わりで50問ずつ解いていたのですが、本試験で出た問題の多くは参考書の練習問題から多く出ていました。
なので以下ような流れでやってくのがオススメです。
実際に出題された問題
この試験、実は過去問といった過去問があまり出回っておらず、あまり本番の問題を体験できる機会がありません。そこで本試験を受けて印象に残っていた問題を思い出せる範囲でまとめました。
試験前の確認の際などに参考にしてみてください。
zipとtransposeの違いについての問題
a=["松","竹","梅"]
b=["松","たか","子"]
a.zip(b) do |i|#選択肢1
p i
end
[a,b].zip do |i|#選択肢2
p i
end
[a,b].transpose.each do |x,y|#選択肢3
p [x,y]
end
[a,b].transpose.each do |i|#選択肢4
p i
end
この中で同じ出力結果になるのはどれかという問題。
基本的にほとんどの問題で「〇つ選択」と指定があるのですが、この問題含めたまーに「複数選択」というのがあるので注意が必要ですね。めんどくさいったらありゃしない。
正規表現に関する問題
この中から「Ruby」もしくは「ruby」という文字列にのみマッチする正規表現を2つ選べ、という問題。
/^[Rr]uby$/
/^Ruby|ruby$/
/^[Rr][u][b][y]$/
/^R|ruby$/
確かこれは参考書の練習問題でも出ていたので助かりました。例えば選択肢4の場合、行頭がRならなんでも許されて「Roland」でもマッチしてしまうので注意が必要ですね。
「?A」についての問題
p ?A
これも参考書の練習問題で出たもので、「これさぁ、本番で出るわけないじゃん?ww」と高を括ってたら本当に出ました。草。
grepメソッドに関する問題
a=["a","8","b","114514","c"]
p a.grep(/d/).length
grepはその配列を、引数の正規表現にマッチする要素のみにするというのは理解していたのですが、この場合「*とか+無いから一桁である8のみ?」「それとも114514の方も?」となり迷いました。
答えとしてはどちらも当てはまります。2が出力されます。
exitにまつわる問題
begin
p 1/0
rescue ZeroDivisionError
p "異世界転生したい"
exit 1
ensure
p "ハーレム生活を送りたい"
end
実行結果を聞かれるものでした。
文字コードの設定
# coding:Shift-JIS
# -*- charset: Shift-JIS -*-
# encoding:Shift-JIS
「この中で文字コードをShift-JISに設定できるものはどれですか」的な問題でした。4つ目の選択肢は忘れました。
これも参考書の問題で出たので助かりました。
!の付かない破壊的メソッドにまつわる問題
本試験でもちょくちょく、そのメソッドが破壊的か非破壊的か覚えてないと解けないような問題がありました。
なので先に!の付かない破壊的メソッドを全て覚えてしまえば、「それ以外のメソッドは、!が付かない限り非破壊的だ」と判断できるので楽になります。
というわけでそんな「!の付かない破壊的メソッド」をクラスごとに以下にまとめたので参考にしてみてください。
Stringクラス
concat | insert | replace |
<< | []= |
Arrayクラス
pop | shift | unshift |
push | concat | insert |
fill | replace | delete |
delete_at | delete_if | clear |
<< | []= |
Hashクラス
shift | replace | delete |
delete_if | clear | update |
[]= |
破壊的メソッドについて詳しくは以下の記事でまとめています。

破壊的メソッドの返り値を問われる問題
a=[810,114514,072]
p a.delete(810) #=>810
p a.slice!(0,1) #=>114514
破壊的メソッドの返り値についても注意が必要ですね。
例えばdeleteやslice!の場合返されるのは、要素が消された配列ではなく「消した要素」である、と。
まとめ
「これ、〇〇でやった問題まんまだ」という進〇ゼミみたいなことが本番で頻繁にあったので、ぶっちゃけ問題数こなしてれば何とかなる試験だと思います。
健闘を祈っております!では⸝⸝- ̫ -⸝⸝