Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Railsでのデバッグ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tetishi
March 15, 2021
Programming
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Railsでのデバッグ
tetishi
March 15, 2021
More Decks by tetishi
See All by tetishi
Catch the Objects
tetishi
0
470
Typing Game
tetishi
0
490
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
継続モナドとリアクティブプログラミング
yukikurage
3
480
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
250
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
480
フィードバックで育てるAI開発
kotaminato
1
110
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
510
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
600
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
500
Webフレームワークの ベンチマークについて
yusukebe
0
200
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
100
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Paper Plane
katiecoart
PRO
2
52k
Embracing the Ebb and Flow
colly
88
5.1k
What's in a price? How to price your products and services
michaelherold
247
13k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
We Are The Robots
honzajavorek
0
270
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Designing for Timeless Needs
cassininazir
1
300
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Tell your own story through comics
letsgokoyo
1
990
Transcript
Railsでのデバッグ 石田哲朗 @tetishi 2020/5/9 (土)
自己紹介 • @tetishi • 去年の10月からフィヨルドブー トキャンプで勉強しています。 • 今はシステム開発のプラクティ スを行っています。
このテーマを選んだ背景 • 今までデバッグの重要性に気づいておらず闇雲に非効率な コードを書き時間を無駄にしていたので、この機会に上手にデ バッグできるようになりたいと思いこのテーマを選びました。
デバッグとは • プログラムに問題があり、エラーが表示されることをバグと言 います。そのバグの原因を見つけ、修正する作業をデバッグと 言います。
デバッグはなぜ重要なのか • 変数の中身を確認することができる • 適切な場所に処理が通っているのか確認できる • 効率よくエラーを発見することができる
今回話す4つのデバッグ方法 • プリントデバッグ • debug • byebug • binding.pry
プリントデバッグ
• 変数の中身を確認できる • 最も原始的な方法 • 例えばp paramsをコードに記述することでparamsに渡された 値をターミナルのログから確認できる
pとppの違い • p • pp 項目ごとに改行し てくれて見やすく 表示してくれる
debug
• debugヘルパーはview ページでデバッグするとき に使います。 • 例えば、@booksの値を確 認したい場合は右のように 書く • 右のようにViewページで
@booksの値を確認するこ とができる
byebug
• byebugを使用するには Gemfileにbyebugを書 きbundle installをする • デバッグをしたいところ でbyebugと書くとそこで 実行がとまり、ターミナ ル上から確認したい変
数などの中身を確認で きる
• byebugの機能はhelpコマンドで確認で きる
byebugの主な機能 • next 次の行を実行。メソッドの中には入らない。 • step 次の行かメソッドの中に入る。 • finish stepを実行していくとどんどんライブラリのコードに入っていきなかなか処理が進まな
い。その場合はfinishコマンドを使用するとメソッドの外に出たところまで実行を移すこと ができる • continue プログラムが最後まで実行される。ブレイクポイントが設定されている場合は 次のブレイクポイントで停止する
binding.pry
• Gemfileにgem ‘pry-rails’と書きbundle installすると使えるようになる • 調べたい変数の中身や処理を止めたい部分にbinding.pryと書くとそこで実行が とまり、ターミナル上から確認したい変数などの中身を確認できる
• binding.pryはviewでも使 用できます。 • 例えばeachメソッド内の bookの中身を見たいとき は右のようにみることがで きます。
デバッグの心構え • まずは落ち着く • すぐにわかることから調査する 例えば、ログにエラー出力が出ているか、対象データはどうなっているのか、ソースコードで 処理をざっと追ってみるなど • やみくもにデバッグしない。 ここが怪しいじゃないかという仮説を立ててから検証を行う。
仮説を立て検証を行うサイクルを繰り返すことで徐々に原因を絞り込んでいく。 • 思い込みをしていないか考える 私たちは人間なのでたまに思い込みをします。 • 時間を区切る 例えば1時間なら1時間と決めて、それ以内に何も進歩がなければ誰かに聞いた方が良い。誰 かに聞くと一瞬で解決するかもしれない。
ご静聴ありがとうございま した!