|
I. はじめに このシリーズのこれまでの記事では、argparse、docopt、click の主な機能と使い方を紹介しました。それぞれに独自の特徴があり、いずれもコマンドラインタスクを優れた方法で実行できます。argparse は手続き型で、まずパーサーをセットアップし、次にパラメータを定義し、次にコマンドラインを解析し、最後にビジネスロジックを実装する必要があります。docopt は、まず宣言型構文を使用してパラメータを定義し、次にコマンドラインを手続き型に解析し、ビジネスロジックを実装します。click はデコレータを使用して明示的なコマンド呼び出しロジックをさらに簡素化しますが、それでもオブジェクト指向性は十分ではありません。 本日は、汎用的なオブジェクト指向アプローチを用いてコマンドラインを管理するFireをご紹介します。Fireのオブジェクトはクラス、関数、辞書、リストなどに対応しており、より柔軟でシンプルなものとなっています。 このシリーズの記事では、デフォルトでPython 3をインタープリターとして使用します。まだPython 2をお使いの場合は、両者の構文とライブラリの使用方法の違いにご注意ください。 II. はじめに `fire` は、任意の Python オブジェクトに基づいてコマンドラインインターフェースを自動生成できます。以下の特徴があります。
fire ライブラリは次のコマンドを使用して簡単にインストールできます。
III. クイックスタート argparse、docopt、click を使用してコマンドライン プログラムを実装する手順を思い出してください。
実装手順はますます簡素化され、4ステップから2ステップに簡素化されました。今日の主役であるFireでは、必要なのは1ステップだけです。既存のビジネスロジックで十分です。 これは信じられないほどシンプルです。なぜこれで十分なのでしょうか?Pythonの関数を考えてみましょう。関数はコマンドラインプログラムに対応し、関数のパラメータはコマンドラインプログラムのパラメータとオプションに対応できるでしょうか?次に、Pythonのクラスを見てみましょう。クラスはコマンドラインプログラムに対応し、クラス内の各インスタンスメソッドはサブコマンドに対応し、インスタンスメソッドのパラメータはサブコマンドのパラメータとオプションに対応できるでしょうか? このように考えると、理論的には可能です。fireを使うことでコマンドラインプログラムをシンプルに実装できる様子を、次の例で見てみましょう。 3.1 関数の使用 次の例を見てみましょう。
上記の例では、`hello` という関数を定義しています。この関数は `name` パラメータを受け取り、デフォルト値は "World" です。`fire.Fire(hello)` を使用すると、このコマンド機能を簡単かつ迅速に実装できます。このコマンドラインは `--name` オプションを受け付けます。指定されていない場合はデフォルト値 "World" が使用され、指定されている場合は指定された値が使用されます。 コマンドラインでは次のコマンドを実行できます。
3.2 使用クラス 関数を使用するのが最も簡単な方法ですが、クラスを使用するなど、より体系的な方法で実装したい場合も、fire はそれをサポートします。
上記の例では、`Calculator` クラスが `double` と `triple` という 2 つのインスタンスメソッドで定義されています。どちらもデフォルト値のない `number` パラメータを受け取ります。コマンド機能は `fire.Fire(Calculator)` を使用することで簡単かつ迅速に実装できます。このコマンドラインは、2 つのサブコマンド `double` と `triple` 、および位置パラメータ `NUMBER` またはオプションパラメータ `--number` をサポートしています。 コマンドラインでは次のコマンドを実行できます。
IV. 要約 fireの使い方はとてもシンプルです。Pythonオブジェクトを定義して、あとはfireに任せるだけです。非常にPythonらしいので、人気があります。 上記で示したものに加えて、fire はさらに多くの種類の Python オブジェクトをサポートし、多くの強力な機能を備えています。これらについては、次のセクションで説明します。 |
GoogleのオープンソースPythonコマンドラインライブラリ「fire」の初見
関連するおすすめ記事
-
簡単に学べる Prometheus: 強力なオープンソースの監視およびアラート システム - インストールと使用方法。
-
GnuCash: 強力なオープンソース会計ソフトウェア
-
2025年に注目すべき優れたフロントエンドオープンソースプロジェクト
-
BMWのオープンソース自動車システムWebinosへの参加
-
馬化騰氏が初めてテンセントのオープンソースへの取り組みについて語ったとき、同社はすでにGitHubで82のプロジェクトをリリースし、24万個のスターを獲得していた。
-
Red Hat パートナーは、Red Hat Enterprise Linux 上でデータセンターからエッジまでのハイブリッドクラウド イノベーションを実現します。