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
IaCを意識したCLI開発のエッセンス
Search
po3rin
November 20, 2020
Programming
0
82
IaCを意識したCLI開発のエッセンス
〇〇をファイルで宣言的に管理
したい。そのようなツールを開発
するときは少しコツが必要です。
po3rin
November 20, 2020
Tweet
Share
More Decks by po3rin
See All by po3rin
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
290
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
0
300
検索基盤移行時の思考
po3rin
0
4.2k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
5.7k
Elasticsearchを負荷から守るesguard
po3rin
0
250
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
840
eskeeperを使ったファイル定義によるindex管理
po3rin
2
470
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
88
Handling Temporal Query for Health Search with ja-timex
po3rin
3
320
Other Decks in Programming
See All in Programming
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
590
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
0
140
Lookerは可視化だけじゃない。UIコンポーネントもあるんだ!
ymd65536
1
130
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
250
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
3
190
はてなにおけるfujiwara-wareの活用やecspressoのCI/CD構成 / Fujiwara Tech Conference 2025
cohalz
3
2.7k
Swiftコンパイラ超入門+async関数の仕組み
shiz
0
170
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
4
1.1k
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
230
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
590
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
550
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
Writing Fast Ruby
sferik
628
61k
Music & Morning Musume
bryan
46
6.3k
Adopting Sorbet at Scale
ufuk
74
9.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
What's in a price? How to price your products and services
michaelherold
244
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
A better future with KSS
kneath
238
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
Transcript
IaCを意識した CLI開発のエッセンス 〇〇をファイルで宣言的に管理 したい。そのようなツールを開発 するときは少しコツが必要です。 冪等性を担保するCLIについて考えよう
தଜ߂ ΤϜεϦʔͷ"*ɾػցֶशνʔϜͰݕࡧج൫ पΓΛ୲͍ͯ͠Δɻ(P͕͖ɻ ֤छΞΧϯτQPSJOͰͬͯ·͢ɻ )*SPNV/BLBNVSB
ΤϜεϦʔͰ&MBTUJDTFBSDIΛར༻͍ͯ͠Δ͕ɺੵۃతʹ ݕࡧվળ͍ͯ͠ΔͷͰɺ*OEFYʢ؆୯ʹ͍͏ͱσʔλߏ ͷมߋ͕සൟʹൃੜ͠ɺཧͮ͠Β͍ঢ়گͩͬͨɻ ՝ *446&
ݕࡧج൫νʔϜͰJOEFYͷ৽ن࡞BMJBTΓସ͑Ͱ ରԠ͍ͯ͠ΔŇ৽͍͠JOEFYʹରͯ͠࠶σʔλೖΛߦ͏ ӡ༻ 01&3"5*0/ OFXTW OFXTW /FXTBMJBT 3FRVFTU 0MEJOEFY /FXJOEFY
4XJUDIJOEFY
ӡ༻ 01&3"5*0/ 3FRVFTU %FQMPZ+PC खಈΩοΫͳϝϯςφϯε+PCͷʑ DSFBUFJOEFYDSFBUFBMJBTTXJUDIJOEFY
՝ *446& ࠓɺBMJBTʹඥ͍ͮͯΔJOEFYͷόʔδϣϯͬͯԿ͚ͩͬʁʁ JOEFYೖΕସ͑ɺ࡞ͷͨͼʹࢸΔͱ͜Ζʹൃੜ͢Δ%J⒎ JOEFY࡞εΫϦϓτͷJOEFY໊Λม͑ΔͷΕͯͨɻɻ ͬͯͳ͍JOEFY͕์ஔ͞ΕͯΔɻɻ ႈੑΛ࣋ͬͨૢ࡞ʹ͍ͨ͠ɻɻ
*B$ͱΠϯϑϥΛએݴతʹཧ͢ΔࣄͰιϑτΣΞ։ൃϓϩηεΛΠ ϯϑϥͷΦʔτϝʔγϣϯʹੜ͔͢Ξϓϩʔνɻ͜ΕΛ্ख͘Ӭଓϛυϧ ΣΞͰ͋Δ&MBTUJDTFBSDIʹ*B$ͷϝϦοτΛద༻Ͱ͖ͳ͍͔ ɾهड़తͳΞϓϩʔνʹΑΔႈੑ୲อ ɾఆٛϑΝΠϧʹΑΔόʔδϣϯཧ ɾܧଓςετγεςϜɺϓϩηε *B$ *OGSBTUSVDUVSFBTDPEF
ႈੑΛอͪͳ͕ΒఆٛϑΝΠϧͰ &MBTUJDTFBSDI*OEFYBMJBTΛએݴత ʹཧͯ͘͠ΕΔΛ࡞ͬͨ FTLFFQFS &MBTUJDTFBSDI*OEFYLFFQFS
͜ͷΑ͏ʹఆٛϑΝΠϧͰ&MBTUJDTFBSDIͷ ঢ়ଶΛએݴͰ͖ΔɻӬଓϨΠϠʔͳͷͰૢ ࡞XSJUFPOMZʹࠓߜ͍ͬͯΔɻͭ·Γ ݱࡏͷ࣮શͳ*B$Λଥڠ͢ΔࣄͰσʔ λΛޡͬͯফ͢ϦεΫΛආ͚͍ͯΔɻ FTLFFQFS &MBTUJDTFBSDI*OEFYLFFQFS
ΦϥΠϦʔͷʰ*OGSBTUSVDUVSFBT$PEFʱ ͷதͰ*B$πʔϧ͕͖࣋ͭػೳʹ͍ͭͯͷه ड़͕͋Δɻ͔͜͜Β͜ͷຊΛࢀߟʹ FTLFFQFSͰҙࣝͨ͠*B$πʔϧ࡞ͷϓϥ ΫςΟεΛհ͍ͯ͘͠ *B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF
ཁ݅ίϚϯυϥΠϯπʔϧͷແਓϞʔυ *B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF ଞͷπʔϧͱ߹Θ͍͍ͤͯ͢Α͏ʹೖྗΛऔΓग़ͤΔ͜ͱ͕ॏ ཁɻFTLFFQFSͰඪ४ೖྗͳͲ͔ΒใΛऔΓग़ͤΔΑ͏ʹ͢ Δɻ·ͨతͳλΠϐϯάΛཁٻ͠ͳ͍ͱ͍͚ͳ͍Πϯλʔ ϑΣʔεഉআͰ͖ΔΑ͏ʹ͢Δɻ
ཁ݅ઃఆͷ֎ࡏԽ *B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF ෮Մೳੑͷ୲อɻ·ͨطଘͷςΩε τϑΥʔϚοτͰ͋Ε͋ΒΏΔط πʔϧͰಡΈॻ͖Ͱ͖Δɻ·ͨɺόʔ δϣϯཧͰ͖Δɻ
ཁ݅ແਓ࣮ߦͷαϙʔτ *B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF ແਓ࣮ߦίϚϯυͱͯࣗ͠ಈͰ࣮ߦͰ͖Δ͚ͩͰෆेɻਓ͕ؒؔ༩͠ ͳͯ͘ߴ͍৴པੑͰ࣮ߦͰ͖Δ͜ͱ͕ॏཁɻͦ͜ͰԼهͷཁૉ͕ඞཁɻ ɾႈੑ ɾࣄલνΣοΫ ɾࣄޙνΣοΫ ɾʹݟ͑ΔܗͰͷࣦഊ ɾύϥϝʔλԽ
ཁ݅ແਓ࣮ߦͷαϙʔτ *B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF FTLFFQFSͰႈੑɺࣄલνΣοΫɺ ࣄޙνΣοΫɺʹݟ͑ΔܗͰͷࣦഊͱ ͍͏ཁ݅Λ࣮͍ͯ͠Δɻ͜ΕʹΑΓ ʮΦʔτϝʔγϣϯڪාʯΛݮΒ͢ɻ
*B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF FTLFFQFSͰԼهͷεςʔδʹׂ͞ΕΔ ઃఆϑΝΠϧͷόϦσʔγϣϯ ඥͮ͘NBQQJOHpMFଘࡏ͢Δ͔ ඞਢϑΟʔϧυຬͨ͞Ε͍ͯΔ͔ ࣄલνΣοΫ JOEFY͕࣮ࡍʹ࡞ΕΔ͔ Ұ࣌తͳJOEFYΛ࣮ࡍʹ࡞
BMJBTͱʹඥͮ͘JOEFYଘࡏ͢Δͷ͔ ࣮ߦεςʔδ ࣮ࡍʹఆٛϑΝΠϧͷঢ়ଶΛಉظͤ͞Δ ࣄޙνΣοΫ ఆٛϑΝΠϧʹ͋ΔJOEFYBMJBT͕࡞ΒΕ͔ͨ
*B$Λҙࣝͨ͠$-*ͷ࡞๏ *B$BXBSF$-*#FTU1SBDUJDF ઃఆϑΝΠϧͷόϦσʔγϣϯ ඥͮ͘NBQQJOHpMFଘࡏ͢Δ͔ ඞਢϑΟʔϧυຬͨ͞Ε͍ͯΔ͔ ࣄલνΣοΫ JOEFY͕࣮ࡍʹ࡞ΕΔ͔ Ұ࣌తͳJOEFYΛ࣮ࡍʹ࡞ BMJBTͱʹඥͮ͘JOEFYଘࡏ͢Δͷ͔
ςετϐϥϛουΛߟྀ͠ɺTUBHFͷதͰίετͷ͍ͷ͔ΒνΣοΫ
݁Ռ $06$-64*0/ *B$Λҙࣝͨ͠$-*Ͱແਓ࣮ߦͷ৴པੑΛ্͛Δ͜ͱɺ ଞͷπʔϧεΫϦϓτͱ߹Θͤͯ͑ΔΑ͏ʹ͓ͯ͘͠ͱ (PPEɻ JOEFYཧ༻ͷLT+PCɺγΣϧεΫϦϓτͳͲΛେআɻ ӡ༻͕͔ͳΓγϯϓϧʹͳͬͨͣɻຊ൪ಋೖ͔Β͕ઙ͍ ͷͰࠓޙͷFTLFFQFSͷ׆༂Λ؍͍ͯ͘͠ɻ
ը૾ར༻ݩ 8FCWFDUPSDSFBUFECZTUPSJFTXXXGSFFQJLDPN IUUQTXXXGSFFQJLDPNWFDUPSTXFC