BLOGワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。2015-03-27PythonCLIフレームワークcliffを触ってみるPython今回のエンジニアブログを担当する藤岡です。今回はcliffというライブラリを使用して、簡単なCLIツールを作ってみたいと思います。CLIツールはバッチ処理、簡単な自作ツールを作成する際に役に立つかと思います。party製のPythonCLIアプリケーションフレームワークです。複数のコマンドの追加、コマンドライン引数の解析、ログの出力等の機能を補ってくれます。こちらにパッケージの情報が記述してあります。pipを使用することで簡単にインストールすることが出来ます。cliff今回は簡単な出力を出しながら、cliffの機能について触れていきたいと思います。今回作成するツールのディレクトリ構成は以下のようになっております。大本となるアプリケーションの実装cliffでは、アプリケーションクラスを軸として様々なコマンドを実行していきます。cliff.app.Appを継承したクラスはツールの軸となる、アプリケーションに紐付けられます。このAppクラスに様々なコマンドを登録し、呼び出すことが可能になります。cliff.app.Appを継承したクラスは、run関数を呼ぶことで実行されます。上記のコードだと、main関数が呼び出されることで、アプリケーションが動き出します。CommandManagerのコンストラクタ引数では、setup.pyに記述されているentry_pointグループ名を渡します。することで、entry_point内のコマンド達を取得することが出来ます。コマンドの実装それでは、上記で作成したSampleAppに簡単な出力を行うhelloコマンドを登録してみます。cliff.command.Commandを継承したクラスはアプリケーションのコマンドとして実装可能になります。コマンドクラスは、コマンド実行時にtake_action関数が呼び出されます。application!!"と出力されるはずです。setup.pyの実装cliffのコマンドの実装はsetup.pyのentry_pointに記述をすることで実装することが可能です。setup.pyの詳細は割愛させていただきます。・cliffパッケージが必須となるのでinstall_requires要素内にcliffの記述を忘れない・エントリーポイント要素内に登録したいコマンドのエントリーポイントグループを記述する(下記の例ですとsample_app.commandの部分です)cliffアプリケーションのsetup.pyでは、この2つの実装が大切になってきます。各コマンドの登録フォーマットですが、{アプリケーション名}={モジュール名}:{関数}{コマンド名}={モジュール名}:{クラス名}てな感じになってます。上記の例ですと、sampleappコマンドはsample_appモジュール内のmainモジュールのmain関数を呼びだし、helloコマンドはsample_appモジュール内のhelloモジュールのHelloクラスを呼び出しています。必要な実装が終わったら、アプリケーションをインストールします。下記のコマンドで、作成したCLIアプリケーションをインストール出来ます。install実行結果はこちら。アプリケーション内のhelloコマンドが実行され、Helloクラスのtake_action関数が呼ばれていることが確認出来ました。cliffではデフォルトで様々なオプションが追加されており、ヘルプ等のオプションをサポートしてくれます。コマンドライン引数の実装cliffでは、コマンド毎にコマンドライン引数を設定することが可能です。valueを出力してみます。cliffのCommandクラスを継承したクラスでget_parser関数をオーバーライドし、その中でadd_argument関数によりコマンドライン引数を追加しています。コマンドライン引数の受け取りが出来ています。helpを指定することで、コマンドの説明を明示する事ができます。インタラクティブシェル引数なしでアプリケーションを実行するとインタラクティブシェルが動き出します。インタラクティブモードでは、各コマンドを打ち込むだけで実行結果を出力することが出来ます。CLIアプリケーションを簡潔に作ることが出来るので、是非お試し下さい。TkinterでGUIプログラミング今回エンジニアブログを担当します若原です。Lambdaをスケジュール化!今回のエンジニアブログを担当する村田です。3.5のzipappで実行可能なアーカイブを作るサーバーエンジニアの原です。Medusaを試すサーバーエンジニアの原です。サービスを簡単に作成するおつかれさまです。採用情報ワンダープラネットではモバイルゲーム開発者を募集しております。(S編)C/C++でネットワークプログラミングをやってみよう(2)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。