Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PythonでCLIツールを作ってみた
Search
uutan1108
August 04, 2022
Technology
0
1.6k
PythonでCLIツールを作ってみた
こちらのイベントで発表しました。
https://yumenosora.connpass.com/event/255075/
uutan1108
August 04, 2022
Tweet
Share
More Decks by uutan1108
See All by uutan1108
技書博に参加したら執筆できた
ohmori_yusuke
1
70
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
170
学生の時に開催したPerl入学式をきっかけにエンジニアが組織に馴染むために勉強会を主催や仲間と参加して職能間の境界を越えていく
ohmori_yusuke
2
480
やりっぱなしで終わらない勉強法
ohmori_yusuke
2
370
OpenAPIにも静的解析とフォーマッターを導入して快適にスキーマ定義する
ohmori_yusuke
2
270
スクラムフェスに参加した
ohmori_yusuke
1
410
新卒エンジニアが組織に馴染むために勉強会を主催してチームの壁を越える
ohmori_yusuke
1
430
CGIプログラムを書いてみた
ohmori_yusuke
1
180
”私だけ”の技術発信から”仲間と”技術発信に変化するために
ohmori_yusuke
4
380
Other Decks in Technology
See All in Technology
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
710
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
180
【LT】ソフトウェア産業は進化しているのか? #Agilejapan
takabow
0
100
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
210
Application Development WG Intro at AppDeveloperCon
salaboy
0
200
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
210
日経電子版のStoreKit2フルリニューアル
shimastripe
1
150
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.3k
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
100
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
GraphQLとの向き合い方2022年版
quramy
43
13k
The Cult of Friendly URLs
andyhume
78
6k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
380
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Building Applications with DynamoDB
mza
90
6.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Bash Introduction
62gerente
608
210k
Transcript
PythonでCLIツールを作ってみた 見た目でわかる!ビジュアルネタLT会 うーたん
自己紹介 うーたん 所属 : 公立千歳科学技術大学 twitter : @uutan1108 github :
OHMORIYUSUKE 趣味 : アニメを見ること ヤマノススメが好き 今期はリコリス・リコイル
目次 1. 作ったもの 2. 仕様技術 a. fire b. rich c.
pydantic 3. コード
作ったもの
作ったもの YAMLで定義されたテスト を実行するためのCLIツー ル スター★ください https://github.com/OHMORIYUSUKE/grech
特徴 1. Shellで様々な環境をテストすることができる a. shellが実行可能な環境であればテストすることができる 2. YAMLでテストを定義することができる a. テストの書き方を決めることができる 3.
テストケースを配布することができる a. YAMLファイルは公開されている必要がある 4. Shellの結果のみでテストの正誤判定 a. cat test.py | grep main のようなコマンドを実行させてテストする 5. YAML内で使いたい変数を環境ごとに設定させることができる a. テストを行う人が設定することができる(rootのパスワードなど)
YAMLでテストを定義する YAMLのサンプル https://github.com/OHMORIYUSUKE/grech/blob/main/test.yml
環境ごとの変数 テスト内で環境ごとの値を設定させることができる。 コマンド内で用いることができる
テスト テストをまとめることができる テストの名前 コマンド 正規表現 正規表現すべてにマッチするかどうか コマンドを実行するディレ クトリ 成功しなかったときに出る メッセージ
テストを走らせる
インストール pipでインストールすることができる mainにマージされるとビルドされる
初回 どのテストを行うか設定 yamlファイルを設定し、必要な値を設定する YAMLで設定した変数の設定を求められる
テストを実行 すべてのテストを実行することができ る
テストの内容 –debug 1 を与えるとどのようなコマンドを実行してテストを行っているか確認することが できる
仕様技術
ライブラリ - poetry(Pythonのパッケージマネージャ) を使った - 開発環境はDockr 話したいこと • fire •
rich • pydantic 使ったライブラリ
fire
fire PythonでCLIツールを作るときに便利 helpなども良しなにしてくれる https://github.com/google/python-fire
rich
rich • 画面幅に合わせたテーブルを作成することができる(感動) ◦ termtables(テーブルをいい感じに表示するライブラリ )は画面幅を考慮しない • 文字に色もつけられる • マークダウンをいい感じに表示
• プログレスバーも作れる ターミナルをおしゃれにできる https://github.com/Textualize/rich
pydantic
pydantic モデルの型を定義することができる 型に合致しない場合はエラーになる 型ヒントも出してくれる!! 今回はYAMLのデータをモデルにしてコード内で 扱うようにした https://github.com/samuelcolvin/pydantic
コード
コードを自分なりにきれいに main.pyだけで処理していたコードを MVCを意識して書き直してみた。 main.py → Controller → UseCase → Controller
→ View mai.pyだけのコードよりは見やすくなったのでは...
きれいなコードを書きたい...
ご清聴ありがとうございました