nikkie-ftnextの日記

イベントレポートや読書メモを発信

RichのConsoleについてドキュメント確認メモ

はじめに

七尾百合子さん、お誕生日 73日目 おめでとうございます! nikkieです。

o4-mini-high に作ってもらった、Richを使ったコンソールアプリを理解するためにRichのドキュメントに当たりました。

目次

知りたいことリスト

o4-mini-highは以下を使っていました。

  • Console
    • print()
    • rule()
  • Panel
  • Prompt
    • ask()

Richの日本語README

READMEは多くの言語に翻訳されており、日本語版もあります

Consoleの使い方

from rich.console import Console

console = Console()

from rich import printで、太字や色付きなどリッチな出力ができますが、Consoleprint()メソッドを持っています。

console.print("Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i].")

より細かくスタイリングを行うために、Richはbbcodeに似た構文の特別なマークアップを表示することができます。

[bold cyan]などがマークアップですね

Consoleprint()メソッドは、完全に理解しました!

Richのリファレンス

Console

rule()メソッドは、線を引いた行を作ります。
行の中にはタイトルを中央揃えできます。
https://rich.readthedocs.io/en/stable/reference/console.html#rich.console.Console.rule

Draw a line with optional centered title.

────────────────────────────────── Random Choice Generator ───────────────────────────────────

rule()は特殊なprint()と思えるので、全部rich.print関数でも実現できそうですよね。
Consoleはリッチな出力の概念単位を区切るために使うのかな?

Panel

A console renderable that draws a border around its contents.

中身の周りにを描画するのがPanel。

╭─────────────────────────────────────── Your Choice ────────────────────────────────────────╮
│ D                                                                                          │
╰────────────────────────────────────────────────────────────────────────────────────────────╯

console.print(Panel("Hello, World!"))のように、PanelをConsoleに渡します
(READMEではTableをConsoleに渡していました)

Prompt

rich.promptモジュールにはいろいろありました。
例えばConfirmはYes/Noを尋ねます。

Promptはユーザに尋ねて文字列を入力してもらいます。
https://rich.readthedocs.io/en/stable/reference/prompt.html#rich.prompt.Prompt

A prompt that returns a str.

ask()メソッドは、組み込み関数のinput()関数のようなものと捉えています。

終わりに

o4-mini-highが使っていたRichを少しでも理解すべく、ドキュメントに当たりました。
Richについてはprint()関数のようなトップレベルの関数しか知らないところから始めて、Consoleprint()メソッドや、そこにBBCodeでマークアップした文字列だけでなくPanel(など)も渡せることを知りました。
Consoleを使っていけば、リッチな出力のCLIアプリが作れそうです。