はじめに
Pythonでコマンドラインツール(CLI)を作成していると、ログの重要度(Success, Error, Warning)を視覚的に分かりやすくするために、テキストに色を付けたい場面が多々あります。
しかし、色付けに使用する「ANSIエスケープシーケンス」は、伝統的にUnix系(Linux/macOS)とWindowsで挙動が異なり、クロスプラットフォームな対応が面倒でした。これを一挙に解決してくれるのが Colorama です。
1. Coloramaとは?
Coloramaは、ターミナル出力の文字色や背景色を簡単に変更できるライブラリです。
最大の特徴はOS間の差異を吸収してくれる点にあります。Windows環境でも特別な設定なしにANSIエスケープシーケンスを解釈できるようにラップしてくれます。
2. インストール
PyPIから簡単にインストールできます。
pip install colorama
3. 基本的な使い方
Coloramaには主に3つのクラスがあります。
-
Fore: 前景色(文字色) -
Back: 背景色 -
Style: 文字のスタイル(明るさやリセット)
from colorama import init, Fore, Back, Style
# Windows環境での動作を保証するために必ず呼び出す
init()
print(Fore.RED + "これは赤文字です")
print(Fore.GREEN + "これは緑文字です")
print(Back.YELLOW + Fore.BLACK + "背景が黄色で文字が黒です")
# Style.RESET_ALL を使わないと、以降の出力も色が引き継がれてしまう
print(Style.RESET_ALL + "ここから通常の出力に戻ります")
4. 便利な設定:autoreset
色の指定を毎回リセット(RESET_ALL)するのは手間ですし、忘れるとターミナル全体の色がおかしくなってしまいます。init() の引数に autoreset=True を渡すと、print ごとに自動でリセットしてくれます。
from colorama import init, Fore
# 自動リセットを有効化
init(autoreset=True)
print(Fore.CYAN + "この行だけシアン色になります")
print("この行は自動的にデフォルト色に戻っています")
5. 主な定数一覧
よく使われる色は以下の通りです。
| 種類 | 定数 |
|---|---|
| 色 (Fore/Back) | BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE |
| スタイル (Style) | BRIGHT, DIM, NORMAL, RESET_ALL |
6. 実践的な活用例
セキュリティツールや自動化スクリプトで、ステータスを分かりやすく表示する例です。
import time
from colorama import init, Fore, Style
init(autoreset=True)
def log_status(status, message):
if status == "success":
print(f"[{Fore.GREEN}+{Fore.RESET}] {message}")
elif status == "error":
print(f"[{Fore.RED}-{Fore.RESET}] {message}")
elif status == "info":
print(f"[{Fore.BLUE}*{Fore.RESET}] {message}")
log_status("info", "スキャンを開始します...")
time.sleep(1)
log_status("success", "ターゲットの脆弱性を特定しました")
log_status("error", "接続がタイムアウトしました")
まとめ
Coloramaは非常に軽量で依存関係もなく、CLIツールのユーザー体験(UX)を向上させるための必須級ライブラリです。特に、作成したツールを他のOSを利用するユーザーに配布する可能性がある場合は、とりあえず init() しておくだけでも価値があります。