0Pricing
Ruby Academy · レッスン

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とevalの使い方 — イラスト1

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: 15

evalで動的コードを実行する

evalで動的コードを実行する

eval を使うと、変数を動的に定義したり、式を実行したりできます。

eval("x = 100")
puts x

evalでメソッドを定義する

evalでメソッドを定義する

eval を使って、メソッドを動的に定義します。

eval("def dynamic_method; 'Hello from eval'; end")
puts dynamic_method

sendとevalのセキュリティリスク

sendとevalのセキュリティリスク

send と eval を不適切に使用すると、セキュリティリスクが生じる可能性があります。

  • eval は信頼できないコードを実行できるため、セキュリティ上の脆弱性につながる可能性があります。
  • send はprivateメソッドや機密性の高いメソッドを呼び出せます。
  • 意図しない動作を避けるため、慎重に使用してください。

sendとevalのおさらい

おめでとうございます!

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

これでRubyのメタプログラミングのセクションは終了です。

sendとevalの使い方 — イラスト10

よくある質問

「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フィードバックを取得できます。ローカル設定は不要です。

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

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