0Pricing
Ruby Academy · レッスン

オープンクラスとモンキーパッチ

既存のクラスを変更し、新しい機能を追加できるRubyの仕組みを学びます

「オープンクラスとモンキーパッチ」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。

実行時のクラス変更

オープンクラスとモンキーパッチ

Rubyでは、既存のクラスを実行時に変更できます。

「オープンクラス」と呼ばれるこの機能により、開発者は振る舞いを動的に拡張または変更できます。

オープンクラスとモンキーパッチ — イラスト1

オープンクラスとは?

オープンクラスとは?

Rubyでは、既存のクラスを再オープンして変更できます。

これにより、組み込みクラスやユーザー定義クラスに新しいメソッドを追加できます。

既存クラスへのメソッド追加

既存クラスへのメソッド追加

クラスを再定義して、新しいメソッドを追加するだけです。

class String
  def shout
    self.upcase + '!!!'
  end
end

puts 'hello'.shout

メソッドのオーバーライド(モンキーパッチ)

メソッドのオーバーライド(モンキーパッチ)

Rubyのクラスにある既存のメソッドをオーバーライドできます。

class String
  def reverse
    'Reversed method overridden!'
  end
end

puts 'hello'.reverse

superによる元のメソッドの保持

superによる元のメソッドの保持

superを使って、元のメソッドの振る舞いを維持します。

class String
  def reverse
    super + ' (custom behavior added)'
  end
end

puts 'hello'.reverse

オープンクラスの使用例

オープンクラスの使用例

オープンクラスは、さまざまな場面で役立ちます:

  • 組み込みクラスを追加メソッドで拡張する。
  • サードパーティ製ライブラリを強化する。
  • 可読性と保守性を向上させる。

モンキーパッチのリスク

モンキーパッチのリスク

モンキーパッチは、慎重に使用しないと危険です。

  • コアクラスを変更した際の予期しない動作。
  • サードパーティ製ライブラリとの競合の可能性。
  • デバッグと保守が困難になる。

モンキーパッチの代替手段

モンキーパッチの代替手段

グローバルな動作を変更する代わりに、リファインメントの使用を検討してください。

リファインメントを使うと、限定されたスコープ内でクラスを変更できます。

module StringExtensions
  refine String do
    def shout
      upcase + '!!!'
    end
  end
end

using StringExtensions
puts 'hello'.shout

オープンクラスのおさらい

おめでとうございます!

オープンクラスとモンキーパッチを使用して、既存のクラスを変更する方法を学びました。

次は、動的なメソッド実行に send と eval を使用する方法を学びます。

オープンクラスとモンキーパッチ — イラスト10

よくある質問

「オープンクラスとモンキーパッチ」レッスンは無料ですか?

はい。「オープンクラスとモンキーパッチ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。

「オープンクラスとモンキーパッチ」で何を学びますか?

既存のクラスを変更し、新しい機能を追加できるRubyの仕組みを学びます ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Ruby Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「オープンクラスとモンキーパッチ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このRuby Academyレッスンでコードを書いて実行できますか?

はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. メタプログラミングとは
  2. 動的なメソッド定義
  3. オープンクラスとモンキーパッチ
  4. sendとevalの使い方
← Ruby Academyに戻る