10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの標準出力をもっと美しく。`Rich` で作るモダンなCLIツール入門

10
Posted at

はじめに

「Pythonでツールを作ったけれど、出力が地味すぎて使いにくい…」 「デバッグ中の巨大な辞書データ、どれがキーでどれが値か見にくい!」

そんな悩みを一瞬で解決するのが Rich というライブラリです。 今回は、Richを使ってCLI(コマンドラインツール)のUXを劇的に向上させるテクニックを紹介します。


1. Richとは?

Richは、ターミナル上でリッチテキスト(色、スタイル、フォント)を表示するためのPythonライブラリです。 単純なテキストだけでなく、テーブル、プログレスバー、マークダウン、構文ハイライトなどを驚くほど簡単に実装できます。

2. インストール

pip install rich

3. これだけは外せない!Richの神機能 4選

print を置き換えるだけでデータが読みやすく

from rich import print とするだけで、リストや辞書が自動的にフォーマットされ、色付けされます。

from rich import print

data = {
    "status": "success",
    "results": [
        {"id": 1, "task": "プログラミング", "done": True},
        {"id": 2, "task": "Qiita執筆", "done": False}
    ]
}

print(data) # インデントと色が自動でつく!

Table でデータを整理する

標準の print では崩れがちなデータ一覧も、Table クラスを使えば一瞬です。

from rich.console import Console
from rich.table import Table

console = Console()
table = Table(title="プロジェクト進捗")

table.add_column("ID", style="cyan", no_wrap=True)
table.add_column("タスク", style="magenta")
table.add_column("完了", justify="center", style="green")

table.add_row("1", "Richの導入", "")
table.add_row("2", "ドキュメント作成", "")

console.print(table)

Progress で「動いている感」を出す

処理に時間がかかる際、進捗バーがあるだけでユーザー体験は激変します。

import time
from rich.progress import track

for i in track(range(20), description="処理中..."):
    time.sleep(0.1) # 重い処理の代わり

Traceback でエラー調査を快適に

開発中に最も役立つのがこれ。エラー画面をリッチにし、ソースコードのどこで間違えたかを強調表示してくれます。

from rich.traceback import install
install()

# これ以降のエラーは、超見やすい形式で表示されるようになります

4. 応用:さらに「映える」ツールにするために

パネルとレイアウト

Panel を使えば、タイトル付きの枠線でメッセージを強調できます。

from rich.panel import Panel
console.print(Panel("システムを起動します...", title="System", border_style="bold blue"))

Markdownをターミナルに表示

なんと、Markdownファイルをそのままターミナルにレンダリングすることも可能です。

from rich.markdown import Markdown

with open("README.md") as f:
    markdown = Markdown(f.read())
console.print(markdown)

まとめ

Rich を使うメリットは単なる見た目だけではありません。

  • 視認性の向上: 色分けにより情報の優先度が直感的にわかる。
  • デバッグ効率化: 構造化されたデータやエラー表示が見やすい。
  • モチベーションUP: 自分が作ったツールがカッコいいと触るのが楽しくなる!

ぜひ、Pythonスクリプトにも from rich import print を追加してみてください。


参考リンク

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?