さて、今回はpython関係の記事です。
みなさん、debugってされますよね?毎回対象が何かって書くのめんどくさくないですか?
動作確認したいだけなのに、明示するために書かなきゃいけないコードが増えるっていけてないですよね?めんどくさがりの私にとっては非常にいけてないと思う部分なんです。せめてtest codeでならまだ頑張れるんですけど。。
今回はそんなめんどくささを軽減してくれるicecreamというライブラリの紹介です。個人的には結構お世話になっています。
icecreamって美味しいですか?
個人的にはdebugを楽にしてくれるので、結構美味しいライブラリだと思ってます。使い方もシンプルでとっつきにくさもないです。
icecreamを使わないdebugの場合
普通に簡単なデバッグを実施しようとした場合以下のようになりますよね。
値の確認をする場合
num = 1
name = "aaa"
def debug(num, name):
print("num", num)
print("name", name)
if __name__ == '__main__':
debug(num, name)
そうなんですよ、変数が何かを明記する必要がありますよね。ちょっとめんどくさい。。
関数の実行行数の場合
関数の実行行数(何が呼び出されたのか確認する場合)を知りたい場合は、それこそコードを書かなきゃできませんでした。。
import inspect
def location(depth=0):
frame = inspect.currentframe().f_back
return (frame.f_code.co_filename, frame.f_lineno)
def debug_functions(boolian:bool):
if boolian:
print(location())
else:
print(location())
if __name__ == '__main__':
debug_functions(boolian=False)
変数の確認以上にこっちはめんどくさいですよね。。わざわざやりたくないわってなります。
同じ気持ちになった方は是非icecreamの購入をお勧めしますw
icecreamってどこで買えますか?(インストール方法)
モジュールのインストだけなので、pipコマンドとimportできれば誰でも利用できます。もちろん無料ですw
pip install icecream
インポートの宣言はこちら。
from icecream import ic
これだけでdebugが楽になります。
icecreamの食べ方(モジュールの使い方)
非常にシンプルです。値の確認の場合及び実行行数の確認の双方で見ていきましょう。
icecreamで値の確認をする場合
from icecream import ic
num = 1
name = "aaa"
def ic_debug(num, name):
ic(num)
ic(name)
if __name__ == '__main__':
debug(num, name)
何も表示する時に指定していないですね!これでどうなるかというと。

icecreamさんが美味しく表示してくれています。ごちそうさまですw
icecreamで実行行数の確認をする場合
こっちの場合はさらに楽になります。
from icecream import ic
def ic_functions(boolian:bool):
if boolian:
ic()
else:
ic()
if __name__ == '__main__':
ic_functions(boolian=False)
inspectを利用した実行位置の特定とか何も入ってなくて、非常にシンプルになってます。これでどうなるかというと。

実行行数も、関数名も出してくれてます。本当にごちそうさまです。
【参考】pypiとgithubの紹介
icecreamのpypiとgithubのリンクを貼っておきます。興味わいた方は一度見てみてください。

まとめ
今回は、【Python debugを楽にするicecreamって知ってますか?】という内容で、icecreamというライブラリの紹介をしていきました。
試食会レベルのライトな内容ですが、便利だなぁと思ってもらえたら何よりです。
めんどくささをなくすためにスクリプトを書いていくので、そのためにめんどくささを生んでいては本末転倒ということで、debugもどんどんライトに処理できるようにしていければいいですよね。