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.7k
PythonでCLIツールを作ってみた
こちらのイベントで発表しました。
https://yumenosora.connpass.com/event/255075/
uutan1108
August 04, 2022
Tweet
Share
More Decks by uutan1108
See All by uutan1108
今年始めた 「アニメから得た学びを発表会」
ohmori_yusuke
2
91
行き当たりばったりの二年
ohmori_yusuke
1
300
技書博に参加したら執筆できた
ohmori_yusuke
1
160
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
250
学生の時に開催したPerl入学式をきっかけにエンジニアが組織に馴染むために勉強会を主催や仲間と参加して職能間の境界を越えていく
ohmori_yusuke
2
590
やりっぱなしで終わらない勉強法
ohmori_yusuke
3
470
OpenAPIにも静的解析とフォーマッターを導入して快適にスキーマ定義する
ohmori_yusuke
2
360
スクラムフェスに参加した
ohmori_yusuke
1
510
新卒エンジニアが組織に馴染むために勉強会を主催してチームの壁を越える
ohmori_yusuke
1
520
Other Decks in Technology
See All in Technology
React Routerで実現する型安全なSPAルーティング
sansantech
PRO
2
360
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
350
Duckiedrone - 基於 Raspberry Pi 與 Python 的小型無人機專案介紹
piepie_tw
PRO
0
110
AWS環境におけるランサムウェア攻撃対策の設計
nrinetcom
PRO
1
290
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
190
MasterMemory v3 最速確認会
yucchiy
0
260
AI×医用画像の現状と可能性_2024年版/AI×medical_imaging_in_japan_2024
tdys13
0
820
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
130
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
5
330
TypeScript開発にモジュラーモノリスを持ち込む
sansantech
PRO
3
800
メンタル面でもつよつよエンジニアになる/登壇資料(井田 献一朗)
hacobu
0
160
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
1.6k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
53
13k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Speed Design
sergeychernyshev
25
700
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Automating Front-end Workflow
addyosmani
1366
200k
A Tale of Four Properties
chriscoyier
157
23k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Code Reviewing Like a Champion
maltzj
521
39k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Building Your Own Lightsaber
phodgson
104
6.1k
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だけのコードよりは見やすくなったのでは...
きれいなコードを書きたい...
ご清聴ありがとうございました