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
98
IaCを意識したCLI開発のエッセンス
〇〇をファイルで宣言的に管理
したい。そのようなツールを開発
するときは少しコツが必要です。
po3rin
November 20, 2020
Tweet
Share
More Decks by po3rin
See All by po3rin
M3におけるCI/CDパイプラインを新鮮に保つ仕組み
po3rin
0
360
Go Templateを使った フロントエンド開発を採用した 経緯と所感
po3rin
1
340
検索基盤移行時の思考
po3rin
0
4.3k
Go1.19で採用された Pattern-defeating Quicksort の紹介
po3rin
7
6.1k
Elasticsearchを負荷から守るesguard
po3rin
0
300
Sudachi×Elasticsearchへの移行と医療検索システム精度改善
po3rin
1
930
eskeeperを使ったファイル定義によるindex管理
po3rin
2
520
M3 情報検索/推薦論文輪読会 ~SIGIR祭~ (SIGIR2021: Session 6D – IR Models)
po3rin
0
130
Handling Temporal Query for Health Search with ja-timex
po3rin
3
350
Other Decks in Programming
See All in Programming
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
Yes, You Can Work on Rails & any other Gem
kaspth
0
100
20250708_JAWS_opscdk
takuyay0ne
2
130
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
170
レベル1の開発生産性向上に取り組む − 日々の作業の効率化・自動化を通じた改善活動
kesoji
1
310
React は次の10年を生き残れるか:3つのトレンドから考える
oukayuka
34
11k
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
940
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
4
600
20250704_教育事業におけるアジャイルなデータ基盤構築
hanon52_
5
1.1k
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
240
生成AI時代のコンポーネントライブラリの作り方
touyou
1
290
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
110
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
Typedesign – Prime Four
hannesfritz
42
2.7k
Writing Fast Ruby
sferik
628
62k
Statistics for Hackers
jakevdp
799
220k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Site-Speed That Sticks
csswizardry
10
700
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Speed Design
sergeychernyshev
32
1k
Embracing the Ebb and Flow
colly
86
4.8k
Fireside Chat
paigeccino
37
3.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
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