- 1 1. はじめに
- 2 2. Pythonのコマンドラインオプションとは?
- 3 3. Pythonでコマンドラインオプションを扱う方法
- 4 4. 【Python】argparseの使い方
- 5 5. 【Python】Clickの使い方
- 6 6. 【Python】Typerの使い方
- 7 7. どのライブラリを選ぶべきか?
- 8 8. FAQ(よくある質問)
1. はじめに
Pythonは柔軟で強力なプログラミング言語であり、多くの開発者に利用されています。その中でも、コマンドラインオプションを活用することで、スクリプトやアプリケーションの操作性を向上させることができます。
本記事では、Pythonでコマンドラインオプションを扱う方法を徹底解説します。具体的には、標準ライブラリであるargparse
、外部ライブラリであるClick
、Typer
の3つを紹介し、それぞれの違いや使い分けについても説明します。
2. Pythonのコマンドラインオプションとは?
Pythonでコマンドラインオプションを使用すると、スクリプトの実行時に引数を渡して動作を制御できます。例えば、次のようなスクリプトを考えてみましょう。
python script.py --name Alice --age 25
このようにオプション引数を利用することで、ユーザーがスクリプトの動作をカスタマイズできます。
2.1 なぜオプション解析が必要なのか?
Pythonのスクリプトを作成する際、入力を標準入力から受け取ることもできますが、コマンドラインオプションを活用すると、柔軟で直感的なユーザーインターフェースを提供できます。以下のようなメリットがあります。
- スクリプトの汎用性が向上(異なるパラメータで実行可能)
- GUIを作らずにユーザーと対話可能(ターミナル操作に適している)
- 設定ファイルなしで動作を変更可能
Pythonには複数の方法でコマンドラインオプションを解析するライブラリがあります。その中でも、特に重要なものが以下の3つです。
2.2 argparse
・Click
・Typer
の比較
Pythonでコマンドラインオプションを解析する方法はいくつかありますが、代表的なものを表にまとめました。
ライブラリ | 特徴 | 使いやすさ | 推奨用途 |
---|---|---|---|
argparse | Python標準ライブラリであり、組み込みのツール | 中 | 小規模〜中規模スクリプト |
Click | 直感的で簡単にコマンド作成が可能 | 高 | 大規模CLIアプリケーション |
Typer | 型ヒントを活用し、Click をよりPythonicに扱う | 高 | API設計やデータ処理 |
3. Pythonでコマンドラインオプションを扱う方法
Pythonでコマンドラインオプションを解析する方法はいくつかありますが、代表的なライブラリとして argparse
(標準ライブラリ)、Click
(外部ライブラリ)、Typer
(型ヒント対応)が挙げられます。
ここでは、それぞれのライブラリの特徴と基本的な使い方を説明します。
3.1 argparse
:標準ライブラリでの実装方法
argparse
はPythonに標準搭載されているライブラリで、追加のインストールなしに使用できます。基本的な引数の解析や、ヘルプメッセージの自動生成が可能です。
argparse
の主な特徴
- Pythonの標準ライブラリなので、追加のインストール不要
- 必須引数やオプション引数を簡単に設定可能
- ヘルプメッセージを自動生成
使用例
以下のコードは、argparse
を使って --name
というオプション引数を受け取り、出力するシンプルなスクリプトです。
import argparse
# ArgumentParserオブジェクトの作成
parser = argparse.ArgumentParser(description="Pythonのコマンドライン引数の例")
# コマンドラインオプションの追加
parser.add_argument("--name", type=str, required=True, help="名前を指定してください")
# 引数を解析
args = parser.parse_args()
# 結果を表示
print(f"こんにちは、{args.name}さん!")
実行例
python script.py --name Alice
出力
こんにちは、Aliceさん!
このように、Python標準の argparse
を使うことで、簡単にオプション引数を処理できます。
3.2 Click
:より簡潔に記述する方法
Click
は、デコレータを活用して直感的にコマンドラインオプションを記述できるライブラリです。argparse
よりも簡潔なコードで同様の処理を実装できます。
Clickのインストール
Click は外部ライブラリなので、事前にインストールする必要があります。
pip install click
使用例
以下は Click
を用いた --name
オプションの処理例です。
import click
@click.command()
@click.option("--name", prompt="あなたの名前は?", help="名前を指定してください")
def greet(name):
click.echo(f"こんにちは、{name}さん!")
if __name__ == "__main__":
greet()
実行例
python script.py
出力
あなたの名前は? Alice
こんにちは、Aliceさん!
このように Click
を使うと、プロンプトを利用してユーザーからの入力を受け取ることも可能です。
3.3 Typer
:型ヒントを活用した直感的な記述
Typer
は Click
をベースに構築されたライブラリで、Pythonの型ヒントを活用して、より直感的に記述できるのが特徴です。
Typerのインストール
Typer
も外部ライブラリなので、事前にインストールする必要があります。
pip install typer
使用例
以下は Typer
を使って --name
オプションを処理する例です。
import typer
app = typer.Typer()
@app.command()
def greet(name: str):
print(f"こんにちは、{name}さん!")
if __name__ == "__main__":
app()
実行例
python script.py greet --name Alice
出力
こんにちは、Aliceさん!
このように Typer
を使うことで、関数の引数をそのままコマンドラインオプションとして扱えるため、より直感的なコードが書けます。
まとめ
ライブラリ | 特徴 | 用途 | インストールの必要性 |
---|---|---|---|
argparse | 標準ライブラリで追加インストール不要 | 小規模なスクリプト | 不要 |
Click | デコレータを活用して簡潔に記述可能 | 大規模CLIアプリ | 必要 |
Typer | 型ヒントを活用して直感的なコード記述 | API開発やデータ処理 | 必要 |

4. 【Python】argparseの使い方
Pythonの標準ライブラリである argparse
は、コマンドラインオプションの解析を行うための強力なツールです。このセクションでは、argparse
の基本的な使い方から応用までを詳しく解説します。
4.1 argparseとは?
argparse
は Python に標準搭載されているライブラリであり、スクリプト実行時の引数を簡単に解析することができます。sys.argv
を直接処理する方法よりも簡潔で可読性が高く、ヘルプメッセージの自動生成などの機能も備えています。
argparseの特徴
- 標準ライブラリなので追加インストール不要
- オプション引数や必須引数の設定が容易
- 自動でヘルプメッセージを生成
- 異なるデータ型の引数を簡単に定義可能
4.2 基本的な使い方
まずは、argparse
の基本的な使い方を見ていきましょう。
シンプルな引数解析の例
以下のコードでは、コマンドライン引数 --name
を受け取り、その値を表示するスクリプトを作成しています。
import argparse
# ArgumentParserオブジェクトの作成
parser = argparse.ArgumentParser(description="Pythonのコマンドライン引数の例")
# コマンドライン引数の定義
parser.add_argument("--name", type=str, required=True, help="名前を指定してください")
# 引数の解析
args = parser.parse_args()
# 結果の出力
print(f"こんにちは、{args.name}さん!")
実行例
python script.py --name Alice
出力
こんにちは、Aliceさん!
このスクリプトでは --name
という引数を必須にしており、引数が提供されない場合はエラーになります。
4.3 必須引数とオプション引数
argparse
では、必須引数(位置引数) と オプション引数 の2種類の引数を定義できます。
必須引数(位置引数)
位置引数は、特定のオプション名を指定せずに渡される引数です。
parser.add_argument("name", type=str, help="名前を指定してください")
実行例
python script.py Alice
出力
こんにちは、Aliceさん!
オプション引数
オプション引数は --
または -
を前につけて渡す形式で、任意指定が可能です。
parser.add_argument("--age", type=int, help="年齢を指定してください")
実行例
python script.py --age 25
出力
年齢: 25
4.4 デフォルト値の設定
引数が指定されなかった場合にデフォルト値を設定することも可能です。
parser.add_argument("--city", type=str, default="東京", help="都市を指定してください")
実行例(引数なし)
python script.py
出力
都市: 東京
4.5 複数の引数を受け取る
nargs="+"
を指定することで、リスト形式で複数の値を受け取ることができます。
parser.add_argument("--fruits", nargs="+", help="好きな果物を指定してください")
実行例
python script.py --fruits apple banana orange
出力
好きな果物: ['apple', 'banana', 'orange']
4.6 フラグ(True/False)オプション
store_true
または store_false
を使用すると、フラグオプションを定義できます。
parser.add_argument("--verbose", action="store_true", help="詳細情報を表示")
実行例
python script.py --verbose
出力
詳細情報を表示します
4.7 ヘルプメッセージの自動生成
argparse
では -h
または --help
を指定することで、ヘルプメッセージを自動的に生成できます。
実行例
python script.py --help
出力
usage: script.py [-h] --name NAME
Pythonのコマンドライン引数の例
optional arguments:
-h, --help show this help message and exit
--name NAME 名前を指定してください
まとめ
機能 | 方法 |
---|---|
必須引数(位置引数) | parser.add_argument("name", type=str) |
オプション引数 | parser.add_argument("--age", type=int) |
デフォルト値の設定 | parser.add_argument("--city", default="東京") |
複数引数の受け取り | parser.add_argument("--fruits", nargs="+") |
フラグオプション | parser.add_argument("--verbose", action="store_true") |
ヘルプの自動生成 | python script.py --help |
5. 【Python】Clickの使い方
Pythonの外部ライブラリ Click は、argparse
よりもシンプルかつ直感的にコマンドラインインターフェース(CLI)を作成できる強力なツールです。本セクションでは、Clickの基本的な使い方から応用例まで詳しく解説します。
5.1 Clickとは?
Click(Command Line Interface Creation Kit)は、PythonでCLIツールを簡単に作成するためのライブラリです。argparse
に比べてデコレータベースの直感的な構文を持ち、複数のサブコマンドを管理するのにも適しています。
Clickの特徴
- デコレータを活用したシンプルな構文
- ネスト構造のサブコマンドが簡単に作成可能
- プロンプト機能(入力を求める機能)を標準装備
- 自動的なヘルプメッセージの生成
Clickを使用することで、より直感的で短いコードでCLIを実装できます。
5.2 Clickのインストール
Click は標準ライブラリではないため、事前にインストールが必要です。
pip install click
5.3 Clickの基本的な使い方
Click を使ってシンプルなCLIアプリを作成してみましょう。以下のコードは、--name
オプションを受け取って挨拶を表示するスクリプトです。
基本のClickスクリプト
import click
@click.command()
@click.option("--name", prompt="あなたの名前は?", help="名前を指定してください")
def greet(name):
click.echo(f"こんにちは、{name}さん!")
if __name__ == "__main__":
greet()
実行例
python script.py
出力
あなたの名前は? Alice
こんにちは、Aliceさん!
ポイント
@click.command()
:関数をCLIコマンドとして定義@click.option("--name", prompt="あなたの名前は?")
:オプション引数を定義し、入力がない場合はプロンプトで求めるclick.echo()
:標準出力を安全に処理
このように、Clickを使うことで、argparse
よりも直感的にCLIを作成できます。
5.4 必須引数とオプション引数
Click では、位置引数(必須引数) と オプション引数 の両方を簡単に定義できます。
位置引数(必須引数)の定義
@click.command()
@click.argument("name")
def greet(name):
click.echo(f"こんにちは、{name}さん!")
if __name__ == "__main__":
greet()
実行例
python script.py Alice
出力
こんにちは、Aliceさん!
オプション引数の定義
@click.command()
@click.option("--age", type=int, help="年齢を指定してください")
def show_age(age):
click.echo(f"あなたの年齢は {age} 歳です。")
if __name__ == "__main__":
show_age()
実行例
python script.py --age 25
出力
あなたの年齢は 25 歳です。
5.5 フラグ(True/False)オプション
Click では、is_flag=True
を設定することで、真偽値を扱うフラグオプションを作成できます。
フラグオプションの定義
@click.command()
@click.option("--verbose", is_flag=True, help="詳細情報を表示する")
def run(verbose):
if verbose:
click.echo("詳細モードで実行します...")
else:
click.echo("通常モードで実行します。")
if __name__ == "__main__":
run()
実行例
python script.py --verbose
出力
詳細モードで実行します...
5.6 複数のオプションを持つCLIアプリ
Click を使うと、複数のオプションを持つCLIアプリを簡単に作成できます。
複数のオプションを組み合わせた例
@click.command()
@click.option("--name", default="ゲスト", help="名前を指定してください")
@click.option("--count", default=1, type=int, help="挨拶の回数を指定してください")
def greet(name, count):
for _ in range(count):
click.echo(f"こんにちは、{name}さん!")
if __name__ == "__main__":
greet()
実行例
python script.py --name Alice --count 3
出力
こんにちは、Aliceさん!
こんにちは、Aliceさん!
こんにちは、Aliceさん!
5.7 サブコマンドの実装
Click では、複数のコマンドを持つCLIツールを作成することも可能です。
サブコマンドを持つCLI
@click.group()
def cli():
pass
@cli.command()
def hello():
click.echo("こんにちは!")
@cli.command()
def bye():
click.echo("さようなら!")
if __name__ == "__main__":
cli()
実行例
python script.py hello
出力
こんにちは!
Click の @click.group()
を使用することで、複数のコマンドを持つCLIアプリを構築できます。
まとめ
Clickの機能 | 記述方法 |
---|---|
基本コマンド | @click.command() |
オプション引数 | @click.option("--name") |
必須引数 | @click.argument("name") |
フラグオプション | @click.option("--verbose", is_flag=True) |
サブコマンド | @click.group() を利用 |
Click を使えば、Python でのCLIツールの開発が argparse
よりも直感的になります。特に、プロンプト機能やサブコマンドの扱いやすさが Click の大きな魅力です。
6. 【Python】Typerの使い方
Pythonの外部ライブラリ Typer は、Click
をベースにしたCLIツール構築用のライブラリで、型ヒントを活用してより直感的に記述できるのが特徴です。本セクションでは、Typerの基本的な使い方から、便利な機能まで詳しく解説します。
6.1 Typerとは?
Typer は、Python の 型ヒント(type hints) を活用して、より簡潔かつ可読性の高い CLI を作成できるライブラリです。Clickの強力な機能を継承しながら、型安全なコードが書けるため、よりPythonicなCLI開発が可能になります。
Typerの特徴
- 型ヒントを活用して直感的に引数を定義可能
- Clickをベースにしており、強力なCLIツールを構築可能
- IDEの補完機能が使いやすくなる
- デフォルト値やバリデーションを型ヒントで簡単に実装
- FastAPIの開発者が提供しているライブラリ
6.2 Typerのインストール
Typer は外部ライブラリのため、事前にインストールが必要です。
pip install typer
6.3 Typerの基本的な使い方
Typerを使うと、型ヒントを活用しながら簡単にCLIツールを作成できます。以下のコードは、--name
オプションを受け取って挨拶を表示するスクリプトです。
基本のTyperスクリプト
import typer
app = typer.Typer()
@app.command()
def greet(name: str = "ゲスト"):
print(f"こんにちは、{name}さん!")
if __name__ == "__main__":
app()
実行例
python script.py greet --name Alice
出力
こんにちは、Aliceさん!
ポイント
app = typer.Typer()
:アプリケーションのエントリーポイントを作成@app.command()
:関数をCLIのコマンドとして登録name: str = "ゲスト"
:型ヒントを活用してデフォルト値を設定print()
:Typerはclick.echo()
を内部的に利用しているため、print()
でも安全
6.4 必須引数とオプション引数
Typerでは、型ヒントを活用することで、必須引数(位置引数)とオプション引数を簡単に定義できます。
必須引数(位置引数)の定義
@app.command()
def greet(name: str):
print(f"こんにちは、{name}さん!")
if __name__ == "__main__":
app()
実行例
python script.py greet Alice
出力
こんにちは、Aliceさん!
オプション引数の定義
@app.command()
def show_age(age: int = typer.Option(..., help="年齢を指定してください")):
print(f"あなたの年齢は {age} 歳です。")
if __name__ == "__main__":
app()
実行例
python script.py show-age --age 25
出力
あなたの年齢は 25 歳です。
オプション引数には typer.Option(...)
を使い、help="説明文"
を追加することで、ヘルプメッセージを自動生成できます。
6.5 フラグ(True/False)オプション
Typer では、is_flag=True
を設定することで、真偽値を扱うフラグオプションを作成できます。
フラグオプションの定義
@app.command()
def run(verbose: bool = typer.Option(False, "--verbose", help="詳細情報を表示する")):
if verbose:
print("詳細モードで実行します...")
else:
print("通常モードで実行します。")
if __name__ == "__main__":
app()
実行例
python script.py run --verbose
出力
詳細モードで実行します...
6.6 複数のオプションを持つCLIアプリ
Typerを使うと、複数のオプションを持つCLIアプリを簡単に作成できます。
複数のオプションを組み合わせた例
@app.command()
def greet(name: str = "ゲスト", count: int = 1):
for _ in range(count):
print(f"こんにちは、{name}さん!")
if __name__ == "__main__":
app()
実行例
python script.py greet --name Alice --count 3
出力
こんにちは、Aliceさん!
こんにちは、Aliceさん!
こんにちは、Aliceさん!
6.7 サブコマンドの実装
Typer では、複数のコマンドを持つCLIツールを作成することも可能です。
サブコマンドを持つCLI
@app.command()
def hello():
print("こんにちは!")
@app.command()
def bye():
print("さようなら!")
if __name__ == "__main__":
app()
実行例
python script.py hello
出力
こんにちは!
Typer では、複数のコマンドを管理するために @app.command()
を複数定義するだけで、簡単に実装できます。
まとめ
Typerの機能 | 記述方法 |
---|---|
基本コマンド | @app.command() |
オプション引数 | typer.Option(...) |
必須引数 | name: str |
フラグオプション | typer.Option(False, "--verbose", is_flag=True) |
サブコマンド | @app.command() を複数定義 |
Typer を使うことで、Python でのCLIツールの開発が argparse
や Click
よりも直感的になります。特に、型ヒントを活用した記述が可能な点が Typer の大きな魅力です。
7. どのライブラリを選ぶべきか?
Python でコマンドラインオプションを解析する方法として、argparse
、Click
、Typer
の3つを紹介しました。
それぞれのライブラリには特徴があり、使用するプロジェクトによって適した選択肢が異なります。
このセクションでは、各ライブラリの特徴を再確認し、どのライブラリを選ぶべきかを解説します。
7.1 argparse
・Click
・Typer
の比較表
項目 | argparse | Click | Typer |
---|---|---|---|
標準ライブラリ | ✅(追加インストール不要) | ❌(要インストール) | ❌(要インストール) |
記述の簡潔さ | ❌(やや冗長) | ✅(デコレータを使用) | ✅(型ヒントを活用) |
オプション引数の扱いやすさ | ◯(柔軟だが少し複雑) | ✅(直感的に定義可能) | ✅(型ヒントで定義可能) |
ヘルプメッセージの自動生成 | ✅(標準対応) | ✅(標準対応) | ✅(標準対応) |
サブコマンドの扱いやすさ | ❌(やや複雑) | ✅(簡単に定義可能) | ✅(直感的に定義可能) |
プロンプト機能(ユーザー入力) | ❌(標準では非対応) | ✅(標準対応) | ✅(標準対応) |
型ヒントのサポート | ❌(なし) | ❌(なし) | ✅(あり) |
適した用途 | 小規模スクリプト | 中〜大規模CLIツール | 型安全なCLIツール |
7.2 用途別おすすめライブラリ
✅ 小規模なスクリプトなら argparse
- Python標準ライブラリなので、追加のインストール不要
- シンプルなCLIツールを素早く作成可能
- オプションや引数を細かく制御できる
- 例:シンプルなログ解析スクリプト、バッチ処理ツール
✅ 直感的にCLIツールを作成したいなら Click
- デコレータを活用し、直感的な記述が可能
- サブコマンドやフラグオプションを簡単に追加可能
- プロンプト機能(
click.prompt()
)が標準装備 - 例:ターミナル上で動作するアプリケーション、データ処理スクリプト
✅ 型安全で可読性の高いコードを書きたいなら Typer
- 型ヒントを活用し、IDEの補完機能が強化
Click
をベースにしており、強力なCLIを簡単に構築可能- コードの可読性が高く、関数の定義がそのままCLIの仕様になる
- 例:データ解析用ツール、機械学習モデルのCLI、API開発用CLI
7.3 各ライブラリの選択基準
条件 | 最適なライブラリ |
---|---|
標準ライブラリで完結させたい | argparse |
短いコードでCLIを作成したい | Click |
型ヒントを活用し、コードの可読性を向上させたい | Typer |
シンプルなスクリプトを作成したい | argparse |
GUIなしで直感的なユーザー入力を受け付けたい | Click or Typer |
大規模なCLIアプリを開発したい | Click or Typer |
7.4 argparse
・Click
・Typer
の実際の選択例
使用シーン | 適したライブラリ | 具体的な用途 |
---|---|---|
スクリプトに簡単な引数を追加 | argparse | ファイル処理スクリプト、バッチ処理 |
シンプルなCLIアプリを作成 | Click | ファイル管理ツール、データ変換ツール |
型安全なCLIを開発 | Typer | データ分析、機械学習ツール |
複数のサブコマンドを持つツールを開発 | Click or Typer | GitのようなCLIアプリ |
プロンプト(入力フォーム)が必要 | Click | ユーザー入力を求めるツール |
型ヒントを活用しつつCLIを作りたい | Typer | API用のコマンドツール |
7.5 結論:どれを選ぶべきか?
あなたの目的 | おすすめのライブラリ |
---|---|
Python標準機能だけで完結させたい | argparse |
短いコードで直感的にCLIを作りたい | Click |
型ヒントを活用し、可読性の高いコードを書きたい | Typer |
ユーザー入力(プロンプト)が必要 | Click |
サブコマンドを多く含むCLIアプリを作りたい | Click or Typer |
それぞれのライブラリにはメリット・デメリットがあり、用途に応じた適切な選択が重要です。
まとめ
argparse
は Python標準ライブラリ であり、小規模なスクリプトに適しているClick
は デコレータを活用 して書きやすく、大規模CLIツールに向いているTyper
は 型ヒントを活用 し、直感的かつ型安全なCLIを作成できる- プロジェクトの規模や求める機能に応じて、適切なライブラリを選択することが重要
8. FAQ(よくある質問)
Pythonのコマンドラインオプションに関するライブラリ(argparse
、Click
、Typer
)について、よくある質問をまとめました。これまでの内容を補完し、実際の使用時に迷いやすいポイントについて詳しく解説します。
8.1 argparse
とoptparse
の違いは何ですか?
Q: argparse
と optparse
の違いは何ですか?どちらを使うべきでしょうか?
A:
optparse
は Python 2 時代に使われていたライブラリで、Python 3.2 以降では 非推奨 となりました。argparse
はoptparse
の後継であり、より柔軟なオプション解析が可能 です。- 現在では
argparse
を使用するのが推奨 されています。
例: argparse
では、デフォルト値やサブコマンド、ヘルプメッセージのカスタマイズが簡単にできます。
import argparse
parser = argparse.ArgumentParser(description="サンプルスクリプト")
parser.add_argument("--name", type=str, help="名前を指定してください")
args = parser.parse_args()
print(f"こんにちは、{args.name}さん!")
8.2 Click
とTyper
はどちらを選ぶべきですか?
Q: Click
と Typer
のどちらを選ぶべきですか?
A:
Click
は汎用的なCLIツール開発に最適 であり、Click
独自のデコレータ構文を活用して簡単にCLIアプリを作成できます。Typer
はClick
をベースに型ヒントを活用できるのが強み です。型安全なコードが書きたい場合や、IDEの補完機能を活かしたい場合に適しています。
ライブラリ | 適した用途 |
---|---|
Click | 一般的なCLIツール開発。オプションが多い場合やサブコマンドを使う場合 |
Typer | 型ヒントを活用し、可読性の高いコードを書きたい場合 |
8.3 小規模なスクリプトでも Click
や Typer
を使うべきですか?
Q: 小規模なスクリプトでも Click
や Typer
を使うべきでしょうか?argparse
では不十分ですか?
A:
- シンプルなスクリプトなら
argparse
で十分 です。標準ライブラリなので、追加のインストール不要で簡単に実装できます。 - しかし、オプションが増えて複雑になってきたら
Click
やTyper
を検討すると良い でしょう。
選び方の目安
スクリプトの規模 | 最適なライブラリ |
---|---|
簡単なスクリプト(1〜3個のオプション) | argparse |
中規模なスクリプト(5個以上のオプション) | Click |
型安全なスクリプトを作りたい | Typer |
8.4 argparse
でサブコマンドを作成するには?
Q: argparse
で git
のようにサブコマンドを作成するにはどうすればよいですか?
A:argparse
では、subparsers
を利用してサブコマンドを作成できます。
例: git
のようなCLIツールの作成
import argparse
parser = argparse.ArgumentParser(description="サブコマンドの例")
subparsers = parser.add_subparsers(dest="command")
# hello コマンド
hello_parser = subparsers.add_parser("hello", help="挨拶をする")
hello_parser.add_argument("name", type=str, help="名前を指定してください")
# 実行
args = parser.parse_args()
if args.command == "hello":
print(f"こんにちは、{args.name}さん!")
実行例
python script.py hello Alice
出力
こんにちは、Aliceさん!
サブコマンドを多用する場合は、Click
の方が直感的に書ける ため、状況に応じて選択してください。
8.5 Typer
を使うメリットは何ですか?
Q: Typer
を使う最大のメリットは何ですか?
A:Typer
の最大のメリットは、型ヒントを活用できること です。
argparse
やClick
では、オプションの型を明示的に指定する必要がありますが、Typer
は Python の型ヒントをそのまま利用できる ため、コードがよりシンプルになります。- IDE の補完機能が強化 され、開発効率が向上する。
例: Typer
を使った型ヒントの活用
import typer
app = typer.Typer()
@app.command()
def greet(name: str):
print(f"こんにちは、{name}さん!")
if __name__ == "__main__":
app()
このコードでは、name: str
の型ヒントを指定するだけで、CLI のオプションが自動的に型チェックされます。
まとめ
argparse
は 標準ライブラリ であり、シンプルなCLIスクリプトに適している。Click
は デコレータを活用 して書きやすく、大規模CLIツールに向いている。Typer
は 型ヒントを活用 し、可読性の高いCLI開発が可能。
適切なライブラリを選択し、より効率的なCLIツールを開発してください!