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
tetishi
March 15, 2021
Programming
0
410
Railsでのデバッグ
tetishi
March 15, 2021
Tweet
Share
More Decks by tetishi
See All by tetishi
Catch the Objects
tetishi
0
400
Typing Game
tetishi
0
430
Other Decks in Programming
See All in Programming
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
300
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
100
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
680
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
370
KotlinConf 2025 現地で感じたServer-Side Kotlin
n_takehata
1
230
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
350
WindowInsetsだってテストしたい
ryunen344
1
190
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
130
生成AIで日々のエラー調査を進めたい
yuyaabo
0
640
ReadMoreTextView
fornewid
1
480
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.3k
エラーって何種類あるの?
kajitack
5
300
Featured
See All Featured
Music & Morning Musume
bryan
46
6.6k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
Fireside Chat
paigeccino
37
3.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Writing Fast Ruby
sferik
628
61k
Statistics for Hackers
jakevdp
799
220k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
A better future with KSS
kneath
239
17k
BBQ
matthewcrist
89
9.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
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時間と決めて、それ以内に何も進歩がなければ誰かに聞いた方が良い。誰 かに聞くと一瞬で解決するかもしれない。
ご静聴ありがとうございま した!