
2025.03.07
メール対応担当の8割以上が「カスハラ被害」に クレームのハード化・長期化を防ぐ4つの対策
jupyter notebookでのdebug入門(全1記事)
リンクをコピー
記事をブックマーク
久保田史洋氏(以下、久保田):今日は5分のLT(ライトニングトーク)なので、5分で終われるかがちょっと不安ですが、急ぎ足で「jupyter notebookでのdebug入門」というタイトルで発表します。よろしくお願いします。
自己紹介も短めです。「Twitter」「Kaggle」を「fkubota」という名前でやっています。バンドルカードの株式会社カンムで、機械学習エンジニアをやっているKaggle Expertです。
コンテンツは、主にビギナーに向けて話します。2本立てで、「debugについて」「jupyter notebookでdebug入門」という内容で発表します。
さっそくですが、「あるある」かなというお話をします。コンペを始める時は「コンペやったるでー!」とテンションが最高潮です。イケてるノートブックを見つけて、これを参考にしよう、これで入門しようと思います。
そのあと「うーん、人のコードを読むのしんどいなぁ」となると思います。自分の環境だと動かないので修正が必要で「ぴえんこえてぱおん」状態になって、「コンペちょっとだるいな」とか「やめちゃう」とかある気がします。
3番目のしんどい部分ですが、debug力があれば軽減されるよねというのがモチベーションです。
「こんな経験はないですか?」ということで、よくある例としてKaggleのノートブックを参考にしている状況を思い出してほしいのですが、classAの中にfuncBがあって、funcBの中にfuncCとかDとか、深い構造があります。
「outputFが重要らしいから、ここを見たいんだけど、深いから理解するのは大変だなぁ」みたいなのがあって、こういう時は、outputFやinput_をprintで見るかなと思います。print debugと呼ばれるものです。
print debugも別に悪くはないし、僕もメチャクチャ使いますが、これだけだとしんどいのは当たり前です。なので今日はdebugをしたほうがいいという話をします。
単純に面倒くさいというのもあるのですが、深くにあると、funcDに到達するまでにいろいろな経路を通ってくるので、単純に1個1個時間がかかるんですよね。
時間がかかると、試行錯誤の数も減ってしまいます。例えばさっきのprintで見ているのを、「これじゃあわからないから」とinput_のshapeを見るために、shapeを付けて実行する……shapeを見るだけなのに、深くにあるせいで30秒かかっちゃうとかは「あるある」だと思います。
あとは、plotしてみるけどエラーが出てしまった、このエラーに気づくのに30秒かかるとか。深いところにあるものをprint debugだけでやろうとするとしんどいです。
そういうのは、デバッガを使うと左の複雑な状況から、右の感じになります。ツールは「pdb」「ipdb」「IDE」「PyCharm」とかいろいろとあります。デバッガも.pyと.ipynb、ノートブックとかいろいろとあって、今日はノートブック形式で話を進めます。ノートブック形式で入門する人が多いのと、参考資料がぜんぜんないのがモチベーションです。
さっそく「どれがいいんですか?」ですが、いろいろとあるんですよね。しかもその一部しか抜き出していなくて、右に行くほど高機能です。
ここが環境です。「JupyterNotebook」とか「JupyterLab」とか「KaggleNotebook」「Colaboratory」と書いています。それぞれを動かすのにどれだけ大変かを○、△、◎で表しています。
この◎は、特に何もしなくてもすぐに動かせるツールなので、今日は「pdb」と「%debug」を紹介します。時間がないので、動かせて学べるサンプルを用意しました。
タブ切り替えて「Colaboratory」で上から動かしていって、僕が書いた指示どおり動かせば、デバッガを体験できるものを作りました。
あとはこれをやってください。わざとエラーを起こさせたり、よくわかんない動作を紛れ込ませたりしているのを、デバッガ使って直していくのを体験できます。せっかく作ったので、よければ使ってみてください。
ぜんぜんdebugをやったことがない3人に試してもらって「よくわかりました」と言われたので、たぶん大丈夫だと思います。なにかあればDMでも教えてください。
これで以上です。ありがとうございました。
司会者:ありがとうございます。「Colaboratory」にサンプルがあるのでメッチャいいですね。私もおかげでdebugを最近少しできるようになってきています。
久保田:よかった、ありがとうございます。
司会者:5個ぐらいあったやつとか、ぜんぜん知らなかったです。デバッガってこんなにたくさんの種類があるんですね。ちなみに久保田さんはどのデバッガを使っていますか?
久保田:結局「%debug」「ipdb」の2つかな。
司会者:どっちも似たような使い心地でしたっけ? コマンド的には一緒ですか?
久保田:動かすdebugは一緒なんですが、使うタイミングがちょっと違います。%debugはあと出しで、エラーが起こった後実行できるので、基本的には使い方が違いますね。一応その気分の使い分けも、Colabで説明しています。ipdbとpbdが同じような感じです。
司会者:ありがとうございます。
2025.03.12
SNSで炎上している研究者は「研究者として正しい」 人文学のプロ・阿部幸大氏が説く“強い意見を出せない時代”に対する考え方
2021.09.30
「なぜセーラー服で出社してはいけないの?」 さくらインターネット・江草陽太氏の自由な発想の源
2025.03.11
自分よりできる人を採用し、ゴリ押しで権限委譲 東大発スタートアップに学ぶ、組織を伸ばすマネジメント
2025.03.13
改正後のiDeCoと退職金の受け取り方の事例 「改悪」は本当か? プロが真相と狙いを解説
2025.03.12
新規事業を継続するかどうかを見極める2パターンの判断軸 会社の規模別「撤退基準」の設け方
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.03.14
三流の上司と一流の上司の違い 部下の心を動かす科学的アプローチ
2025.03.12
年収別iDeCoの税制メリット 1年で軽減される税負担をプロが試算
2015.11.24
人は食事をしないとどうなるか 餓死に至る3つのステップ
2015.03.12
【全文】「行かないで」瓦礫の下に母親を残し… 菅原彩加さんによる遺族代表スピーチ