技術メモ

主にRuby関連

Ruby技術者認定Gold試験合格した

88点でした。ちなみに一発合格ではない。
合格できたのは素直に嬉しいのですが、落ちた時も受かっても間違えた問題が把握しきれてないのが心残り。

取得のキッカケ

資格は幾つか持っているのですが大昔に会社から取得を強要されたものしかないし、正直資格取得に積極的ではないのだけど(辞めた not 開発メインな)会社内にRubyを普及させる必要があると主張し、結果的には勢いで取得の先陣をきることにしたw
まぁ、その当時の会社にはRubyという道具が合っていたと思うし、会社の今後を思うと認定システムインテグレータプログラムみたいな看板も必要だったと思ってたし。でも、その1年後には会社を辞めることになったのだがw

取得後の雑感

結果的に取得を目指して良かった。何となくな理解のままでは解けない問題があるので理解度は確実に上がったと思う。
ただ理解度を上げる方法はRubyでの開発経験ではなく、試験用の勉強だと思った。1年前の試験(72点不合格)から約1年間Ruby,Rails3開発を行っていたが試験用スキルは殆ど上がってなかった気がした。誤解を恐れ補足しておくと、試験が開発とは無関係だと言っているわけではなく、試験レベルではない、要は何となくの理解のまま開発をしていても、理解度は深まらなかったということです。むしろ合格レベルの理解度を持った上で開発をすれば理解度は進む気がするので、余裕があるなら資格取得から始めて開発に望んだ方が良いと思います。

あと理解度とは別にちゃんと勉強していかないといけない暗記問題っぽい問題も数問あるので、そこはしっかり押さえておきたいところ。でないと私のように数点足らずに落ちかねませんw
対象としては、コマンドラインオプション、組み込み変数/定数、例外処理、標準添付ライブラリあたりの、頻繁に使わないし普段は覚えてなくても詳細はリファレンスで都度確認すればいいよねってもの。最低5問はでると思うのでノーチェックの全滅は痛い。んま、資格らしい問題も結構ありますよってことですw

以下にポイントを挙げておきます

Rubyのバージョン

Ruby 1.8.7 です(2012-02-05現在)

Gold出題範囲

Rubyアソシエーション: Ruby技術者認定試験制度の試験実施要項にあるGold出題範囲をしっかり把握しておきましょう。一通り出ます。
  • 実行環境
  • 文法
    • 変数と定数
    • 演算子
    • ブロック
    • 例外処理
    • 大域脱出
  • オブジェクト指向
    • メソッドの詳細
    • メソッドの可視性
    • クラスの詳細
    • クラスの継承
    • モジュールの詳細
  • 組み込みライブラリ
    • よく使用されるクラス(Object、Kernel、Module等)
    • よく使用されるモジュール(Enumerable、Comparable等)
    • 数値
    • 正規表現
  • 標準添付ライブラリ
    • よく使用されるライブラリ(socket、rdoc等)

リファレンスマニュアル

オブジェクト指向スクリプト言語 Ruby リファレンスマニュアルが勉強の中心となると思うので出題範囲の部分は全て見ておいた方が良いですが、特に以下の項目は要チェックですRubyの起動スレッド変数と定数演算子式クラス/メソッドの定義

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

Amazon.co.jp: プログラミングRuby 1.9 −言語編−: Dave Thomas with Chad Fowler and Andy Hun, まつもとゆきひろ, 田和 勝: 本 この版の前版に1.8系のものがありますが、この最新版でも多分大丈夫です。
<第1版での内容とページ>
  • 第3章 クラス、オブジェクト、変数
    • 【p.29】
      • 標準出力への出力各メソッド(実際には2つ以上あるので、それらもリファレンス等で確認)とその仕組み。
      • 実用度[高] 例えば、配列の各オブジェクトを独自の出力形式で出力する場合、eachメソッドを書くことが減りました。オブジェクトに独自形式のto_sメソッド参照があればeachメソッドを使わずに puts ary で同じ出力が得られます。
    • 【p.30..34】3.1 オブジェクト属性
      • 全部とリファレンスの演算子式の属性参照のとこも絡めて、各メソッドの詳細もリファレンス等で確認
    • 【p.37..39】3.3 アクセス制御
      • 全部。各アクセス制御の意味を押さえる。制御ケース例はこれだけだと圧倒的に足りない。
    • 【p.39..41】3.3 変数
      • 全部だが、特に後半の文章にでてくるオブジェクト複製各メソッドと凍結メソッドの詳細はリファレンス等で確認。
  • 第4章 コンテナ、ブロック、イテレータ
    • 【p.49..54】4.1 ブロックとイテレータ
      • ブロック、イテレータの実装の項目全部。スコープについても再確認。
    • 【p.58..61】4.1 ブロックとイテレータ
      • トランザクションとしてのブロック、オブジェクトとしてのブロック、クロージャとしてのブロックの内容はもちろん登場するメソッドの詳細もリファレンス等で確認。
      • 実用度[高] 私は結構使います。特に Execute Around Method は好きです。
  • 第5章 機能の共有:継承、モジュール、Mixin
    • 【p.65..77】
      • この範囲の問題は多数でるし大切なのですが足りません。この範囲は『メタプログラミングRuby』をメインで確認。
    • 【p.71..73】5.4 Mixin
      • 出題範囲のComparableはここの説明とリファレンス等で確認。
    • 【p.73..74】5.5 イテレータと Enumerable モジュール、5.6 モジュールの構築
      • 出題範囲のEnumerableはここの説明とリファレンス等で確認。
  • 第8章 さらにメソッドについて
    • 【p.107..112】
      • 全部。特に可変長引数リスト、メソッドとブロック、メソッドへの引数の受け渡し(足らない。括弧の有無、ブロック付き/なしの全組み合わせ4パターン確認)、メソッドの戻り値(足らない。可変長引数と通常の引数、展開時のアスタリスクの有無の全組み合わせ4パターン確認)
  • 第9章 式
    • 【p.116..117】 9.1 演算子
      • 演算子によるメソッド定義の確認。試験には出そうにはないけどメソッドチェーンできるメソッドの定義方法もサンプルコードになっている。
    • 【p.118..121】 9.3 代入
      • 全部。特に展開と代入、その他の形式の代入は確認。
      • 実用度[高] 様々な代入方法がありますが、私は全て使っています。1処理が複数行より1処理が1行の方が読み易いことが多いから。例えば、スワップは多重代入を使うとか、デフォルト値や遅延初期化に||=を使うとか。
      • ちなみに代入ショートカットは「%=」、「~=」、「/=」、「-=」、「+=」、「|=」、「&=」、「>>=」、「<<=」、「*=」、「&&=」、「||=」、「**=」があります。(多いですねw)代入系の演算子は全てメソッドではないので再定義不可です。「[]=」は代入ではなく、要素の設定でメソッドなので再定義可です。
  • 第10章 例外と大域脱出(catch/throw)
    • 【p.133..134】 10.1 Exception クラス
      • 特に例外階層は把握。StandardErrorとその配下以外ではコードで簡単に発生させられる例外について深めに確認。
    • 【p.134..137】 10.2 例外の処理
      • 例外の処理と後片付け。あと1点確認すべき点はリファレンスの制御構造の例外処理を読んでサンプル作って確認。
    • 【p.139..140】 10.4 catch と throw
      • 全部。
  • 第12章 ファイバ、スレッド、プロセス
    • 【p.151..154】 12.2 マルチスレッド
      • 全部。スレッドと例外は深めに確認。
    • 【p.155..158】 12.3 スレッドスケジューラの制御、12.4 相互排他
      • 余裕があれば確認。対象外かも。
  • 第15章 Rubyとその世界
    • 【p.197..200】 15.1 コマンドライン引数
      • 全部。スレッドと関連のあるオプションも確認。
    • 【p.200..200】 15.2 プログラムの終了
      • メソッドと例外の詳細を確認。
  • 第19章 Rubyのドキュメントを書く
    • 【p.253..263】
      • 出題範囲に出てるけど出たかな?出題範囲にあるので確認。
  • 第22章 Rubyの文法
      • 必ず一通り読む。特に以下の点は重点的に読み、できればサンプル組んで確認。
    • 【p.299】 変数名とメソッド呼び出しの区別
      • 読む。
    • 【p.300..307】 22.5 変数と定数
      • 足らないかもだけど読んで確認。事前定数の変数も実用頻度が高いものは特に確認。各項目毎に最低でも1つは出ると思って確認。
      • 実用度[高]パターンマッチに関する変数全て、入出力変数、「$0」、「$:」、「__FILE__」、「$F」、「__method__」、「$SAFE」、「$VERBOSE」、「ARGF」、「ARGV」、「ENV」、「DATA」、「__END__」、「STDERR」、「STDIN」、「STDOUT」等は実用頻度が高いです。
    • 【p.314..317】 22.7 メソッド定義
      • 読んで確認。
    • 【p.317..319】 22.8 メソッドの呼び出し
      • 読んで確認。
    • 【p.317..319】 22.9 別名定義
      • 読んで確認。
    • 【p.320..322】 22.10 クラス定義
      • 読んで確認。
    • 【p.322..324】 22.11 クラス定義
      • 読んで確認。
    • 【p.324..324】 22.12 アクセス制御
      • 読む。
    • 【p.324..325】 22.13 ブロック・クロージャ・procオブジェクト
      • 読んで確認。結合力、各呼び出し方法、クロージャ。
    • 【p.328..330】 22.14 例外
      • 読んで確認。
    • 【p.330..330】 22.15 大域脱出
      • 読む。
  • 第24章 メタプログラミング
      • 必ず一通り読む。特に以下の点は重点的に読み、できればサンプル組んで確認。
    • 【p.343..346】 24.1 オブジェクトとクラス
      • 読んで確認。selfの変更の動きを押さえる。
    • 【p.346..351】 24.2 特異クラス
      • 読んで確認。オブジェクトモデルを描く。
    • 【p.351..352】 24.3 継承と可視性
      • 読んで確認。ページ数少ないけど内容濃いので読み込んでおく。重要なサンプルコードはあるが全然足りないので独自サンプル組んで色々なパターンを確認。
    • 【p.352..354】 24.4 モジュールと mixin
      • 読んで確認。オブジェクトモデルを描く。includeとextendメソッドの真の動作をリファレンス等で理解。
    • 【p.354..359】 24.5 クラスレベルマクロのメタプログラミング
      • 読んで確認。オブジェクトモデルを描く。フックメソッドを確認。
    • 【p.346..351】 24.6 残る2つの形式のクラス定義
      • 読んで確認。別形式の定義方法を確認。形式による相違点を確認。試験とは別に『メタプログラミングRuby』と共に使い方を身に付けるべき。
    • 【p.365..370】 24.8 フックメソッド
      • 読んで確認。実用頻度が高いものを確認。試験とは別に『メタプログラミングRuby』と共に使い方を身に付けるべき。

プログラミングRuby 1.9 -ライブラリ編-

Amazon.co.jp: プログラミングRuby 1.9 −ライブラリ編−: Dave Thomas with Chad Fowler and Andy Hunt, まつもとゆきひろ, 田和 勝: 本
  • 【p.82】FileTest
      • メソッドを確認。
  • 【p.138..139】Marshal
      • 全部。特に条件を確認。
  • 【p.310】Matrix
      • 全部。
  • 【p.352】Socket
      • クラス構造を確認。
  • 【p.353】StringIO
      • 全部。
  • 【p.357】Test::Unit
      • 全部。

最後に

値段次第では、間違い箇所が気になるので買おうかな?w