こんにちは!Wantedly でエンジニアをしている新谷です。
RubyKaigi に参加すると自分の英語力のなさに痛感します。早くほんやくコンニャクできてほしい...
今回は、日本最大の Ruby に関するカンファレンスである RubyKaigi に Wantedly がスポンサードし、いくつかの講演を聴講しています。Wantedly はスポンサーブースを設けていて、Twitterをフォローしてくださった方には技術書や開発に役立つ Engineering Handbook をプレゼントしています!
WantedlyはRubyKaigi2022にプラチナプランとして協賛し、技術書と開発に役立つHandbookをブースでプレゼントしています #rubykaigi | Wantedly, Inc.
本記事では、1日目の Tools for Providing rich user experience in debugger について紹介させていただきます。
Tools for Providing rich user experience in debugger
Rubykaigi 公式ページ: https://rubykaigi.org/2022/presentations/ono-max.html#day1
Ruby 3.1 から導入された debug gem を活用した、リッチな UI 上 での debugger の紹介です。
大きく分けて2つの機能に対する紹介がありました。それぞれについて紹介していきます。
- Chrome dev tool で Ruby プログラムを debug する
- vscode で Ruby プログラムに対して debugger を動かす(追記予定)
Chrome dev tool で Ruby プログラムを debug する
元々 vscode による debugger を利用する方法は提供されていましたが、vscode ユーザーしか debug gem を利用することができないという問題がありました。そこで、広く使われている Chrome の dev tool を debugger UI として利用することで、誰でも debug gem を利用できるようにすることがモチベーションにあったそうです。
今セッションでは実際に debug gem を利用して、chrome dev tool での debugger のデモを行っていたので、同じように Chrome dev tool での debugger を試してみます。
デバッグ対象の Ruby プログラムとして以下を用意しました。
% cat target.rb
a = 1
b = 2
c = a + b
d = c * 2
gem install debug で debug gem を install した後、以下のコマンドを実行すると Chrome dev tool による debugger が起動しました。
% rdbg --open=chrome target.rb
DEBUGGER: Debugger can attach via TCP/IP (127.0.0.1:52344)
DEBUGGER: wait for debugger connection...
DEBUGGER: Connected.ステップ実行や、各ステップでの変数の状態も確認することができます。
また、実行途中で dev tool の Console タブを開き、変数の値を書き換えてステップ実行を進めることで実行途中で値を書き換えて以降の処理を実行することができました。
私は debug ツールとして pry-byebug gem を使いますが、単一ファイルで動作するような小さな Ruby プログラムでは簡単にデバッグできる debug gem の方が便利だと感じました。
例えば、競技プログラミングといった1ファイルで完結するようなプログラミングに対するデバッグは debug gem に軍配に上がりそうです。
vscode で Ruby プログラムに対して debugger を動かす
(まだ試せてないのであとで追記します...)