初学者にとってプログラミングを難しくしている理由の一つは,プログラムが動いている様子を想像しづらい,という点です。プログラムに,変数,ループや条件分岐があるので,状態によって実行結果が変わります。同じプログラムでも,与えられる条件や内部状態によって違った動きをします。
熟練したプログラマであれば,条件による挙動の変化や内部状態の境界値を巧みに脳内で想像しながら,すいすいとプログラムを作ってゆくことができます。しかし,初心者にはそのようなことが難しい。そのため,とりあえずプログラムを書いてみて動かしてみるのですが,内部状態の遷移による挙動の変化をうまくイメージできないので,間違えるし,また間違いの原因がどこにあるか理解できなかったり,結果として正しく動くプログラムを作ることができないのです。
プログラムを一行ごとに実行したり,変数の状態を確認すると,初学者がプログラム内部の動きをイメージするために大きな助けとなります。ソースコードデバッガを使うと,プログラムをステップ実行したり実行中の変数の変化を見ることができます。つまり,ソースコードデバッガは,プログラミングの学習に適したツールなのです。
今回紹介するbirdseyeは,手軽にPythonのソースコードデバッガのような機能を提供してくれるライブラリです。挙動を見たい関数に「@eye」のようにデコレートすることで,実行結果を記録し,後で確認できるようになります。
関数の実行結果の確認は,birdseyeが内蔵しているWebサーバを通じて行います。関数を実行した後に,Webブラウザを使ってlocalhost:7777のようなURLにアクセスすると,ASTを使って分析した関数の内部がHTMLのエレメントとして表示されます。見たい部分にマウスオーバーすると,情報が表示されます。
ループがある部分にはボタンが表示されます。ボタンを押すことによって,繰り返し変数の内容を変え,ループの挙動を変化させることができます。例外やエラーが発生した場合には,もととなった部分が赤く囲われ,原因なとが表示されます。
最近はPyCharmやマイクロソフトのVisual Studio Codeのように,Pythonのソースコードデバッガ機能を提供してくれる無料の開発環境も増えてきましたが,「pip install birdseye」でインストールでき,単体のライブラリで似たような機能を提供しているbirdseyeは,運用の手軽さが魅力です。複雑なコードに対して使うのはツラそうですが,データ分析や機械学習で使う程度のコードであれば,かなり便利に使えるはずです。Pythonを学んでいる,または学びたいと思っている方は,ぜひ試してみてください。
Jupyterでこの機能を使えるようになったら最強なんだけどなあ。