• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

まつもと直伝 プログラミングのオキテ

まつもと直伝 プログラミングのオキテ 第21回 オープンクラスとRuby on Rails

ネットワーク応用通信研究所 まつもと ゆきひろ 2008/06/23 日経Linux
出典:日経Linux 2007年1月号149ページより
(記事は執筆時の情報に基づいており、現在では異なる場合があります)
目次一覧

 Rubyには「オープンクラス」という機能があり,使い方次第で強力な道具になります。今回はこのオープンクラスを解説します。オープンクラスを活用している「Ruby on Rails」のライブラリActiveSupportについても紹介します。

 オープンクラスについての説明に入る前に,Rubyにおける通常のクラス定義について,復習しておきましょう。クラスFooを定義するには以下のように書きます。

class Foo < Bar
 def plus2(arg1, arg2)
  return arg1 + arg2
 end
end

 この定義ではクラス名がFoo,FooのスーパークラスはBarになります。FooはBarクラスを継承しています。クラス文の内側にあるdefによってplus2メソッドが定義されます。FooクラスはスーパークラスであるBarクラスが備えているメソッドなどを受け継ぎますから,Fooクラスのオブジェクトは,Barクラスのメソッドに加えてplus2メソッドが使えるということになります。

 このように新しいクラスを定義できることに加え,Rubyでは既存のクラスに定義を追加できます。次のようにして,既に定義済みのFooクラスにメソッドを追加します。

class Foo
 def times2(arg1, arg2)
  return arg1 * arg2
 end
end

 Fooクラスは既に提供していたBarクラスから継承したメソッド,定義済みのplus2メソッドに加えて,新たに定義されたtimes2メソッドも使えるようになります。つまりFooクラスそのものを書き換えています。既に作られているFooクラスのオブジェクトにも機能追加の影響が及びます。

 このように後から機能を追加できるクラスのことを「オープンクラス」と呼びます。この例ではユーザーが定義したクラスFooに機能を追加しましたが, RubyではStringやArrayなどのような基本的なデータ型に至るまでオープンクラスとなっていて,自由に機能を追加できます。

 オープンクラスの提供する柔軟性や拡張性はほかのプログラミング言語でも注目されています。例えばC#は「partial class」というオープンクラスに似た仕組みを備えています。

ここから先はITpro会員(無料)の登録が必要です。

次ページ オープンクラスを生かす専用機能
  • 1
  • 2
  • 3
  • 4
  • 5

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

クライアント/OA機器

ネットワーク/通信サービス

セキュリティ

もっと見る