4年目プログラマの Ruby Association Silver 合格体験記
はじめに
2017年2月にRuby Silver 合格しました。
結果は84 / 100 と、まぁ合格だよね、という感じの合格点。 でも、合格は、合格!!!
他の記事と同じようなことしか書けず、何番煎じかわかりませんが・・・ メモ程度に残しておきます。
なんで受けたの?
一人のプログラマとして、なんでもいいから一つの言語としっかり向き合ってみたかったからです。
今年でプログラマ歴4年目となるのですが、あまり言語と深く接するということをしてこなかったので、諸々のタイミングを踏まえて挑戦してみました。
そもそも、Ruby SIlver は、2年前くらいに一度挑戦して落ちてましたし・・・(苦い思い出
勉強方法
公式教科書
私は古いのしか持っていなかったのですが、特に問題ありませんでした。
試験範囲の確認するのにはもってこい。
SIlverは7割くらい、ArrayやHashのメソッドのお話です。
ただ、サンプルコードには間違っている箇所もあるので注意してください。
章末問題も100点(うっかりミスは許容)取れるまで、ひたすら解きました。
なんでその回答になるのかの、理由をひねり出せれば問題ない。
パーフェクト Ruby
Rubyistであれば、持っていて損はない一冊。 公式の教科書だけでは足りない深い部分の理解をしたいときはこっちで調べました。
ミニツク
ありがたいweb サービスでございます。
これのRuby silver対策部分をひたすら行いました。
問題集
http://www.ruby.or.jp/assets/images/ja/certification/examination/exam_prep_jp.pdf
こちらも100点取れるまでひたすらやりました。
他の方の受験記
Google先生に、「Ruby Silver 合格」聞いてみて出てくるブログ記事を読み漁る作業。
勉強時間
勉強を始めたのは試験日の、3週間前くらいからです。
朝(出社前)、会社の昼休みを利用して1日、2時間は勉強時間を確保しました。
普段からRubyは実務で触っているので、基本的なところは大丈夫な自信はありました。
試験に出てくるArrayやHashなどは普段使わないメソッドがあるので・・・
試験前の1週間はできるだけ定時に帰ることを心がけて、夜の勉強時間も1時間ほど確保しました。
個人的に試験のここがポイント!
破壊的、非破壊的
! がなくても破壊的なメソッドはいくつかあるので注意です。
arrayのarray#insert
とか?
同じ動きをするメソッド
別名なのに同じ動きをするメソッドがあります。
arrayのslice
と[]
が同じとかね
sliceメソッドは、メソッドの別名です。
もう、ややこしい。 Ruby に別名なのに同じ動きをするメソッドがある理由は下記のルビまの記事などを読んでもらえればいいんですかね。
Rubyist Magazine - map と collect、reduce と inject ―― 名前の違いに見る発想の違い
ファイルの内容を読み込むメソッドの挙動
読み込む対象 | メソッド名 | 動作 | EOF |
---|---|---|---|
IO | read | IOから内容を読み込む。長さが指定されていれば、その長さぶん読み込む。 | 長さが指定されていなければ空文字。指定されていればnil。 |
IO.foreach | 各行をブロックに渡して実行 | nil | |
each_lines | 各行をブロックに渡して実行 | nil | |
行 | readlines | ファイルを全て読み込んで、その配列を返却する。 | 空配列 |
gets | 一行ずつ読み込む | nil | |
readline | 一行ずつ読み込む | EOFError | |
バイト | each_byte | IOオブジェクトから1バイトずつ取得する | 何もしない |
getbyte | 一バイトずつ読み込む | nil | |
readbyte | 一バイトずつ読み込む | EOFError | |
文字 | each_char | IOオブジェクトから1文字ずつ取得する | 何もしない |
getc | 一文字ずつ読み込む | nil | |
readchar | 一文字ずつ読み込む | EOFError |
この微妙な差異がね・・・ なんとも。。。
get××
系がnil
を返却。
read××
系がEOFError
系を返却。
と覚えておけば良さそう・・・
クラス別のdeleteメソッド
delete()メソッドのクラス別の挙動
クラス | 引数 | 返値 | 破壊的 | 別名 |
---|---|---|---|---|
String | 文字 | 元の文字列 | 非破壊的 | なし |
Array | 値 | 削除した値 | 破壊的 | なし |
Hash | key値 | 削除したkeyのvalue | 破壊的 | なし |
File | ファイルパス | 1 or エラー | 破壊的 | unlink |
こんなんばっかり・・・
他にもあったので、似通った部分は自分なりにまとめるのはオススメでございます。
勉強するために工夫したこと
復習できるように!
Ruby Goldの取得も視野に入れていたため、いつでも振り返られるようにまとめることを意識しました。 特にノートはオススメです。 ノートにまとめたり、ArrayやHashのメソッド一覧を作ってみたりしました。
情報交換
ちょうど近くにRuby SIlverを同じタイミングで受けた人がいたので情報交換とかしました。 まじ、GJ!!
まとめ
Ruby Silver受験して、普段業務では使わないようなメソッドに対する知識も増やすことができました。
業務で使うメソッドやRuby の機能って限られたものになりがちなので、知見を増やすという面では資格はもってこいですね。
まぁ、あと業務経験○年です、プラス資格持ってますならば、定量的に測れるスキルになってくるのかなーと思っております。