sendとevalの使い方
動的なメソッド呼び出しを実行し、文字列をRubyコードとして評価する方法を学びます
「sendとevalの使い方」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
動的コード実行
sendとevalの使用
Rubyには、コードを動的に実行するための send や eval などの強力なメソッドが用意されています。
これらのメソッドを使うと、メソッドを動的に呼び出したり、実行時にRubyの式を評価したりできます。

sendメソッドとは
sendメソッドとは
send を使うと、名前を指定してメソッドを動的に呼び出せます。
privateメソッドとpublicメソッドのどちらも呼び出せます。
class Person
def greet
'Hello!'
end
end
p = Person.new
puts p.send(:greet)sendで引数を使用する
sendで引数を使用する
send を使うと、メソッドに引数を動的に渡せます。
class Person
def greet(name)
"Hello, #{name}!"
end
end
p = Person.new
puts p.send(:greet, 'Alice')sendでprivateメソッドを呼び出す
sendでprivateメソッドを呼び出す
send はメソッドの可視性ルールを回避して、privateメソッドを呼び出せます。
class Person
private
def secret
'This is a secret!'
end
end
p = Person.new
puts p.send(:secret)evalメソッドとは
evalメソッドとは
eval は文字列を実行時にRubyコードとして実行します。
code = "5 + 10"
puts eval(code) # Outputs: 15evalで動的コードを実行する
evalで動的コードを実行する
eval を使うと、変数を動的に定義したり、式を実行したりできます。
eval("x = 100")
puts xevalでメソッドを定義する
evalでメソッドを定義する
eval を使って、メソッドを動的に定義します。
eval("def dynamic_method; 'Hello from eval'; end")
puts dynamic_methodsendとevalのセキュリティリスク
sendとevalのセキュリティリスク
send と eval を不適切に使用すると、セキュリティリスクが生じる可能性があります。
evalは信頼できないコードを実行できるため、セキュリティ上の脆弱性につながる可能性があります。sendはprivateメソッドや機密性の高いメソッドを呼び出せます。- 意図しない動作を避けるため、慎重に使用してください。
sendとevalのおさらい
おめでとうございます!
動的なメソッド実行に send と eval を使用する方法を学びました。
これでRubyのメタプログラミングのセクションは終了です。

よくある質問
「sendとevalの使い方」レッスンは無料ですか?
はい。「sendとevalの使い方」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「sendとevalの使い方」で何を学びますか?
動的なメソッド呼び出しを実行し、文字列をRubyコードとして評価する方法を学びます ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「sendとevalの使い方」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- メタプログラミングとは
- 動的なメソッド定義
- オープンクラスとモンキーパッチ
- sendとevalの使い方