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
460
0
Share
Railsでのデバッグ
tetishi
March 15, 2021
More Decks by tetishi
See All by tetishi
Catch the Objects
tetishi
0
460
Typing Game
tetishi
0
480
Other Decks in Programming
See All in Programming
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
110
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
1.1k
Road to RubyKaigi: Play Hard(ware)
makicamel
1
550
アクセシビリティ試験の"その後"を仕組み化する
yuuumiravy
1
190
【26新卒研修】OpenAPI/Swagger REST API研修
dip_tech
PRO
0
140
AIと共に生きる技術選定 2026
sgash708
0
120
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
240
Firefoxにコントリビューションして得られた学び
ken7253
2
150
「OSSがあるなら自作するな」は AI時代も正しいか ── Build vs Adopt の新しい判断基準
kumorn5s
6
1.6k
Programming with a DJ Controller — not vibe coding
m_seki
3
780
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
4
450
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
510
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
130
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
530
A Tale of Four Properties
chriscoyier
163
24k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
360
It's Worth the Effort
3n
188
29k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
170
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
130
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
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時間と決めて、それ以内に何も進歩がなければ誰かに聞いた方が良い。誰 かに聞くと一瞬で解決するかもしれない。
ご静聴ありがとうございま した!