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.4k
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
50
OpenAPI を守るのは難しい
ohmori_yusuke
2
970
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
150
Laravel を学ぶ前に書いていた require と Laravel 使い始めてから躓いた use 宣言と namespace
ohmori_yusuke
1
300
未来を拓く若手エンジニアの興味関心と目指すキャリア
ohmori_yusuke
1
260
PHPカンファレンス関西2024でLTとスタッフした
ohmori_yusuke
2
470
技書博に参加したら執筆できた
ohmori_yusuke
1
430
PHPを勉強してからプログラミングが好きになった話
ohmori_yusuke
1
630
「石蒜模拟器」にコントリビュートしてみた
ohmori_yusuke
1
450
Other Decks in Technology
See All in Technology
大規模言語モデル (LLM)における低精度数値表現
pfn
PRO
3
840
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
38k
AWSの生成AI入門書を執筆しました🎉
minorun365
PRO
0
150
Prisma ORMを2年運用して培ったノウハウを共有する
tockn
19
5.1k
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
170
開発スピードの維持向上を支える、テスト設計の 漸進的進化への取り組み / Continuous Test Design Development for Speed of Product Development
ropqa
0
190
Databricksの生成AI戦略
taka_aki
1
380
Google Cloudを組織(企業)で運用する時のベストプラクティス × 健康の環境分離戦略 #まるクラ勉強会
yasumuusan
0
180
TiDBにおけるテーブル設計と最適化の事例
cygames
0
800
OPENLOGI Company Profile for engineer
hr01
1
2.2k
Deno で作る快適な “as Code” プラットフォーム – TSKaigi 2024
pizzacat83
4
310
シンプルなHITL機械学習と様々なタスクにおけるHITL機械学習
naohachi89
0
330
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
23
1.7k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Thoughts on Productivity
jonyablonski
60
3.9k
What the flash - Photography Introduction
edds
64
11k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
Designing on Purpose - Digital PM Summit 2013
jponch
111
6.5k
A better future with KSS
kneath
231
16k
Automating Front-end Workflow
addyosmani
1357
200k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
Producing Creativity
orderedlist
PRO
338
39k
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だけのコードよりは見やすくなったのでは...
きれいなコードを書きたい...
ご清聴ありがとうございました