
2025.02.26
10年前とここまで違う 落とし穴だらけの“ERP to ERP”基幹システム刷新が抱えるリスクと実情
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.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.25
減点を恐れてモチベ低下、果ては離職も… あらゆる“会社の害虫”を大繁殖させる「ラスボス」の正体
2025.03.24
最悪の場合、組織を死に至らせる“会社の害虫”とは 誤った意思決定や品質不祥事を招く要因
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
2025.03.25
ムダな仕事がなくならない“マッチョな職場”を変えるには 近年の過度な「KPI主義」が組織に与えた影響
2025.03.24
気づけばモラル崩壊……人材育成に無頓着な企業の末路 業績アップや採用にもつながる“人への投資”の重要性
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.03.24
AIの進化が行き着く先は「イノベーター」へ ChatGPT開発者サム・アルトマン氏 × 孫正義氏が語る、人工知能変革期の未来
2025.03.21
査定時期に上司から1年前の失敗を指摘される理不尽 変えられない過去を議論する「成果主義」の弊害
2025.03.19
フェデラー氏が語る「ただの1ポイント」の哲学 ウィンブルドン敗北から学んだ失敗からの立ち直り方
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.25
減点を恐れてモチベ低下、果ては離職も… あらゆる“会社の害虫”を大繁殖させる「ラスボス」の正体
2025.03.24
最悪の場合、組織を死に至らせる“会社の害虫”とは 誤った意思決定や品質不祥事を招く要因
2025.03.19
組織をダメにする“害虫”の正体は間違った思い込み AIやDXなど手段のみにこだわるダメ上司の見極め方
2025.03.25
ムダな仕事がなくならない“マッチョな職場”を変えるには 近年の過度な「KPI主義」が組織に与えた影響
2025.03.24
気づけばモラル崩壊……人材育成に無頓着な企業の末路 業績アップや採用にもつながる“人への投資”の重要性
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.03.24
AIの進化が行き着く先は「イノベーター」へ ChatGPT開発者サム・アルトマン氏 × 孫正義氏が語る、人工知能変革期の未来
2025.03.21
査定時期に上司から1年前の失敗を指摘される理不尽 変えられない過去を議論する「成果主義」の弊害
2025.03.19
フェデラー氏が語る「ただの1ポイント」の哲学 ウィンブルドン敗北から学んだ失敗からの立ち直り方