🖱️
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の方がクリーンな場合