|
2012年出展のご案内 |
【講評】まつもと ゆきひろのRuby検定本体の動作と,他言語との相違点に注意
まつもとゆきひろ氏が理事長を務めるRubyアソシエーションでは,2007年10月から始まった「Ruby認定試験」を開始した。プログラミング言語「Ruby」の正しい知識を身につけたエンジニアを育成し,Rubyによるシステム開発の普及を目指すことが目的である。
平均点は100点満点で38.0点と,全体に専門的な知識を問う難しい試験だった。本番の試験も,伊藤忠テクノソリューションズの技術者が不合格になったというほどで,合格者はかなりの腕の持ち主ということになる。 各問の正答率は以下のようになった。
正答率が17.2%と,最も低かったのが問題20だ。 【問題20】
4番にdateライブラリという選択肢があるが,残念ながらdateではなくtimeである。紛らわしいために多くの受験者が間違えてしまったようだ。 timeライブラリを組み込むには「require "time"」を実行する。 【問題16】
正解は「A)[] 」と「D)<=>」である。「C++では『=』は再定義できる」(伊藤忠テクノソリューションズ大場氏)ため,混乱した受験者もいたのかもしれない。 「Rubyでは多くの演算子が再定義可能だが,代入など,メソッドで意味が定義できないものは再定義可能になっていない」(まつもとゆきひろ氏)。そのほかには論理和,論理積などが定義できない。列挙すると「?: .. ... ! not && and || or ::」が再定義できない演算子だ。 【問題7】
eachメソッドのブロックには,ブロックパラメータ|b|が定義されています。ブロック内では,配列の要素の1と2が変数bに順に取りだされる。変数bには1と2が順に代入され,eachメソッドの実行後,変数bの値は2になる。 問題はRuby 1.8が対象だが,Ruby 1.9では結果が変わるため注意が必要だ。Ruby 1.9では,ブロックの中の引数はローカル変数になるため,ブロック外への影響は及ばない。そのため,eachメソッド実行後も,bの値は最初に代入された「World!」のまま。そのため実行結果はHellow World!になる。 まつもと氏から,Rubyの設計思想が語られる解説もあった。問題11は,例外を補足する構文として正しいものを選ぶ問題だった。正解は「beginとrescure」。 例外補足構文としては,JavaやC++が採用する「tryとcatch」が有名だ。「tryはやってみるという意味で,例外が起きるのが当たり前というニュアンスがある。そうではなく,例外は本来起きてほしくないもの。例外が起きないのが当たり前で,発生したら救助に行かなければならない」(まつもと氏)。 ちなみに問題11の正答率は65.5%と高かった。 最も正答率が高かったのは問題6で,84.4%だった。配列への代入とeachメソッドの動作を問うものだが,Rubyプログラムを書いたことがなければ正答できない問題で,受験者のレベルが高いことがうかがえた。
「他の言語との違い」がポイントまつもと氏は,全体を通した受験者へのアドバイスとして「他の言語と違う部分の知識を問う問題が多いので,そういった部分を重点的に学ぶと有効」と助言した。 Ruby技術者認定試験は,これまで,松江市と東京で紙による試験が行われていたが,2月25日からはコンピュータによる試験が日本全国の200カ所で始まる。さらに4月からは,海外135カ国に英語版試験の配信も始まる予定だ。 連載新着連載目次へ >>
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||