Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PythonでCLIツールを作ってみた

 PythonでCLIツールを作ってみた

こちらのイベントで発表しました。
https://yumenosora.connpass.com/event/255075/

ohmori_yusuke

August 04, 2022
Tweet

More Decks by ohmori_yusuke

Other Decks in Technology

Transcript

  1. PythonでCLIツールを作ってみた 見た目でわかる!ビジュアルネタLT会 うーたん

  2. 自己紹介 うーたん 所属 : 公立千歳科学技術大学 twitter : @uutan1108 github :

    OHMORIYUSUKE 趣味 : アニメを見ること      ヤマノススメが好き      今期はリコリス・リコイル
  3. 目次 1. 作ったもの 2. 仕様技術 a. fire b. rich c.

    pydantic 3. コード
  4. 作ったもの

  5. 作ったもの YAMLで定義されたテスト を実行するためのCLIツー ル スター★ください https://github.com/OHMORIYUSUKE/grech

  6. 特徴 1. Shellで様々な環境をテストすることができる a. shellが実行可能な環境であればテストすることができる 2. YAMLでテストを定義することができる a. テストの書き方を決めることができる 3.

    テストケースを配布することができる a. YAMLファイルは公開されている必要がある 4. Shellの結果のみでテストの正誤判定 a. cat test.py | grep main のようなコマンドを実行させてテストする 5. YAML内で使いたい変数を環境ごとに設定させることができる a. テストを行う人が設定することができる(rootのパスワードなど)
  7. YAMLでテストを定義する YAMLのサンプル https://github.com/OHMORIYUSUKE/grech/blob/main/test.yml

  8. 環境ごとの変数 テスト内で環境ごとの値を設定させることができる。 コマンド内で用いることができる

  9. テスト テストをまとめることができる テストの名前 コマンド 正規表現 正規表現すべてにマッチするかどうか コマンドを実行するディレ クトリ 成功しなかったときに出る メッセージ

  10. テストを走らせる

  11. インストール pipでインストールすることができる mainにマージされるとビルドされる

  12. 初回 どのテストを行うか設定 yamlファイルを設定し、必要な値を設定する YAMLで設定した変数の設定を求められる

  13. テストを実行 すべてのテストを実行することができ る

  14. テストの内容 –debug 1 を与えるとどのようなコマンドを実行してテストを行っているか確認することが できる

  15. 仕様技術

  16. ライブラリ - poetry(Pythonのパッケージマネージャ) を使った - 開発環境はDockr 話したいこと • fire •

    rich • pydantic 使ったライブラリ
  17. fire

  18. fire PythonでCLIツールを作るときに便利 helpなども良しなにしてくれる https://github.com/google/python-fire

  19. rich

  20. rich • 画面幅に合わせたテーブルを作成することができる(感動) ◦ termtables(テーブルをいい感じに表示するライブラリ )は画面幅を考慮しない • 文字に色もつけられる • マークダウンをいい感じに表示

    • プログレスバーも作れる ターミナルをおしゃれにできる https://github.com/Textualize/rich
  21. pydantic

  22. pydantic モデルの型を定義することができる 型に合致しない場合はエラーになる 型ヒントも出してくれる!! 今回はYAMLのデータをモデルにしてコード内で 扱うようにした https://github.com/samuelcolvin/pydantic

  23. コード

  24. コードを自分なりにきれいに main.pyだけで処理していたコードを MVCを意識して書き直してみた。 main.py → Controller → UseCase → Controller

    → View mai.pyだけのコードよりは見やすくなったのでは...
  25. きれいなコードを書きたい...

  26. ご清聴ありがとうございました