Click
デコレータを使用してコマンドを定義する、強力で広く使用されているPython CLIライブラリ。Flaskの開発者によって作成されました。
GitHub概要
pallets/click
Python composable command line interface toolkit
スター16,668
ウォッチ182
フォーク1,465
作成日:2014年4月24日
言語:Python
ライセンス:BSD 3-Clause "New" or "Revised" License
トピックス
cliclickpalletspython
スター履歴
データ取得日時: 2025/7/25 02:00
フレームワーク
Click
概要
ClickはPythonでコマンドラインインターフェースを構築するための強力で美しいライブラリです。デコレータを使用してコマンドを定義するアプローチが特徴で、Flaskフレームワークの開発者らによって作成されました。読みやすく保守しやすいコードでCLIアプリケーションを作成できます。
詳細
Clickは2014年に初回リリースされ、Python CLI開発の分野で長年にわたって定番として使用されてきました。現在のバージョンは8.x系で、Python 3.7以降をサポートしています。デコレータベースのAPIにより、直感的でクリーンなコード記述を可能にし、Flask、Poetry、Black、pytestなど多くの著名なプロジェクトで採用されています。
主な特徴
- デコレータベースAPI:
@click.command()
などのデコレータで簡潔にコマンドを定義 - 自動ヘルプ生成: コマンドのdocstringから自動的にヘルプメッセージを生成
- 型検証: 引数とオプションの型検証とエラーハンドリング
- テストサポート:
CliRunner
によるCLIアプリケーションの自動テスト機能 - サブコマンド: 複雑なCLI構造を持つアプリケーションの作成をサポート
- カラーサポート: ターミナル出力でのカラー表示機能
メリット・デメリット
メリット
- 保守性: デコレータによる宣言的な記述で保守しやすいコード
- 豊富な機能: パラメータ検証、プロンプト、ファイル処理など充実した内蔵機能
- テスト容易性: CliRunnerによる包括的なテストサポート
- エコシステム: Flaskと同じPallets Projectによる一貫した開発環境
- 実績: 多くの企業とオープンソースプロジェクトでの採用実績
デメリット
- 外部依存関係: 標準ライブラリではないため追加インストールが必要
- 学習コスト: デコレータとClickの概念の理解が必要
- オーバーヘッド: 単純なスクリプトには機能が過剰な場合がある
主要リンク
書き方の例
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for _ in range(count):
click.echo(f'Hello, {name}!')
@click.group()
def cli():
"""A simple CLI with subcommands."""
pass
@cli.command()
@click.argument('filename')
def process(filename):
"""Process the given file."""
click.echo(f'Processing {filename}')
@cli.command()
@click.option('--verbose', is_flag=True, help='Enable verbose output.')
def status(verbose):
"""Show status information."""
if verbose:
click.echo('Verbose mode enabled')
click.echo('Status: OK')
if __name__ == '__main__':
hello() # 単一コマンドの場合
# cli() # グループコマンドの場合