M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Ruby Association Certified Ruby Programmer Gold になった


昨年10月末のSilver資格取得につづき、本日、Goldも取得しました。
公式サイトによると、

Silverで求められる範囲(文法、オブジェクト指向、組み込みライブラリ、実行環境など)を更に掘り 下げた知識に標準添付ライブラリ知識やアプリケーション設計に必要となるクラスやオブジェクトに関する知識を追加し、Rubyによるプログラム設計技術を持つことを認定します。

──とのこと。

Silverと比較すると、オブジェクトの継承関係の詳細に関する設問がとにかく多いことと、MarshalやYAML、UnitTestといった標準添付ライブラリに関する出題が3・4問混ざっていることが特徴でしょうか。

ちょうど一年前、昨年の1月末にOCJ-P(旧・SJC-P)の資格取得した際の感覚からすると、Javaと比べて以下のような点で難易度が高かったかな、と思います。

  • 複雑なオブジェクト・グラフを持っている。 インスタンスとクラス、モジュール、特異クラスといったファクターが存在し、図示してみるとそれほど難しくないのですが、実際のコードとして見るとやはり難解なケースがあります。
  • 可変性の徹底ぶりがJava以上に進んでいる。 クラス定義自体からしてそうですが、文字列型のインスタンスの内容を変更できてしまうというのが何よりも大きな障害となります。Rubyの可変性が言語の扱いにくさの原因となっていることは試験制作者たちもよく理解しているようでよく試験問題にでてきます。
  • エイリアスエイリアスのようなものが蔓延っている。 内部的に同じメソッドが実行されるだけなのに名前がちがうメソッドが複数定義されていたり、「ほぼ同じ」動作をするという複数のメソッドが存在したりと、標準オブジェクトの名前空間が非常に雑然としています。それだけ覚えなくてはならないものが増えるということです。

個人的に使うのはいいですが(あるいはせいぜい2・3人のチーム。PGだけを数えたとしてです〔2012/02/05追記〕)、あまりチームでは使いたくないし、業務ロジックの記述には絶対使うべきではない(すくなくとも他にもっと適した言語がある)、というのが今のところの結論です。

それはそうと受験勉強に関しては、私の場合以下の3冊でなんとかなりました。

Ruby技術者認定試験 公式ガイド (ITpro BOOKs)

Ruby技術者認定試験 公式ガイド (ITpro BOOKs)


こちらはSilver同様、(試験で問われる)Rubyの基礎の速習・復習用に便利です。
プログラミングRuby 1.9 −言語編−

プログラミングRuby 1.9 −言語編−


試験はバージョン1.8のRubyを前提とするので、動作のちがいには注意が必要ですが、別に試験に受かるためにRubyの勉強をするわけではないので、バージョン1.9のテキストを読みました。1.9で導入された箇所にはマークがされているので、注意して読めば問題ありません。
メタプログラミングRuby

メタプログラミングRuby


表紙のセンスが残念な本書ですが、Gold受験には必須の知識が満載でした。とくに1章・4章で紹介されるRuby独特のオブジェクト関係論が重要です。(3章で紹介されるブロック──クロージャもどき──の概念も重要ではありますが、『プログラミングRuby』でも学習できます。)