優れたプログラマーになりたいなら､ 非常に重要なトピックであるデバッグというものについてお話ししましょう｡
完璧なプログラムを書く人はいないのです｡
正直､ 無理です｡
私たちは常にミスを犯し､ プログラムは常に改善されています｡
プログラムは､ コードを実行している時にエラーやバグと呼ばれる例外がたくさん発生するため､
間違いを見つけながら常にコードを改良しています｡
このように､ コードからバグやエラーを見つけ出し､ 取り除くことをデバッグと呼びますね｡
プログラマーとしての私たちの時間の大部分は､ 自分のコードであれ他人のコードであれ､ コードをデバッグして､ 「どうしてこれがうまくいかないんだろう」と考えることに費やされています｡
そして､ 先輩開発者は本当に､ デバッグが得意なんです｡
そこで､ このビデオでは､ 私が推奨するデバッグの方法と､ 良い実践方法についてお話します｡
さて､ コードのデバッグは､ コードを書けば書くほど上手になることを念頭に置いてください｡
だから､ 一番いいのは､ ひたすら練習して､ Pythonのコードを書き続けることです｡
では､ 私のコツは？
さて､ まず､ 絶対に使いたいのがレンディングです｡
また､ 貸出とは何でしょうか？
まあ､ 開発環境を整えた時点で話はついているんですけどね｡
貸し出しによって､ 私たちのコードのいくつかの問題をコーディングしながら検出することができます｡
例えば､ ここでnum plus fourを実行すると､ 赤い下線が表示されます｡ これは､ 私がコードを実行する前に､ Pi Flakes
lenderが､ NUMという未定義があることに気づいていることを示しています｡
そのため､ 貸し出しによって､ コードを実行する前にこれらのエラーを見つけることができるのです｡
また､ Sublime TextやVisual StudioのコードにPI lentのようなパッケージや拡張機能をインストールすることで､
実際に融資を行うことも可能です｡
それは､ 本当に､ 本当に大切なツールです｡
次に､ 必ず何らかのIDを使用することをお勧めします｡
エド､ これらのエディターやID､ 特にPi charのようなPythonに特化したものには､ Pep
8に基づく自動フォーマットなど､ 私たちが使えるツールがすべて組み込まれているからです｡
Pythonコミュニティが持っている公式スタイルガイドを覚えていますか？
これは､ 例えば､ コードのハイライト表示や書式設定によって､ コードのエラーを検出することができます｡
そのため､ コードを実行する前にエラーを検出することが容易になります｡
最後に､ エラーを読み取る力を身につけたい｡
そしてこれは､ Pythonを学んだ皆さんと一緒に実践しようと思っていることです｡
例えば､ ここで4プラス､ 例えば失言をして､ 実行をクリックしたとします｡
すぐにでも｡
なるほど｡
おい､ 6行目だ｡
私のメインPIファイルにエラーがあります｡
型エラーがあり､ ここにintとstringを追加しようとしていることがわかります｡
だから､ エラーを読み取って､ その意味を理解することができるのです｡
多分､ こんな感じでやっているんだと思います｡
実行」をクリックすると
シンタックスエラーが発生します｡
そして､ 私が知っているシンタックスエラーは､ そのような意味です｡
おい､ Pythonインタプリタが俺のコードを読もうとしてるけど､ 今書いたのはPythonじゃないんだ｡
何をやっているのか､ さっぱりわからない｡
これです｡
文字列リテラルをスキャンしている間に行末になるんですね｡
この文字列を読もうとしたら､ 突然プログラムが終了してしまったんだ｡
だから､ このエラーを読み取れるかどうかが､ 本当に大切なんです｡
このコースではそのうちのいくつかについて説明しました｡ 最も一般的なものとしては､ Pythonインタープリタが理解できないものを書いてしまうシンタックスエラーなどがあります｡
名前エラーみたいなのがありますよね？
存在しない変数を使用するところ｡
だから､ Pythonは理解できないんです｡
おいおい､ 名前なんて全然わかんねーよ｡
名前の価値って何だろう？
タイプエアーのようなものがあります｡
それは､ データ型が不一致で､ 例えば文字列＋4とした場合です｡
バリューエラーのようなものがあるんです｡
存在しないキーにアクセスしようとするキーエラーや､ あるオブジェクトのメソッドにアクセスしようとしてそのメソッドが存在しない属性エラーなどがあります｡
さて､ このようなエラーはコース中ずっと見られるものですが､ これからもう少し見ていきます｡
9割の確率で現れる､ 本当によくあるエラーは15～20個くらいでしょうか｡
そして､ もし覚えていたら､ いつでもPythonのドキュメントで学ぶことができます｡
ただ､ これは練習すればできるようになります｡
見たこともないようなエラーが出たら､ 一度ドキュメントを見て読み返すことをお勧めします｡
普通､ 次に出てくるときに覚えがちですよね｡
しかし､ 私が好きなコードデバッグの方法を紹介しましょう｡
そして､ PDBまたはPython Debuggerと呼ばれるものです｡
そして､ PDBはPythonのビルトインモジュールで､ ここにあります｡
もう一度｡
ビルトインモジュールはPythonの標準ライブラリの一部であり､ PDBは対話型インタープリタ用のPythonデバッガであることを思い出してください｡
そして､ その内容はこちらをご覧いただきたいのですが､ その内容をご紹介しましょう｡
ほらね｡
PDBは､ コードと対話できるため､ 非常に便利です｡
以前は､ 例えばADDという関数があったとして､ 数字1と数字2があるとすると､ この関数は単純に数字1に数字2を足したものを返すだけでした｡
今までは､ このコードをデバッグしようとすると､ 4を足したり､ 意味不明なことをしたりして､ エラーになることがありました｡
まず､ プリントと言えるように､ ここにプリントを追加するのが一番でしょう｡
おい､ どうしたんだ？
見せてください｡
1番と2番､ そしてそれが私に与えてくれるもの｡
そしてprintは､ コードのデバッグをするための本当に､ 本当に迅速な方法であり､ 簡単な方法です｡
いつも使っているのですが､ PDBはちょっとだけ後押ししてくれるんです｡
だから､ こんな風に使うことができるんです｡
PDBをインポートするだけで､ print関数のようなものを使う代わりに､ 「ここにスペースを追加してみましょう」と言うだけでいいのです｡
PDB for Python debugger と言って､ set trace と言えばいいのです｡
そして､ セットトレースは､ インポートしたPDBオブジェクトにある最も便利なメソッドと言えるでしょう｡
セットメソッドを実行するとわかるのですが
これでインタラクティブなPythonデバッガができ､ ここにコマンドを入力して､ 実際に自分のコードをテストできるようになりました｡
そして､ このPDBで興味深いのは､ 8行目の右側にあることです｡
そこで､ 私のコードは実行しようとしたのですが､ PDB set traceと表示されたとたんに一時停止してしまいました｡
そして今､ 私はこの世界にいて､ 何が起こっているのかをテストすることができますので､ 実際に「おい､ ナンバーワン､
なんだ？
まあ1が4なんですけどね｡
2番はどうでしょう｡
2番は文字列なので､ 「文字列とintを足そうとしているんだけど､ これがうまくいかないんだ」というように､
エラーを検出することができます｡
さて､ このPDBインタラクティブには､ 実は便利なことが山ほどある｡
そこで､ ここにヘルプと入力すると
見たか？
PDBで使えるコマンドはある｡
だから､ ここにはトンがあるんです｡
このPDB､ Pythonデバッガから抜けることを想定して､ exitを用意しています｡
でも､ 私にもあります｡
のようなものです｡
リストとしましょう｡
リストがどうなるか見てみましょう｡
だから､ list here and right nowと入力すると､ ウェブサイトが本当になるんです｡
あまり表示されませんが､ リストが表示されることを期待しています｡
そして､ 何らかのアウトプットをするのでしょう｡
自分のコードとOCのリストが出るのはわかりましたが､ どのリストがよくできているのかがよくわからないとします｡
PDBでは､ 入力､ ヘルプ､ そしてリストアップが可能です｡
そうすると､ ここにあるような文書が実際に出てくるんです｡
例えばリストとすると
見てみよう｡
リスト､ リスト､ リスト､ リスト
ここです｡
この中にドキュメントがあるんです｡
つまり､ 現在のファイルのソースをリストアップすると言うことです｡
わかりました｡
つまり､ 私たちが書いたソースコードが羅列されているだけなんですね｡
なるほど､ かっこいいですね｡
他に何があるのでしょうか？
また､ ステップ､ 略してSEと呼ばれるものもあり､ ステップは本当に､ 本当にクールです｡
実際にクリアを使って､ これを上に持ってきてみましょう｡
だから､ すべてのブレイクをクリアするようにクリアと言うんだ｡
してみましょう｡
少し大きくして見てみましょう｡
これでよしとする｡
そのほうがいい｡
わかりました｡
これで実際にステップのようなことができるようになり､ ステップによって次の行に行くことができるようになりました｡
そこでまた､ これをもう少し大きくすると｡
ステップでは､ おい､ 9行目に行けということになる｡
では､ どうなるか見てみましょう｡
ステップで入力する
ああ｡
そして､ 2回ステップを踏んだ｡
では､ 右のステップにしましょう｡
そして､ 見てください｡
私のコードで次の行に行くと､ 私を取得します｡
おい､ 誤字があるぞ？
エラーです｡
というエラーが出ました｡
そこで､ ここにもう1行追加してみましょう｡
例えば､ ここで4＋5を足したり､ 4×5を掛けたりして､ 変数に代入しているとしよう｡
これを中止してもう一度実行すると
今､ 中に入っています｡
こちらです｡
お茶と入力すると､ 名前が出てくる｡
空気です｡
お茶は定義されていないため｡
さて､ 私はこの8行目のコードの中にいますが､ 9行目はまだ実行していません｡
だから､ ステップをやってみよう｡
そして今､ 私は次のサイドにいます｡
だから､ 今 pt を行うと､ hey t が 20 に等しくなる｡
すごい｡
そのため､ ステップを踏んでコードを進めることができ､ とても便利です｡
また､ continueのように､ 何かを返すまでコードを続けることができるものもあり､ continueしてPDBを終了してそれを見ています｡
エラーが表示されるのですが｡
もう一度実行してみましょう｡
aは､ 今いる関数のすべての引数を与えてくれる便利なコマンドです｡
だから､ それを見てください｡
また､ すべての論点を把握することができ､ 本当に役に立っています｡
wというコマンドもある｡
これは､ 実行中の行のコンテキストを表示するものです｡
ここで､ 私たちが広告に登場しているのがおわかりいただけると思います｡
機能です｡
この引数で呼び出したので､ これからこの行を実行します｡
そして最後に､ これをデバッグしているとき｡
よし､ やっとエラーが出たことがわかったぞ｡
番号をつけるべきでしたので､ 今はここから出て､ 単純にこれを5に修正することができます｡
だから､ 今はPDBを削除したりすればいいんです｡
私のコードでは問題なく動作するはずです｡
すごい｡
だからPTBは､ 自分のコードを踏み込んでデバッグしたり､ いろいろなことを試せるのが素晴らしいですね｡
少し練習が必要ですが､ 1日PDBをいじり倒すだけで､ 本当に､ デバッグが上手になりますよ｡
このビデオの後､ PDBを書くことをお勧めします｡ うまくいけば､ 十分に大きなPythonファイルができ､
helpやlistを使っていろいろなコマンドを試して､ 何が使えるかを確認できます｡
実は､ 最後にもうひとつお見せしたいことがあるんです｡
では､ PDBセットトレースのコードに戻るとしよう｡
実行をクリックする｡
A型と気がつくと持っている､ というようなことはできないでしょうか｡
さて､ 私のコードは動作していますが､ 番号2を変更することで､ いくつかの意味不明なものに等しくなるのでしょうか？
さて､ 次はどうしようかな｡
そして､ この最終行を実行するために､ 次を実行しましょう｡
空気が出るんです｡
ここで変数を変えて､ Pythonのコードを書いて､ 関数をテストすることもできるんだ｡
これは今､ 機能しています｡
この変数を別の値に変えたらどうなるのか､ 試してみることができる｡
今回も､ とても､ 役に立ちました｡