はじめに
2019年の目標の1つに掲げているRuby技術者認定資格のSilver取得に向けての学習ログです。 最近、AtCoderの過去問を解くのが楽しくて、本資格の勉強を全くしていなかった ので、そろそろ集中して学習して取得してしまうことにしました。
2019年の目標
目標資格
まずは、Ruby Association Certified Ruby Programmer Silver version 2.1 の取得を目指します。
学習教材
本来は公式問題集を買って学習するのが王道だと思いますが、今回はGithubで公開されている公式問題50問から解くことにしました。
PDFで提供されていたものが、今はGithubに変わっているようです。
以下、気になった問題の整理とまとめです。
問題26
- 正規表現の問題。
match
とscan
の違いを理解することが大事。 \w
は、アルファベットと数字a-zA-Z0-9
の略語。+
はメタ文字。1回以上繰り返す。
matchで実装した場合
s = "To be or not to be, that is the question." hash = Hash.new(0) s.match(/\w+/){|i| hash[i] += 1} p hash
match
は1度しか正規表現のマッチを行わない。つまり、最初に出てきた単語のTo
だけで終了している。
$ ruby 26.rb {#<MatchData "To">=>1}
scanで実装した場合
s = "To be or not to be, that is the question." hash = Hash.new(0) s.scan(/\w+/){|i| hash[i] += 1} p hash
scan
は繰り返しマッチを行う。ブロック引数に渡された単語の出現回数をハッシュの値としている。
$ ruby 26.rb {"To"=>1, "be"=>2, "or"=>1, "not"=>1, "to"=>1, "that"=>1, "is"=>1, "the"=>1, "question"=>1}
問題27
Integer#chr
の問題。- 与えられた文字コードに対応する1文字を取得する。
p 12354.chr(Encoding::UTF_8)
$ ruby 27.rb "あ"
指定されたエンコーディングで解釈できない時はエラーが発生する。
p dafad.chr(Encoding::UTF_8)
$ ruby 27.rb 27.rb:1: unknown encoding name: (ArgumentError)
問題29
- 論理演算子の評価方法に関する問題。
&&
演算子は、左辺がtrueと評価された時のみ、右辺を評価する。 つまり、左辺がfalse
だった場合、左辺だけで評価が完了する。||
演算子は、右辺がfalseと評価された時のみ、右辺を評価する。 つまり、右辺がtrue
だった場合は、右辺だけで評価が完了する。
ary = [] ary << 1 && false true || ary << 2 false && ary << 3 false || ary << 4 p ary
$ ruby 29.rb [1, 4]
軽くやってみた感想
AtCoderの過去問ばかり解いていて、資格の学習を全くしていないことが気がかりでした。しかし、 gets
での標準入力や、chomp
での改行コード削除など、AtCoderで学んだ知識が使える ところがあり、意外とゼロ勉強でも問題が解けるなという印象です。Rubyのコードを書き続けているので、当たり前といえば当たり前なのですが、使える知識が自然と身についていたのは有難いです。
まだ問題集を解いているだけなので、今後、AtCoderで学んでいない範囲が出てくるかもしれませんが、隙間時間で無理せず学習を続けていきたいと思います。
まとめ
ということで、今回からRuby技術者認定資格のSilver取得に向けて、学習ログを残していきます。7月ごろに受験できればと思います!