武田哲也さんのRuby技術者認定試験受験記

武田哲也 @__takeda さんのRuby技術者認定試験の受験記。 昨年末ぐらいに Ruby 2.1 対応になったんですよね(それまで1.8…)。
3
武田哲也 @__takeda

さて、ええ加減今日の試験の総括(復習)をせねば…。補強せなあかんアイテムがかなりある。「お前それ140字ずつ書かんとブログにでもまとめろや!」という量になるだろう。(ブログはやってない)

2015-01-10 22:20:42
武田哲也 @__takeda

#RubyGold さて、今日の不合格の総括。まずクズな言い方をすれば「俺が落ちたのはどう考えても教科書が改訂されてないのが悪い」。1/3ぐらいわからん(初見の)問題が出てきた。帰って調べたら、ほとんどRuby2.0以降の機能だった!(公式教科書は1.8までのしか出てない)

2015-01-10 22:35:56
武田哲也 @__takeda

#RubyGold 66点ってことは、ほぼ2/3できたってこと。さすが俺の体感は正確やw

2015-01-10 22:38:20
武田哲也 @__takeda

#RubyGold まず試験形式の感想から。IT系試験では初めてのCBT。14:30開始で申し込んでたので、控室みたいなとこで待つんかなと思ってたら、説明(おばちゃん暗記してそう)聞いて荷物しまったらすぐ始まった。心の準備が…!昼食べたばっかりやし…!と焦った。次から注意やな

2015-01-10 22:49:32
武田哲也 @__takeda

#RubyGold 試験全体としては、教科書の模試より一回り難しい感じ。模試みたいに一目でわかるような問題は少なく、それなりに高次元な(まさに2次元座標とか)、考えさせられるものが多かった。まあ相変わらずFooさんBarさんも頻出してたけど。

2015-01-10 22:52:20
武田哲也 @__takeda

#RubyGold 他にも書いてる人いたけど、せっかくコンピュータでやってるんやから、どの問題を間違えたか教えてくれたらいいのに。それにメモ用紙ぐらいは持ち込める(持ち帰れる)ようにしてほしいなー。

2015-01-10 22:56:59
武田哲也 @__takeda

#RubyGold 詳細は明日として。教科書への不満は書いたが、悪い試験ではないと思う。出題範囲は「Ruby2.1のこんな機能も知っといてほしい」という主催者側の意向だろう。「実力を出し切れなかった」みたいな後悔はない。勉強したところはほぼ正答できたと思うので、良かった。

2015-01-11 01:05:42

武田哲也 @__takeda

#RubyGold では以下、わからんかった(教科書に出てなくて知らなかった)問題や自信なかった問題の各論を書いていく。記憶から再現してるだけやからNDAは侵してないはず…

2015-01-11 09:32:36

map/collect

武田哲也 @__takeda

#RubyGold map と collect は同じ。(mapしか使わないので自信なかった) magazine.rubyist.net/?0038-MapAndCo… map/reduce vs collect/inject という出自やったとは。図解もあってわかりやすい。勉強になるな~

2015-01-11 09:33:14

Enumerator::Lazy

武田哲也 @__takeda

#RubyGold こんな感じのコードが出た。結果どうなる?と。 (1..Float::INFINITY).lazy.map {|i| i**2 }.take(3).inject(0) {|sum,i| sum += i }

2015-01-11 09:34:40
武田哲也 @__takeda

#RubyGold (続き)lazy も take も初めて見たが、lazyは遅延評価的なやつかな、やりたいのは「1~3の冪乗の合計」だろう、1+4+9=14 →正解。 これらはRuby2.0で導入された。 docs.ruby-lang.org/ja/2.1.0/class…

2015-01-11 09:35:03

補足: Enumerator::Lazy は2.0からですが、 Enumerable#take は1.8.7から入っています。
http://ref.xaio.jp/ruby/classes/enumerable/take

武田哲也 @__takeda

#RubyGold Lazy の説明はここが丁寧で助かりました。 qiita.com/gam0022/items/… (最後の図、矢印はUMLじゃなくて「特化」の意味なので注意)

2015-01-11 10:21:03
リンク Qiita Ruby - EnumeratorとEnumerator::Lazyの違い - Qiita # はじめに Ruby 2.0では、`Enumerable#lazy` というメソッドと、その返り値である `Enumerator::Lazy` が導入されました。 この記事では、`Enumerable#lazy` と `Enum...

ENV

武田哲也 @__takeda

#RubyGold 環境変数 ENV は「文字列」がキー。かなり迷ったけど正解。 docs.ruby-lang.org/ja/2.1.0/class… ちなみに irb(main):001:0> ENV.class => Object IFを似せてあるってだけで、Hashそのものではないのね。

2015-01-11 09:40:03

起動オプション

武田哲也 @__takeda

#RubyGold 起動時オプション-I を聞かれた。 docs.ruby-lang.org/ja/2.1.0/doc/s… 「ファイルをロードするパスを指定(追加)します。」って、ロード言うたら -l と思うやんか… -l は「行末の自動処理」か。gcc とはだいぶ違うなあ

2015-01-11 09:41:50

結合度

武田哲也 @__takeda

#RubyGold 結合順のやつ。最後のだけ文法エラーになる。 3.downto(0) {|i| puts i} 3.downto(0) do |i| puts i end 3.downto 0 do |i| puts i end 3.downto 0 {|i| puts i}

2015-01-11 09:46:45
武田哲也 @__takeda

#RubyGold (続き)こんな重箱の隅出すなよ~と思った。悩んだけど一応正解。 この解説が詳しいです。 qiita.com/riocampos/item… まあこういう思わぬバグにすぐ気づくためには必要な知識かな・・

2015-01-11 09:48:08