Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】RubyVM::InstructionSequence::new()メソッドの使い方

newメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

newメソッドは、Rubyのソースコードを実行可能な内部形式である「命令シーケンス」に変換する、RubyVM::InstructionSequenceクラスのメソッドです。

このメソッドは、引数として与えられたRubyのソースコード文字列を解析し、それをRubyの仮想マシン(VM)が解釈し、実行できる形式の中間表現であるInstructionSequenceオブジェクトを新しく生成します。具体的には、RubyVM::InstructionSequence.new('puts "Hello, Ruby!"', 'example.rb', 'example', 1) のように使用することで、与えられたコード文字列を、実行可能な状態に準備することができます。ここで、第二引数以降は、ファイル名やメソッド名、開始行番号といったデバッグ情報を提供します。

この機能は、プログラムの実行中に動的にRubyのコードを生成して実行したい場合や、Rubyが内部でどのようにコードを処理し、実行しているかを深く理解したい場合に役立ちます。生成されたInstructionSequenceオブジェクトは、その後の処理でevalメソッドなどを使用して実行することが可能です。普段のアプリケーション開発で直接利用する機会は少ないかもしれませんが、メタプログラミングやRubyの実行環境の深い部分に触れる際に重要な役割を果たす、高度な機能の一つです。

構文(syntax)

1RubyVM::InstructionSequence.new(src, file = "<compiled>", path = "<compiled>", lineno = 1, options = {})

引数(parameters)

code, file = "<compiled>", path = "<compiled>", line = 1, options = nil, pe = nil

  • code: Rubyのコードをバイトコードにコンパイルするためのソースコード。
  • file = "<compiled>": コンパイルされたコードのソースファイル名。デフォルトは"<compiled>"。
  • path = "<compiled>": ソースコードのパス。デフォルトは"<compiled>"。
  • line = 1: ソースコードの開始行番号。デフォルトは1。
  • options = nil: コンパイルオプションを指定するハッシュ。
  • pe = nil: プロファイリング情報を付与するためのオブジェクト。

戻り値(return)

RubyVM::InstructionSequence

RubyVM::InstructionSequence.new は、Rubyのコードをバイトコード(機械が理解しやすい形式)にコンパイルした結果を RubyVM::InstructionSequence オブジェクトとして返します。このオブジェクトは、Rubyの実行エンジンがコードを実行するために内部的に使用されます。

関連コンテンツ