$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Railsでのデバッグ
Search
tetishi
March 15, 2021
Programming
0
440
Railsでのデバッグ
tetishi
March 15, 2021
Tweet
Share
More Decks by tetishi
See All by tetishi
Catch the Objects
tetishi
0
430
Typing Game
tetishi
0
460
Other Decks in Programming
See All in Programming
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
450
Graviton と Nitro と私
maroon1st
0
140
ゲームの物理 剛体編
fadis
0
370
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
410
GISエンジニアから見たLINKSデータ
nokonoko1203
0
180
Basic Architectures
denyspoltorak
0
120
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
280
SwiftUIで本格音ゲー実装してみた
hypebeans
0
500
Implementation Patterns
denyspoltorak
0
120
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
130
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
150
Developing static sites with Ruby
okuramasafumi
0
330
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
How GitHub (no longer) Works
holman
316
140k
A Tale of Four Properties
chriscoyier
162
23k
HDC tutorial
michielstock
0
270
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
200
It's Worth the Effort
3n
187
29k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
120
ラッコキーワード サービス紹介資料
rakko
0
1.8M
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
73
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時間と決めて、それ以内に何も進歩がなければ誰かに聞いた方が良い。誰 かに聞くと一瞬で解決するかもしれない。
ご静聴ありがとうございま した!