Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

自己紹介 うーたん 所属 : 公立千歳科学技術大学 twitter : @uutan1108 github : OHMORIYUSUKE 趣味 : アニメを見ること      ヤマノススメが好き      今期はリコリス・リコイル

Slide 3

Slide 3 text

目次 1. 作ったもの 2. 仕様技術 a. fire b. rich c. pydantic 3. コード

Slide 4

Slide 4 text

作ったもの

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

特徴 1. Shellで様々な環境をテストすることができる a. shellが実行可能な環境であればテストすることができる 2. YAMLでテストを定義することができる a. テストの書き方を決めることができる 3. テストケースを配布することができる a. YAMLファイルは公開されている必要がある 4. Shellの結果のみでテストの正誤判定 a. cat test.py | grep main のようなコマンドを実行させてテストする 5. YAML内で使いたい変数を環境ごとに設定させることができる a. テストを行う人が設定することができる(rootのパスワードなど)

Slide 7

Slide 7 text

YAMLでテストを定義する YAMLのサンプル https://github.com/OHMORIYUSUKE/grech/blob/main/test.yml

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

テストを走らせる

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

仕様技術

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

fire

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

rich

Slide 20

Slide 20 text

rich ● 画面幅に合わせたテーブルを作成することができる(感動) ○ termtables(テーブルをいい感じに表示するライブラリ )は画面幅を考慮しない ● 文字に色もつけられる ● マークダウンをいい感じに表示 ● プログレスバーも作れる ターミナルをおしゃれにできる https://github.com/Textualize/rich

Slide 21

Slide 21 text

pydantic

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

コード

Slide 24

Slide 24 text

コードを自分なりにきれいに main.pyだけで処理していたコードを MVCを意識して書き直してみた。 main.py → Controller → UseCase → Controller → View mai.pyだけのコードよりは見やすくなったのでは...

Slide 25

Slide 25 text

きれいなコードを書きたい...

Slide 26

Slide 26 text

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