BT

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

作者 渋川 よしき 投稿日 2008年8月3日 |

はじめに

筆者は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。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

広告ブロッカーを使用されています。

何かの理由で広告ブロッカーを使用されていることと存じますが、InfoQを今後も無料でお使いいただけるようにするために、広告の表示にご協力いただけますと幸いです。InfoQはあなたの許諾なしに第三者にあなたの情報を提供することはありません。広告は読者の皆さんに関連するもののみを表示いたします。広告表示可能なサイトとしてご登録いただけますと幸いです。