InfoQ

Articles

PythonプログラマがRuby技術者認定試験を受けてみた

作者 渋川 よしき 投稿日 2008年8月3日 午後4時40分

コミュニティ
Ruby
トピック
タグ
日本発記事

はじめに

筆者はPythonプログラマですが、ちょっとしたきっかけから、Ruby技術者認定試験を受験してきました。Rubyに対する経験ですが、本を読んだことはあっても、Rubyを使ってアプリケーションを本格的に作成したことはありませんでした。そのため、細かい文法までは自信がなかったために試験勉強をしました。この勉強の経験の中で、いくつか気づきがあったので、言語学習の1つの方法として説明していきたいと思います。もちろん、この方法はすべての方に当てはまるわけではありません。Ruby自体の経験者や、技術者としての勘が鋭い方ならば少ない勉強時間で合格できるでしょう。また、ソフトウェア開発自体の経験が少ない方はもう少し時間がかかるでしょう。最初に断っておきますが、この記事は努力しないで合格する攻略法のような内容ではありません。

Ruby技術者検定試験について

まず、Ruby技術者検定試験について説明します。Ruby Kaigiでの説明によると、この認定試験が目指しているのは、企業の採用担当が、少ない時間である程度の実力の技術者を選び出すことができるような認定となることです。もちろん、過去からRubyを追いかけてきた人たちは、ブログやその他のところで発信している内容を見ることで、試験に頼らず実力を知ることができます。完璧とはいえませんが、この認定試験の結果を使うことで簡単に「必要な知識を持っています」ということを証明できるようになるというわけです。なお、irb(Rubyが簡単に実行できる実行環境)で触っているようなプログラマには厳しいとのことです。毎日Rubyを使用している人ならば大丈夫とのことです。試験会場ではirbのような環境でRubyを触って確認することができないため、基本文法と、クラスの知識を暗記する必要があるということを意味しています。

勉強方法に関して

勉強に関しては3つの方法を取りました。まずはスタンダードな書籍による学習。そしてウェブ上にいくつか公開されている予測問題へのトライ。最後は実際にアプリケーションを作成してみる、という方法です。なお、試験範囲はRuby 1.8系の文法、組み込みのクラスになります。

まず最初に書籍による勉強について説明します。選んだ書籍は「たのしいRuby」ですが、Ruby 1.8系の書籍であれば他の本でも大丈夫だと思います。私がメインで使用しているPythonとRubyは似ている部分も多く、差分に注目してマインドマップにしていきました。やはり本で勉強すると、細かい知識の漏れが確認できます。試験前は最後までは読み通せなかったのですが、基本クラスのメソッドの問題の割合が多かったと色々なブログ(http://fkmn.exblog.jp/6562148/)に書かれていましたので、基本文法を一通り学んだ後は、そのあたりを中心に勉強をしました。可能ならば、仲間を作り、他の人と練習問題の解答を見せ合うようにするといいと思います。Rubyは同じプログラムを作成するにも、複数の実装方法があります。思いもよらなかったような組み方を見るだけでも学びがあります。

次はウェブ上に公開されている予想問題へのトライです。ITProで公開されている、試験作成の本家が作った予想問題(http://itpro.nikkeibp.co.jp/article/COLUMN/20080115/291042/)と、ネットワーク応用通信研究所のサイトの対策問題(http://projects.netlab.jp/ruby-test/)および、総合問題(http://projects.netlab.jp/ruby-test/question01.html)の3つに挑戦しました。最後の試験前の復習に使えるので、印刷して挑戦されることをオススメします。予想の精度ですが、近いものもあれば遠いものもある、という感じですので、合格予測をするというよりは、自分の知識のあやふやな部分を確認されるという使い方が良いです。

最後は実際にプログラミングをしてみる方法です。毎日触っている人は受かるという言葉もあったので、2週間前からJRubyとSWTを使ってGUIアプリケーションを作成してみました。ある程度のRubyの文法は知っている(Pythonに似ている)というものの、実際に手を動かしてみると理解のあやふやな部分の確認ができます。もちろん、ただ作るだけではなく、なるべく多くの制御構文、クラスを使うようにするのが学習には最適です。

私自身のPythonを他の人に教えた過去の経験から鑑みても、言語の組み込みのデータ構造を以下に使いこなすか、ということが重要です。どんな言語も、「こうやって開発して欲しい」という方針を持っていて、その方針に従って開発するのが楽になるような設計になっています。Pythonプログラマが一番気をつけるべきはイテレータです。制御構文すら自作できるイテレータの存在がRubyとPythonの一番大きな違いだと思います。後は文字列が変更可能なことでしょうか。

 
(クリックすると拡大します)

 

 
(クリックすると拡大します)

試験結果とまとめ

さて、ここまでやってきた結果ですが、無事に合格しました。100点満点で92点でした。試験についていくつか反省を列挙します。

  • 文字列、配列、ハッシュでどれが破壊メソッドで、どれが非破壊か?
  • 名前が似ているけど動作が微妙に異なるクラス
  • 自作のミニアプリで使わなかったクラスの動作

以上、色々書いてきましたがまとめると以下のようになります。

  • マインドマップで文法を整理
     →文法に対する抜けが無いかを確認する
  • 対策問題をやってみる
     →結果が悪くてもがっかりしない。
  • とにかく手を動かす
     →自作プログラムと確認問題。理解を強化する。できれば見せ合う。
     →Rubyっぽく書いてみる。イテレータを多用する。

今はまだRuby認定試験の本はありませんが、IT系の認定試験であれば対策問題集を使って試験対策をする、ということも良くあると思います。ですが、せっかくなので「使える知識」として身につけるきっかけとして利用するのが一番メリットが大きいと思います。プログラミング経験自体のない人であれば厳しいですが、何らかの似た経験があれば現物を触って得られるフィードバックも大きく、時間の効率も悪くないと思います。この手の試験に関して毛嫌いしている方もいると思いますが、よっぽどRubyを最初から知っている人でない限りは、学べるものもそれなりにあるはずです。Rubyも楽しい世界ですので「ちょっと新しい言語でも学ぼうかな」と思われている方は自分の背中を押すきっかけとして試験を利用してみるといいと思います。

著者について

製造業の会社の社内SE。今のお気に入りはPythonのDjangoとweb.py。日本XPユーザグループの幽霊運営委員。基本的に色々手広くやりすぎて体が足りなくなるタイプ。愛車はシビックハイブリッド(FD3)とXR250。

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

Googleの分散処理技術(マルレク2006 第1回より)

Web2.0 に対する関心は、引き続き高いものがあります。 ただ、その関心は、新しいビジネス・モデルと、プログラミング・スタイルの二つの分野に集中しているように思えます。 今回のセミナーでは、Google のサービスの基礎である分散処理技術に注目します。

Jean Tabaka氏による「Collaboration Explained--真のアジャイルチームのためのファシリテーションツール」

Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。

Hubert Smits氏による「ゲーム・デザイン・ワークショップ」

Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。

スケーラビリティに関するベストプラクティス:eBayからの教訓

eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。

インタビュー: Emmanuel Bernard氏にBean Validation仕様について聞く

Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。

ポーカーに学ぶ、ソフトウェア開発のレッスン

ポーカーは他のトピックにも広く適用できるような数少ない教えを私にもたらしてくれたと信じています。実際私はソフトウェアを開発すればするほど、これら二つの仕事は非常に似ていると言う確信の度合いを深めています。

InfoQがBPEL4PEOPLEの代表と対談

恒例の「バーチャルパネルセッション」で、InfoQは新しいOASIS BPEL4People技術委員会の代表と対談をし、この作業が何故必要であるかについて彼らのフィードバックを得る機会を得ました。

CLR上でのドメイン特化言語の構築

ドメイン特化言語は最近非常に人気が高まっている話題です。これは恐らく、Rails現象に起因していると考えられます。Railsの人気と、Railsにおけるドメイン特化言語(以降、DSL)の大規模な使用は、DSLに対する広範な関心を呼び起こしました。