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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.3k
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
310
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
210
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.8k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
2.3k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.7k
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
480
フィードバックで育てるAI開発
kotaminato
1
110
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
220
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
220
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
Into the Great Unknown - MozCon
thekraken
41
2.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
It's Worth the Effort
3n
188
29k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
Scaling GitHub
holman
464
140k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
4 Signs Your Business is Dying
shpigford
187
22k
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時間と決めて、それ以内に何も進歩がなければ誰かに聞いた方が良い。誰 かに聞くと一瞬で解決するかもしれない。
ご静聴ありがとうございま した!