Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PythonでCLIツールを作ってみた
Search
uutan1108
August 04, 2022
Technology
0
2k
PythonでCLIツールを作ってみた
こちらのイベントで発表しました。
https://yumenosora.connpass.com/event/255075/
uutan1108
August 04, 2022
Tweet
Share
More Decks by uutan1108
See All by uutan1108
仕様がそのままテストになる!Javaで始める振る舞い駆動開発
ohmori_yusuke
8
5.2k
勉強会から始まった僕のDevRel~新卒エンジニアがつないだ2年間の軌跡~
ohmori_yusuke
2
320
WebエンジニアがSwiftをブラウザで動かすプレイグラウンドを作ってみた
ohmori_yusuke
0
210
アニメがエンジニアをつなぐ!「エンジニアニメ」勉強会が巻き起こすCo-Creationの波
ohmori_yusuke
0
180
組織が大きく変わろうとするとき、自分はどうありたいかを考えている
ohmori_yusuke
19
6.9k
技術以外をきっかけに交流するエンジニア向け勉強会
ohmori_yusuke
0
73
デザインって“感覚”だけじゃないVibe Codingからの気づき
ohmori_yusuke
3
110
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
170
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
1
680
Other Decks in Technology
See All in Technology
AgentCoreとStrandsで社内d払いナレッジボットを作った話
motojimayu
1
970
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
5
860
Building Serverless AI Memory with Mastra × AWS
vvatanabe
0
590
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
120
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
2
200
マイクロサービスへの5年間 ぶっちゃけ何をしてどうなったか
joker1007
21
8.2k
202512_AIoT.pdf
iotcomjpadmin
0
140
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
670
Knowledge Work の AI Backend
kworkdev
PRO
0
260
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
330
"人"が頑張るAI駆動開発
yokomachi
1
540
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
150
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Building an army of robots
kneath
306
46k
How to build a perfect <img>
jonoalderson
0
4.7k
Marketing to machines
jonoalderson
1
4.3k
Facilitating Awesome Meetings
lara
57
6.7k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
310
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
22
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
2
2.8k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
29
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だけのコードよりは見やすくなったのでは...
きれいなコードを書きたい...
ご清聴ありがとうございました