はじめに
Ruby gem のソースを眺めていると簡単に動かしてみたいと思うことがあるはずです。そして、Ruby on Rails に慣れている人は rails console のように対話的にコードを実行できる環境があるといいなと思うはずです。そして調べてみると、まさにその用途に使える仕組みが用意されていました。
./bin/consoleで対話型インターフェースを立ち上げる
答えはこれです。./bin/consoleで対話的なインターフェースを簡単に立ち上げることができます。
# GitHubからソースコードをclone $ git clone git@github.com:ruby/csv.git Cloning into 'csv'... ... # ディレクトリへ移動 $ cd csv # 対話型インターフェースを立ち上げ $ ./bin/console irb(main):004> csv = CSV.new("foo") => #<CSV io_type:StringIO encoding:UTF-8 lineno:0 col_sep:"," row_sep:"\n" quote_char:"\""> ...
多くの gem では、bundle gem で生成される雛形に bin/console が含まれており、これがあれば同様に利用できます。
Ruby 4.0 以降の挙動に注意
Ruby 4.0 以降では、irb がデフォルト gem から外れたため以下のように言われます。標準ライブラリとして自動でロードされなくなったので、自分で Gemfile に追加するなどの必要があります。
# Rubyのバージョンを確認 $ ruby -v ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [arm64-darwin23] # コンソールの立ち上げを試行 $ ./bin/console ./bin/console:13: warning: irb used to be loaded from the standard library, but is not part of the default gems since Ruby 4.0.0. You can add irb to your Gemfile or gemspec to fix this error. ...
以下のいずれかを追加することで動作します。というよりも、必要に応じて Ruby のバージョンで条件分岐させる設計も考えられます。
# {gem_name}.gemspec ... spec.add_development_dependency "irb" ....
# Gemfile ... gem "irb" ...
まとめ
この機構がもっと知られると良いと思います。bundler/inline のようにスクリプト内で依存関係を完結させる仕組みも便利です。こういうあんまり知られていないけど便利なものが Ruby には多いです。自分があまりにも知らないのか、本当にそこまで知られていないだけなのか。他の言語にもこういう機構はあるのだろうか。