#140 仕事を早く終わらせるためのデバッグのやり方!(ビュッフェもあるよ!)

2023/5/10 ·

  • じゅんぺいくんに質問ですはい中級エンジニアと駆け出しエンジニアでコーディングのスピードが違うと思うんですけどはいどこに差が出てると思いますか選択肢の多さ作る時のこういうのもできるこういうのもできるこういうのもできるなるほどねほうなきにしもあらずだと思うんですがはい僕はですねはいデバッグ力が大きいと思うんですよデバッグ力なぜならはいエンジニアってデバッグしてる時間が一番多くてうん



  • 一番多いってことはそれを解決するスピードに大きく差が出ると作業時間に大きく差が出るのではと思うわけなんですよなるほどちなみにこの後デバッグとはっていう話あります?いやそのままいいよ本能の赴くようにあんまりよく分かってないんですけど動かしてダメだった直そうっていう動きのことをデバッグっていう認識なんですけどありがとうございますよく言われるのは



  • もうちょっと大きい商用サービスでバグが出たゲインよく上がんないけどどうにかしなきゃうおーっていうのがデバッグのイメージあると思うんですがもっとちっちゃくですよ普通に実装し始めて実装して動かんなー動くようにしようっていうのもデバッグなんであれですよねフレームワークじゃなくてIDの中でよくある



  • ブレークポイントを置いて走らせてどこでエラー出てるかみたいなのもデバッグですよねそうだねっていうので今日はですね駆け出しエンジニアが陥りがちな良くないデバッグの仕方を修正して中級エンジニアっぽいデバッグができるようになるそんな話ができればと思いますいいねめっちゃありがたいですっていうのでこれを聞いた人はちゃんとね正しいデバッグの仕方を見つけてできるようになる



  • というところで話していくんですがいつでしょうねちょっと編集順によるかもしれませんが前のエピソードですねこれもキャリアスキルズのデバッグの章から引用するエピソードなんですけど前も稼げるエンジニアのスキルというところでデバッグ力というところでお話をしましたがそこでデバッガーは使うなと極端に言うとねはい



  • さっきブレイクポイントの話してたのはどこの誰でしょうねすいませんなるほどデバッガーは基本使うなという話をしたんですが今じゅんぺいくんが落ちたというところで正しいデバッグの仕方を



  • どうしようかな最初から例えていこうかなそれともなんか普通にやったらこうって言った後に例えていきますかそうですねじゃあ普通に言った後にいきましょうかはいじゃあまずはこうやってやれよってキャリアスキルズに書いてましたっていうところからお話しますねはいまずですねデバッグで大事なことからいきましょうデバッグで大事なことはいデバッグで大事なこと一番一番大事なこと一番大事なこと何でしょうデュデン



  • 一番大事なこと?では一番大事なこととりあえず動かしてみるおー違いますちなみにエキシビジョンでのりさんなんだと思います?現状を把握するおー惜しい正解は全てを把握するいやいや変わっとらんわだったら正解にするわまあでものりさんはねまあちょっと近いというか正解はですねマインドセットが大事でどういうマインドセットかというとはい



  • 慌てずすぐに問題が見つかると思わない落ち着いて穏やかな気持ちで進めるのが大事ですノリさんが言ってる現状把握をするためのマインドセットが大事なんですよとにかく動かされ真逆なんですよまずは心からなるほどそうなんですよエラー出たやばいとにかく動かさなきゃだとダメでエラーが起きたなといつか治るって



  • そんなことはないそんなことはないエンジニアあるまじきそれはあらあら何が起きちゃったのあらあらここは合ってるねみたいなねそういうマインドセットが大事ですとビッグマザーそういうマインドセットを持って進めましょうでバグが起きましたとで最初まずデバッグはデバッガーは使うなとこれはのりさん前回言いましたけどテレビつかねーって言った時にバンバンバンバンって叩いてみるうん



  • そんな声は一緒ですそんな声と一緒ですゲームつかねえカセットふーっと同じってことですかあれ大抵治るあれ治るんだよなこの本では車動かねえとりあえずボンネット開けてどこだーって言うのと一緒だと言ってます



  • ボンネットに限らないしボンネットもボンネットで中とんでもなく多いしまずは原因を探りましょうとデバッガー使うなって言ってるのはこれはなんで使うなと言ってるのかは僕はまだいまいちピンと聞きってはないんですがただ問題を正確に把握する上で



  • そうだなフォーカスしちゃうのが良くないですね多分1点に俯瞰して見れないのが多分デバッガー良くないところなんだなと今喋ってると思いましたなるほどちなみにデバッガーって具体的にどこまでがデバッガーなんですか僕のイメージは本当にブレイクポイント挟んでピンポイントで色々見るのがデバッガーのイメージですねなるほど他に何かありますかね



  • ちなみによく言語についてるデバッグ関数とかあるじゃないですかあれ使うのはデバッガーに入りますかデバッガーじゃないですかなるほど例えばHTMLとかでデベロッパーツールを使ってHTML構造を見るのはあれはデバッガーに入りますかあれは違うんじゃないですかあれはチガッカーかそれ言おうと思ってたから丁寧にドリブルしてたんですか違いますそんなことはないですそこゴールに見据えてないです



  • 多分違うと思いますあれはその後のどうなんだろうねどこまでをデバッガーとするのか正直微妙なところはありますそれはありますねワンステップずつ行動を実行していくやつがデバッガー族に言うだと思いますよ僕は



  • なるほどちょっとあんまりフロント触れたことないんであれですけどデベロッパーツールはあるものを見るだけじゃないですか何も使わなければあるものを見るだけならデバッガーじゃないんじゃないってインスペクターってことですかインスペクターなんですかインスペクトまずインスペクションってなんだっけ侵入するのが違う調査する調査ですねありがとうございます詳しく調査するみたいな英語力の無さが見えましたね今英語力ですちょっと俺も自信なかったですよ



  • デバッガーはですね最終手段なんでリーサルウェポンとして取っておいてくださいデバッガー使うときはここまで来たらこの手段しかないなるほど逆にそいつが後ろにあることによって穏やかな気持ちでデバッグに取り込めるってことですかそうですね最終手段を最後まで見せずに手札は



  • 重要な時に切りましょうというのではいなるほどじゃあまず最初何をするんだとデバッグは使わないではい一体何をしたらいいか分からんと思うじゃないですかはいまずはですねエラーを再現しようということをやってくださいうんうんうんはい再現再現はいうんまああのまんま動かしたらエラーはそのまま起きるとは思うんですがうんはい原因箇所を特定してであこうこうこういう条件でこのエラーが起きるんだっていう条件を見つけてください



  • なんでそれが大事かというとですねこれをやらないと治った後に治ったって確認できないからですなるほど特定の条件の時だけ発言するエラーっていう想定ですかねこれは全般そうですねまずエラー見つけたらそれが特定の条件なのかそうじゃないのかわからないはずなんでなるほどなるほどこうやったらエラーが起きるんやなというふうな状況を作ってくださいうんうんうん



  • 次に落ち着いて考えます落ち着いて考えますエラーが起きてますエラーのメッセージが出てますけどこれは何が原因なんだろうなとここ大事なのが落ち着いて考えるって言っても考えた末のアウトプット何になるかというのが大事なんですよ考えるってねアウトプットに向かって思考することを考えるというので問題です落ち着いて考えた結果何ができればいいでしょうか



  • 時間かけんじゃねえか見通しが立つこうかなここをこうすれば直るんじゃないかな素晴らしい正解ですが正解ですが三角七割です仮説を立てる日本語的にはそうです仮説を2,3個用意したいとここでは言ってます2,3個って言われたら5個だよ



  • そうなの?ノリさんも言ってましたね何かの回で仮説を持って進めろみたいな何の回でしたっけ?検索じゃないですかね質問力とか分かんない時のググり力の話じゃないですかね分かんない時が結局デバッグなんですよね多分大抵ググる前にまず検証可能な仮説を2,3個用意したいとうんうんうん



  • 2、3個必要なんだって言ってますね俺は1個しか用意しない俺もね1個やってまずは検証してまたダメだったら戻ってもう1個仮説出してって感じにするかな僕もそうの派だってね1個出た後にいやこれ絶対にできるけどもう1個考えなきゃなーってまず動かしたくなる動かしたくなりますよねここはね2、3個って書いてあるんですけど1個で良くねーかって



  • 多角的に考えるっていう点で言うと2,3個用意するのがいいんでしょうねじゃあ今度デモしようかデモ活動これ1個にしろって仲間見つかるから見つかんないから署名集めますかじゃあ課説を持つのは大事ですだから次、課説を持ちましたとその後何をするかというと課説の検証をします課説の検証をする進め方がですねまず最初に



  • このバグが発生する今直面しているバグが発生するユニットテストを書こうと本に書いてあります大人大人ですねTDD的な進め方だな大人だわーそれまずこれでもユニットテストを書いてこのユニットテストが通ればこのバグが治ったという状況を作るとそこから仮説をやってみてテストが通るか通らんかというのをどんどんやっていく



  • のが仮説の検証ですなるほどねそうやってテストを積んでいけば自然となんかそういう回帰テストがいっぱい増えるってことですか作用でございますすごいすごいですよねちょっと伝わってますかはいよかった伝わってますはいけどできないよねっていう話ですよねわかるいやできないよねというかやらないよねじゃないですかやってる時にその発想にたどり着かないんだよなはいなのでね



  • これはだからすごい大事だなってやっぱりのりさんが言ってたの通りで思います僕はユニットテスト書いてる現場書いてない現場あるかもしれませんが書いた方がいい書いてる現場だったらこういう進め方の方が良い俺もさこのラジオでユニットテスト書いた方がいいっていう話を聞かされたり言ったりしすぎて書いてると思い込んできてるんだよねすごいなそれすごいですねあたかも書いてたよっていう体で他の人の話ができるようになってるんですねそう



  • まずテスト書いた方がいいよ書いてそうな感じで言えそうポッドキャスターとしては完璧ですね書いてそうな感じで言えるならねマインドセットばっちりあとは行動が伴えばそうですね



  • このテストを書くとですねコードって結局メソッドとかのインプットアウトプットが大事じゃないですか副作用がなければどうでもいいじゃないですかぶっちゃけなのでデバッガーを使わなくてもちゃんとアウトプットが変わったよねとかっていうのを見ることができるっていうので単体テストを書こうと言ってますね仮説を検証し検証した結果なんか動いてそうだなとなるわけじゃないですか



  • ここでよっしゃ直ったって思うのはまだ早いですまだ早いんですよ思い込みをチェックしましょうと書いてますここにはなるほど直ったかなの後に本当に意図した通りに直ってるかなっていうのをデバッガーを使わないでチェックするのが一番いいがユニットテストで他のケースとか書いてみてね意図とした通りで動いてるわっていうのを確認するのがいいがこの思い込みが正しいかどうか確認すること以外ではデバッガーの主要は認めないと言ってます



  • ほんまかと思いますがキャリアスキル図ではそういう風に書いていますなるほどね慣れてきたら使ってもいいんじゃないかなと思うんですけどいやーだいぶねなんでしょう後派じゃなくてなんて言うんでしょう極端というか思想強いんですけど思想強いねデバッガーをこの世から排除したいまではいやそれはないかまあでもねそう



  • キャリアスキル率はそう言ってますユニットテストデバッガーを使っちゃうとユニットテストの精度が上がっていかないからユニット精度を上げるためにユニットテストで教育力チェックしていこうねっていう思想を感じますねなるほどねそういうことかそれならなんかわかるかもしれない残んないだろデバッガーは



  • デバッガーで確認したことは後で残らんやろとネットデスクなら残るやろとそういう思想を感じますね達人プログラマー感はちょっとありますねなんていうんでしょうすごいサイエンス感ありますよね再現可能な手法として考えましたっていう確かによし思い込みをチェックしましたとよっしゃ治ったこれ終わりじゃないんですよまただよ早いよ



  • 終わったと思っただろうだよ治ったじゃないですか治ったと思っただろう最後に治った後に理由を理解しようというそこまでちゃんと調べてまだ理由分かってないことあんの?理由分かってればそれでいいんですよ理由分かってればいいんですけど問題解決のゴールじゃなくてなんでそれが発生しちゃったのかとかそっちのねなんでそれが発生しちゃったのかなんでそれが発生したのかこれで解決できたのか



  • あとは終わった後に他の回帰テストをやってなんか出ぐれってないよねこの3つをやって直した後に最後のおさらいと回帰テストをやって初めてデバッグが終了しますと言っております丁寧これは相当丁寧これを息を吸うようにできればデバッグするだけで品質どんどん上がっていきそうな感じしませんか確かに



  • デバッグ終えるたびにどんどん品質良くなるねなんならコード書いてるだけで単体テストできちゃいそうですよね何か一度何かにぶつかってありえるな下手するといらない単体テストめちゃくちゃできそうですけどここは別の本読んで単体テストの良くない書き方を学んでこのテスト書かない方がいいなってなってくるんでしょうねきっとこれを聞いて僕は思ったわけですよむずっとこの本でも言ってます



  • デバッグは職人技ですと言ってるんですねむずいというか面倒ってなっちゃうまあでもこうやって丁寧に段階を踏むことでデバッグじゃなくてバグ踏まなくなるというかエラー踏まなくなるので覚えていくんでねうんうんうん



  • 半分は科学半分は職人技って言ってるんですけどこの本では科学って言ってるのはさっき言ってた単体テストやるとかあとはこういう風に順番で進めていくとかっていうところで科学はあるけどただその勘どころとか仮説立てるとかは職人技なので繰り返し練習と実践を繰り返してやっていくしかないよというのおしゃれ本読んでて一番モヤモヤするんですよ職人技かいと



  • なるほどねやり方を教えてくれと思うんですがまあねやっぱ地道にね進めていくしかないのでねどんどんコードを書いててエラーにぶつかった時はうわエラー起きた大変だじゃなくてこれで中級Aの階段一段登っちゃうぞって言っていいですね出バックにね積み重ねて向き合っていくくらいの気持ちだとね多分ね落ち着いて進められますねなるほどなるほどマインドセットからですねとにかく動かすのは



  • それ間違いないめちゃめちゃとにかく動かしそうな見た目してるねありがとうございます卒業します卒業しようはいっていうので最初に手順みたいな話をしたんですがより理解を深めるためにですよ得意の例え話でやっていこうかなと結構しっかり説明したけどね結構説明しました結構しっかり説明したけどあえて例えていくあえて例えていく



  • やっぱ復習大事なんでちょっと復習しましょう最後に確かにそれを問題にして順平にちゃんと解いてもらおうとなるほどなるほどそれができたら順平はもう覚えたってことになりますねじゃあ聞いてる方も一緒に考えながら聞いてみましょうかちなみに全然打ち合わせしてないんで見切り発車できますはいじゃあ例のビュッフェでいいですか今回も



  • ビュッフェでいきましょうビュッフェチャレンジひまじんプログラマー恒例半年ぶりぐらいのビュッフェチャレンジでいきましょうビュッフェで発生したエラーをデバッグする支配人じゅんぺいというところで進めていきましょうかじゃあ俺ホールスタッフやるよじゃあ俺お客さんやりますねいいですよね俺お客さんでお客さんでいいかじゃあ僕お客さんとしてビュッフェしてますとでまあまあ混んでますと



  • はいはい支配人の順平は上はですとここでお客さんであるカイチからクレームが入ります鳥胸肉蒸したやつがずっとなくて僕タンパク質補給できないんだけどどうにかしてくれないかどうなってんだ支配人支配人呼んでこい呼んできますね支配人はい厄介なマッチョがクレームを入れてきてます厄介なマッチョはい



  • なるほど鶏むね肉の補充が遅いってことでどうなってんだねなるほどまあまあまあ一旦落ち着いて一旦落ち着いてちょっとゆっくり着実にその問題を解決しようかっていうマインドセットを持ちます今心の中ココロの中ですオーナーの心の中です合ってる合ってる合ってるよマインドセットを持ちましたはいで



  • 店員さんがノリさんですね現状把握できたマッチョな厄介なマッチョがそこ問題じゃないですでもそこ厄介なマッチョが来たのが問題じゃなくて鶏むね肉の補充が遅いのが問題ですなんで遅いっていうの大事ですねなるほど料理人スタッフに鶏むね肉



  • なんでできてないのかなっていうのを確認しようまずバイキングの仕組みをお話しさせていただくと減ってきたら基本的にスタッフが交換に参りますそのスタッフは後ろの厨房と会場の間ぐらいにあるスペースに結構ストッカーみたいな感じでいろんなお皿の料理が補充されているので基本的に減ったらそこから取り出していきます



  • そのストッカーからもなくなりそうだったらなくなる前に料理人に注文を出して補充してもらうっていうのがホテルの一般的な流れでございますなるほどさすが元ホテルマンそうするとそのストッカーには鶏むね肉が今あるんですかないですそこにないんですかそこにないのは料理人さんの料理が間に合ってないっていう



  • いやちょっと料理人さんが怖くて怖くてはい言いにくいっす切れられるんですそうなんですかじゃあ料理人さんは昔から怖い



  • 昨日から怖い昨日から今まで仲良かったけど昨日から怖くてちょっとなんか取り入れないゆえ言いづらい空気になっちゃってるそうなんですなるほどそしたらじゃあ僕の方から両人さんにそういう事情を話して接しやすくしてもらうのでその後にストッカーに鶏胸肉をもらってちょっと持ってってもらうように



  • お願いできますか?僕がですか?いた僕が穏やかにしてからその4人さんをはい代わりに頼んでもらっていいですか?トップなどに行ってほしいところですね僕が取ってきて取ってきます今回の問題はとりあえずじゃあ



  • ちょっと支配人が取ってきてもらってその際にちょっと言ってもらっていいですかわかりましたお願いしますよ本当にはいじゃあ取ってきました取ってきてストッカーに鶏むね肉を置きましたじゃあ出しますね出ました出ましたこれ今コックさんは料理人は機嫌直った感じですか



  • 治ってますノリさんの設定した問題的にはそこが原因でしたもうちょっとありますないですちょっと忘れたなと思ったのは鶏むね肉を鶏むね肉について考えてます今どうしたらいいんでしょうねテストをしたいんですけどテストをしたいんだなと思ってなるほどね鶏むね肉を食べてみるとかじゃなくて



  • 無理やりじゃあ僕が答え合わせをしていきますね最初はカイチからクレームが入りましたとエラーが発生しましたここからデバッグをしていきます最初気持ちを作るこれ素晴らしい心の中を喋ってたもんねこれ素晴らしいですこれあくまでロールプレイというか実際の現場でこうやるのが正解と限らないんですがソフトウェアだと思って進めていかなきゃいけないのでまず最初エラーを再現します



  • エラーを再現するんですが鶏むね肉ないぞっていうところももちろんエラーではあるんですけども原因はちょっとどうやらそこじゃなさそうだというのが多分いろいろ調査してて分かったと思いますなのでエラーの再現としてスタッフであるのりさんと料理人さんにコミュニケーションを取らせてみてなんか契約そうだなっていうところを支配人であるじゅんぺいくんが確認する必要がありましたなるほど面白い近づきぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃぃ�



  • 今回は非常に厄介でですねエラーメッセージが原因ではなかったというところでどうやらここのプロトコルがうまくいってないぞっていうのがあったんで一回のりさんと料理人をコミュニケーション取らされてうるせーって料理人が言ってるなっていうというところを確認する必要がありました今後の再現のためにですねその時にのりさんが話しかけた文言をちょっと手元にメモしておいてですね



  • 再現できるようにしておきますとでその後ですね落ち着いて考えますとこれはできてましたねいろいろねヒアリングをして原因はそこだというところで仮説として料理人さんになんだっけなんか



  • うまいことやってって言ったら解決するんじゃないかという仮説を持ったのでそれは素晴らしかったですねただ今回のキャリアスキル的には2,3個仮説を用意する必要があったので言ってみるのもそうですがひょっとしたらね料理人さんお腹空きすぎてイライラしてただけかもしれないので何でしょう差し入れのカロリーメイドが持ってってあげるとかね分かりませんがあとは何でしょうね



  • 失恋の傷を癒してあげるとかね確かに昨日からですから悩みあるかなって急に始まってるから確かに確かにそういう仮説を持ってね持っておくというのが非常に重要でしたね



  • 仮説の検証というところは良かったかなと思ってます実際に言ってみるというところでやったのは良かったんですがただ今回ですねバグが発生するユニットテストを書こうというところがあったと思うのでさっき書いてたのりさんが話しかけた時の文章をメモか何かに置いておいてね再現できるようにするのが良かったかなと思ってますなるほどはい



  • でですねその次ですね仮説の検証終わった後にまあなんかじゃあ今回の機嫌良くなりましたとただこれは見た目上機嫌が良くなってるだけなのではと



  • デバッグが必要なわけなんですよ思い込みをチェックするための様々なケースでのユニットテストが必要ですなので今回のキャリアスキルズで言うと先ほどのりさんが話しかけたスクリプトもそうですし鶏むね肉の時は大丈夫だけどビーフストロガノフの時は切られるんじゃないかみたいなね料理の難易度に応じて料理人の機嫌が悪くなるかもしれないんで



  • この辺もしっかりとユニットテストとしてチェックする必要がありました確かに20点くらいじゃないですか僕全然だった最後にできたっぽいぞといろいろ試してみてうまくコミュニケーション取れてそうだなというのができた上でフィックスした後に理由を理解しようというところで料理人さんはなんでこれでこんな機嫌が悪かったんだと



  • それははたまたのりさんが言った失恋なのかもしれないですしここら辺はしっかりとケアしてあげる必要があるのでワンオンワンないし休みなのか終わった後に落ち着いた後にヒアリングをして原因を探る必要がありましたねこんなアドリブでほぼやったやつでそこまで分析できるんですかこれえ?すごい妄想が好きなんですねすごいですね最後にちゃんと回帰テストを書いて同じ問題が起きないようにしましょうというところでここは



  • マニュアルか何かですかねわかんないですけど次の日のビュッフェでリアルタイムで回帰テストをするんですかね次の日虫取りがなくならないっていうのをちゃんとね試してよしよしこれ解決したなっていうのをしっかり支配人としてやる必要がありましたはいはいわかりましたなるほどこれからですねじゃあまたどんなビジネスにも応用できるってことですかねいやちょっと待ってくださいことビュッフェに関してはねちょっと違うんですけどねあの



  • 再現とかしなくていいですよね絶対確かに確かにねなんか悪いって言われてるって本当かなってまずはぶつけてみようってなんないか



  • 職人ですねカイツともできてますね完全にもうインプット完全に終わったアウトプットまでできてる整理されると僕の中でも素晴らしいビュッフェの時こうやったからソフトウェアの時こうやればいいんだなって思いますもん僕もこれから逆に難問でしたけど楽しかったです難問でしたけど楽しかったですというわけでちょっとあのね



  • コンピューターの時よりはねうまくいかなかったとは思うんですけどインパクトはあったなと思ってます確かに全然ビュッフェでやる必要なかった仕事なら何でもよかったんじゃないかっていうビュッフェでやるのが我々のポリシーですので確かに今回のデバッグの乗り切り方というところで多分普段意識できてないなっていうところが分かったんじゃないかなと思います



  • 仮説は2,3個2,3個って言われたら5個あとはすぐとにかく動かすじゃなくてまず考えて仮説立てようというところが多分できてないがちなところだと思うので前のエピソードもちょっと触れてますが徹底してやっていきましょうというわけで時間もいい感じなんで終わりましょうか了解ですそれではまた次回バイバイ



  • さあ皆さん次の商品は目玉商品ですこちらめちゃくちゃでかいエンターキーわー大きいこれがあるとストレス発散生産性アップ快適な睡眠もえ枕にしちゃうんですかこちらの商品はお値段なんと1024円わーお2の10乗



  • そして今番組終了1時間以内にGoogleフォームよりお便りを送った方はちっちゃいスペースキーも付いてきますポケットに入れて持ち運べますね番組の高評価フォローもすると会員割引なんと90%オフほぼただ今すぐご応募を

0:00 31:25

#140 仕事を早く終わらせるためのデバッグのやり方!(ビュッフェもあるよ!)