0Pricing
Python Academy · レッスン

Clickライブラリ

デコレータでCLIを作成します

「Clickライブラリ」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

Clickとは

Clickは、デコレーターを使ってコマンドラインインターフェースを構築する、人気のサードパーティーライブラリです。解析、ヘルプテキスト、プロンプト、色の処理を、わずかなコードで実現できます。pip install clickでインストールします。

import click

@click.command()
def hello():
    click.echo('Hello from Click')

# hello() would run when called as a script

click.echo

printの代わりにclick.echo()を使用します。エンコーディングの問題に対応し、Clickの色付け機能やリダイレクト機能ともスムーズに連携します。

import click

@click.command()
def greet():
    click.echo('Welcome!')

引数

@click.argumentデコレーターは必須の位置引数を宣言します。Clickはその引数を関数のパラメーターとして渡します。

import click

@click.command()
@click.argument('name')
def hello(name):
    click.echo('Hello ' + name)

オプション

@click.optionはオプションフラグを定義します。デフォルト値を指定すると、Clickがヘルプテキストの生成と型処理を自動的に行います。

import click

@click.command()
@click.option('--count', default=1, help='Number of greetings')
def hello(count):
    for _ in range(count):
        click.echo('Hi')

型付きオプション

Clickはデフォルト値から型を推測します。明示的に指定する場合はtype=intを設定できます。不正な入力にはわかりやすいエラーが表示されます。

import click

@click.command()
@click.option('--age', type=int, default=0)
def show(age):
    click.echo('Age is ' + str(age))

ブールフラグ

is_flag=Trueを指定したオプションは、--verboseのように、指定されたときにTrueになるスイッチになります。

import click

@click.command()
@click.option('--shout', is_flag=True)
@click.argument('text')
def say(shout, text):
    click.echo(text.upper() if shout else text)

プロンプト

prompt=Trueを設定すると、コマンドラインでオプションが指定されなかった場合に、Clickが対話的にユーザーへ質問します。

import click

@click.command()
@click.option('--name', prompt='Your name')
def hello(name):
    click.echo('Hello ' + name)

コマンドグループ

@click.groupはサブコマンドをまとめる親コマンドを作成します。argparseのサブパーサーに相当するClickの機能です。サブコマンドは@cli.command()で追加します。

import click

@click.group()
def cli():
    pass

@cli.command()
def start():
    click.echo('starting')

@cli.command()
def stop():
    click.echo('stopping')

色付き出力

click.styleはテキストを色やスタイルで装飾し、click.sechoは出力と装飾を1回の呼び出しで行います。

import click

@click.command()
def status():
    click.secho('OK', fg='green', bold=True)
    click.secho('Error', fg='red')

確認と終了

click.confirmはyes/no形式の質問を行い、click.Abortを送出するかreturnすると、コマンドを正常に終了できます。

import click

@click.command()
def delete():
    if click.confirm('Are you sure?'):
        click.echo('deleted')
    else:
        click.echo('cancelled')

argparseとClickの比較

argparseは標準搭載されており、シンプルなツールに適しています。Clickは外部依存関係ですが、よりすっきりしたデコレーター形式、入れ子にしたグループ、プロンプト、色付け機能を大規模なCLI向けに標準で提供します。

import click

@click.command()
@click.argument('items', nargs=-1)
def show(items):
    for item in items:
        click.echo(item)

理解度チェック

Clickについての理解度を確認しましょう。

まとめ

Clickライブラリについて学びました。

  • @click.command、@click.argument、@click.optionのデコレーターでCLIを定義します。
  • click.echoとclick.sechoで、必要に応じて色を付けて出力できます。
  • @click.groupで入れ子になったサブコマンドを構築でき、プロンプトと確認機能も組み込まれています。
  • pipでインストールする外部依存関係です。

次は、richを使ったターミナル出力の装飾について学びます。

よくある質問

「Clickライブラリ」レッスンは無料ですか?

はい。「Clickライブラリ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「Clickライブラリ」で何を学びますか?

デコレータでCLIを作成します ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Clickライブラリ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. argparseの基礎
  2. サブコマンドとオプション
  3. Clickライブラリ
  4. リッチなターミナル出力
← Python Academyに戻る