特集・コラム

メニュー

スーパーエンジニアの独り言

vol.5 ‐ 『 Ruby2.0 ~よだかの星~ 』

投稿日時:2014/04/02 05:04

カテゴリ: スーパーエンジニアの独り言

Ruby生誕20周年を記念して2013年2月24日にRuby2.0がリリースされました。 次号以降でRuby2.0での新たな機能や変更点をご紹介できればと思っています。今回は二十歳となったRubyの成人、、という訳では無いのですが、Rubyの中でも一等不可解な「特異クラス」の話をしたいと思います。

 特異クラスは、生成したインスタンスに特異メソッドを追加できる機能と考えることが出来ます。つまり特異メソッドは特定のインスタンスだけで利用出来るメソッドなのです。

  | class Foo; end

  | class Bar < Foo; end

  |

  | bar_obj = Bar.new

  |

  | class << bar_obj

  |   def eigen_method

  |     puts “eigen method called.”

  |   end

  | end

  |

  | bar_obj.eigen_method #=> “eigen method called.”

  |

  | bar_bar = Bar.new

  | bar_bar.eigen_method #=> (NoMethodError)

 Rubyでは特定のインスタンスだけに機能追加が可能なのです。
これが特異メソッドであり、実現しているのが特異クラスです。
次に基本に戻って再度、特異クラスを考察してみます。

 オブジェクト指向言語は、データ(属性)と操作(振る舞い)をひとまとめにすることによって恩恵を得ようとするものです。
ひとまとめにするためには、クラスの定義を行い、それを雛形に実際に操作する対象となるインスタンスを生成します。Rubyも同様ですが、前述を踏まえてRubyでのクラス定義について振り返ります。

 → メソッドはクラス(モジュール)に属しています。
→ インスタンスメソッドはクラスにありますね。
→ ですからクラスから生成されたすべてのインスタンスで呼び出せます。
→ では、クラスメソッドはどこにあるのでしょう?

  | class << Bar

  |   def class_method

  |     puts “class method.”

  |   end

  | end

  |

  | Bar.class_method #=> “class method.”

 → クラスメソッドは(インスタンスではなく)クラスから呼び出します。
→ メソッドはどこかのクラス(モジュール)に属しています。
→ 見てのとおり、クラスメソッドはクラスの特異メソッドなのです。
→ そして、特異メソッドは特異クラスにあるはずです。
→ クラスメソッドはクラス自身の特異クラスにあることになります。

「特異クラスと継承 (eigen classes and inheritance)」

図

eigen: eigen class (特異クラス)
super: super class (スーパークラス)

 特異クラスと継承の関係について図示を試みたものが上記となります。
図を眺めることで些少イメージが出来るかとも思われます。
賢明な方々はこの説明で更なる疑問点が湧いてきたかもしれませんが、その話はまたいつか機会があればつづく(かもしれません)。

 ところで『特異』から連想される『よだかの星』という話があります。
よだかは、容姿が醜いために、仲間の鳥から蔑まされ、嫌悪されます。
よだかの兄弟には、「はちすずめ」と「かわせみ」という容姿が美麗な弟達がいます。それ故によだかは、更なる劣等感に苛まれます。
容姿だけでなく、生きるために羽虫を殺生することにも嫌気を感じています。
更に追い討ちをかけるように、横暴な鷹がやってきて難癖をつけます。
よだかは、居場所を失ったと思い込んでしまいます。

 特異であることは、他と違うということであるが故に、凡庸のそれらから見れば異質でありましょうが、決して劣っているのではありません。市井の人 の中には往々にして周りと横並びになることで周囲と同化したと勘違いし、同じ風体であることで安心感を得る、それも良いでしょう。
しかしながら、特異と呼ばれる程、他とは異なっていることこそ優位であり、価値があるといえましょう。特異であるために周りに揶揄され怯えるのでなく、むしろ異なる ことを誇りとして持ち得ることで、堂々と胸を張って歩きたいものです。異形である程に特異で有り得るのは困難であり素晴らしいことなのです。

 よだかは、力強く自力で天高く舞い上がり、そして燐の如く青い美しい光となって輝き続ける美しい星になったのですから。

 次回もお楽しみに。

 

バックナンバーはこちら

IT系のお仕事特集

お仕事のご紹介には、まずヒューマンリソシアへの登録が必要です。
ヒューマンリソシア人材派遣サイトの便利な機能 ・お気に入りの派遣求人のブックマーク ・登録会への予約 ・有給休暇の管理 ・WEB給与明細の確認 ・お気に入りの情報をメール受信
登録会の入力手続きをあらかじめおこなえます。

ヒューマンリソシア派遣サービスに 登録する 無料

ページトップへ戻る
ヒューマンリソシア派遣サービスに 登録する 無料
ページトップへ戻る