🖱️

Click — Python CLIツールを作る最もクリーンな方法

デコレータベースCLIフレームワークの内部動作

内部動作

@click.command()が関数をCommandオブジェクトでラップ。@click.option()が関数の__click_params__リストにOptionオブジェクトを追加。

hello()呼び出し:Command.main()sys.argvパース→関数引数にマッピング→型変換+検証→元関数呼び出し。

Groupでサブコマンド

Click内部でMultiCommand.invoke()がサブコマンドをルーティング。

Typerとの関係

Typer(FastAPI開発者作)はClickの上に型ヒントレイヤーを載せたもの。デコレータの代わりに関数シグニチャの型ヒントで引数を定義。FastAPIと同じ哲学。

キーポイント

1

@click.command()が関数をCommandオブジェクトでラップ

2

@click.option()が__click_params__にOptionオブジェクトを追加

3

実行時sys.argvをパース→型変換→関数呼び出し

4

@click.group()でサブコマンド構造(gitのようにinit、deploy等)

ユースケース

CLIツール — デプロイスクリプト、データパイプライン、管理コマンド Django managementコマンド代替 — Clickの方がクリーンな場合