読者です 読者をやめる 読者になる 読者になる

Pick me up!

デジタルガジェットとかプログラミング

Ruby Programmer Silver version 2.1

すっかりIT系資格取得マニアになりつつありますが、今回はRuby 2.1 Programmer Silverを受験し合格しました。 正式名称は、”Ruby Association Certified Ruby Programmer Silver version 2.1”。 100点満点で75点以上が合格のところ、80点とギリギリでしたけど…。

Ruby on Railsでの開発を2年ほど経験していたのでさほど勉強することはないのと思いつつ、一応対策を行うことにしました。 いつもなら対策本を購入するのですが、今回は「ミニツク」というサイトを利用しました。RubyおよびRuby on Railsを学ぶためのe-Learningサイトです。無料ですし、Open-IDをつかってログインすれば学習履歴も残せるのでとても便利です。

  • Ruby入門コースでざっとおさらい
  • Ruby技術者認定試験(Silver)対策コースで試験問題の意図を学ぶ

ただし、気をつけなければいけないのは2016/4/3現在、ミニツクのRuby技術者認定試験(Silver)対策コースは、Ruby 1.8.7を前提としています。一方の試験はRuby 2.1ですので文法や出力結果に多少の違いがあります。Ruby 2.1をインタプリターで実際に動かしながら学習したほうが良さそうです。

おさらいと言いつつ、知らないことがありました。ちゃんとRubyを学んだことがなく、既存のコードと過去に使っていた数々のプログラミング言語から、かってに推測していたことが多かったからですね。 せっかくなので、ミニツクをやって身に付いたことを書き記しておきます。

rubyコマンドでの文字コードの指定

ruby起動時に-Kオプションで文字コードを指定できます。

オプション 文字コード
-Ku UTF-8
-Ks Shift_JIS
-Ke EUC-JP
-Kn ASCII(デフォルト)

&&とandの違い

どちらも論理演算子の積ですね。でも、優先順位は&&のほうがandよりも高いんですね。もちろん、||のほうがorよりも優先順位が高いのは言うまでもありませんね。

クラスメソッドの定義方法

クラスメソッドの定義方法として、selfやクラス名をメソッド名の前につける方法は知っていましたが、複数のクラスメソッドを一括して定義するのに便利な方法を初めて知りました。以下のコードでfoo1()はインスタンスメソッドですが、foo2(), foo3()はクラスメソッドです。

class Hoge
  def foo1()
  end
end
#ここからクラスメソッドの定義
class << Hoge
  def foo2()
  end
  def foo3()
  end
end

module_function

このキーワードすら知りませんでした。Moduleで定義したメソッドをクラス・メソッドというか、モジュールメソッドとして利用するためのキーワードです。主にmoduleをネームスペース(名前空間)として使うときに利用されるようです。

[1] pry(main)> module Foo
[1] pry(main)*   def msg
[1] pry(main)*     puts("Hello World!!")
[1] pry(main)*   end  
[1] pry(main)* end  
=> :msg
[2] pry(main)> Foo.msg
NoMethodError: undefined method `msg' for Foo:Module
from (pry):6:in `__pry__'
[3] pry(main)> module Foo2
[3] pry(main)*   def msg
[3] pry(main)*     puts("Hello World!!")
[3] pry(main)*   end  
[3] pry(main)*   module_function :msg
[3] pry(main)* end  
=> Foo2
[4] pry(main)> Foo2.msg
Hello World!!
=> nil
[5] pry(main)> 

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

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