デバッグを楽にしてくれるライブラリ「icecream」

※本サイトはアフィリエイト広告を利用しています。
アイキャッチIT技術
この記事は約6分で読めます。
スポンサーリンク

今回は、PyPIに公開されている、デバッグを楽にしてくれるライブラリである「icecream」を紹介します。

icecream の概要

うおな
うおな

プログラムを書いている時に、変数の中身を確認したくなることって、ありますよね。

他にも、関数の戻り値をちょっとみたいと、思うことって案外あると思います。

icecreamは、そんな時に、便利なライブラリです。

変数の中身をprint()で確認する時、次のようにして中身を表示させると思います。

x = "Python"
print(x)

プログラムが短いうちは良いですが、長くなってくると、いくつもの要素が表示されるようになってきます。

そんな時、上記の例は、ターミナルでは「Python」とだけ表示されるため、その他の表示内容に埋もれてしまいがちです

うおな
うおな

表示内容が、どの変数のものか確認するため、次のように書くことがあると思います。

x = "Python"
print("x:", x)

このように書くと、「x: Python」と表示されるため、判別しやすくなります。

ただし、いちいちこのように書くのは、手間がかかります

うおな
うおな

そこで、icecreamの出番です。

icecreamでは、次のように書きます。

from icecream import ic

x = "Python"
ic(x)

このように書くと、「ic | x: ‘Python’」という形で表示されます

うおな
うおな

ライブラリのインポートを行なっておくと、あとは、簡単な記述で、デバッグ時に見やすく表示を行なってくれます。

それでは、「icecream」の使い方について、掘り下げていきましょう。

本記事では、2021年2月時点での最新バージョンである、バージョン2.1.0を利用しています。

icecream のインストールのやり方

pip の場合

pip を利用して、ライブラリをインストールする場合は、次のコマンドを入力します。

pip install icecream

2021年2月現在、上記のコマンドでインストールを行なうと、最新バージョンであるバージョン2.1.0がダウンロードされます。

conda の場合

2021年2月現在、Anaconda cloud にicecreamが登録されていないことから、conda コマンドを利用してインストールを行なうことができません。

pip コマンドを利用して、インストールを行ないましょう。

ファイルへのインポートのやり方

icecream を自分のPythonの環境へのインストールが完了したら、実際に使う為にPythonのプログラムファイルにインポートしましょう。

うおな
うおな

ちゃんと、icecreamをインストール済みかどうかの確認に使うコマンドは、別の記事にまとまったいるので、そちらも確認してみてください。

from icecream import ic

この一文を、ファイルの冒頭に記述すると、icecreamを使う準備完了です!

うおな
うおな

これ以降に、icecreamの使用例を紹介していきます。

どの例でも、ライブラリをファイルにインポートすることは必要です。

icecreamの使用実例

変数の中身を確認したい時

変数に何が入っているかを確認する時は、次の様に記述します。

x = 'python'
ic(x)
表示

ic| x: ‘python’

うおな
うおな

ic(x)というように、調べたい変数を囲うだけです。

関数の引数と結果を確認したい時

関数の引数と結果を確認する時は、次の様に記述します。

def foo(i):
    return i + 333

print('関数の引数と結果を確認したい時')

ic(foo(123))
表示

ic| foo(123): 456

うおな
うおな

関数fooは、引数iと333を足した数字を返すだけの関数です。

これも先ほどの変数の時のように、ic()で囲ってあげると、関数名 + 引数 + 返り値の組み合わせで表示してくれます。

辞書型の中身を確認したい時

辞書型の中身を確認したい時は、次の様に記述します。

d = {'key': {1: 'one'}}
ic(d['key'][1])
表示

ic| d[‘key’][1]: ‘one’

うおな
うおな

辞書型の中身も、簡単に確認することができます。

クラス変数を確認したい時

クラス変数を確認したい時は、次の様に記述します。

class klass():
    attr = 'yep'

ic(klass.attr)

表示

ic| klass.attr: ‘yep’

うおな
うおな

クラス変数の中身を確認する時も、変数の時と同じ感覚で利用できます。

引数なしで利用する場合

ここまで、ic()という記述に、引数として、変数や関数を与え、中身の確認ができるということを紹介してきました。

ここからは、引数を与えず、「ic()」のみを記述した時の使い方を紹介します。

うおな
うおな

引数が与えられない場合は、ic()が記述されているファイル名とその位置を返すという働きをします。

# ファイル名「icecream_test.py」
ic()          # 1番

def bar():
    ic()      # 2番
    y = 1
    if y:
        ic()  # 3番
    else:
        ic()  # 4番

bar()

表示

ic| icecream_test.py:26 in at 06:15:09.674 # 1番
ic| icecream_test.py:29 in bar() at 06:15:09.685 # 2番
ic| icecream_test.py:32 in bar() at 06:15:09.691 # 3番

うおな
うおな

ic()がいっぱい登場したので、順番に説明していきます。

まず、コメントアウトで、1番にしているic()が、表示結果のボックスの1番の表示例となります。

ic()が、「icecream_test.py」というファイルの26行目にあるということを示しています。

次に関数bar()について、関数内に、必ず通る2番のic()に加えて、if文で、2つのic()が3番と4番として、用意されています。

2番のic()は、関数が呼ばれた時に必ず通ります。表示結果の2番が表示例となります。

3番と4番のic()については、if文で、どちらかのic()しか実行されません。

今回の場合、y = 1なので、if文を通過し、3番のみ実行されます。4番は、実行されないので、結果に表示されません。

うおな
うおな

プログラムが複雑になった際に、特定の関数やモジュールが実行されているのかどうか分からないということは案外よくあることだと思います。

そのような場合に、icecreamは活躍すると考えます

まとめ

今回は、Pythonのライブラリの1つである、icecreamについて紹介してきました。

このライブラリは、デバッグを簡単にしてくれるもので、開発期間中にしか、お世話にならないライブラリだと思います。

特に、プログラミングを学習し始めた人は、プログラムがどのように動いているか、想定しにくかったり、変数の中身が分からなくなったりすると思います。

そのような時に、簡単に動きや中身を確認することができるので、学習のつまずきを減らすことができるライブラリだと思います。

ぜひ試してみて下さい。

タイトルとURLをコピーしました