オープンクラスとモンキーパッチ
既存のクラスを変更し、新しい機能を追加できるRubyの仕組みを学びます
「オープンクラスとモンキーパッチ」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
実行時のクラス変更
オープンクラスとモンキーパッチ
Rubyでは、既存のクラスを実行時に変更できます。
「オープンクラス」と呼ばれるこの機能により、開発者は振る舞いを動的に拡張または変更できます。

オープンクラスとは?
オープンクラスとは?
Rubyでは、既存のクラスを再オープンして変更できます。
これにより、組み込みクラスやユーザー定義クラスに新しいメソッドを追加できます。
既存クラスへのメソッド追加
既存クラスへのメソッド追加
クラスを再定義して、新しいメソッドを追加するだけです。
class String
def shout
self.upcase + '!!!'
end
end
puts 'hello'.shoutメソッドのオーバーライド(モンキーパッチ)
メソッドのオーバーライド(モンキーパッチ)
Rubyのクラスにある既存のメソッドをオーバーライドできます。
class String
def reverse
'Reversed method overridden!'
end
end
puts 'hello'.reversesuperによる元のメソッドの保持
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 を使用する方法を学びます。

よくある質問
「オープンクラスとモンキーパッチ」レッスンは無料ですか?
はい。「オープンクラスとモンキーパッチ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- メタプログラミングとは
- 動的なメソッド定義
- オープンクラスとモンキーパッチ
- sendとevalの使い方