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
Goでテンプレートからファイルを自動生成するCLIを作る
Search
KazukiHayase
May 24, 2023
Technology
0
1k
Goでテンプレートからファイルを自動生成するCLIを作る
KazukiHayase
May 24, 2023
Tweet
Share
More Decks by KazukiHayase
See All by KazukiHayase
Goでテストをしやすくするためにやったこと
kazukihayase
1
680
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
6.1k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
810
自分だけが頑張るのをやめて、フルスタックなチームを作る
kazukihayase
2
2.3k
生産性が上がり続けるチームを作るための第一歩
kazukihayase
4
3.6k
GraphQLにおけるクライアントキャッシュ戦略
kazukihayase
0
2.6k
MUIをベースにしたデザインシステムの構築
kazukihayase
0
440
Hasuraを活用するためのTips集
kazukihayase
0
33k
ReactとGraphQLで実現する宣言的データフェッチ
kazukihayase
2
3.1k
Other Decks in Technology
See All in Technology
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
AWS Media Services 最新サービスアップデート 2024
eijikominami
0
190
The Role of Developer Relations in AI Product Success.
giftojabu1
0
120
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
240
AIチャットボット開発への生成AI活用
ryomrt
0
170
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
The Rise of LLMOps
asei
5
1.2k
SSMRunbook作成の勘所_20241120
koichiotomo
2
120
TanStack Routerに移行するのかい しないのかい、どっちなんだい! / Are you going to migrate to TanStack Router or not? Which one is it?
kaminashi
0
580
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
Lambdaと地方とコミュニティ
miu_crescent
2
370
Terraform CI/CD パイプラインにおける AWS CodeCommit の代替手段
hiyanger
1
240
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Adopting Sorbet at Scale
ufuk
73
9.1k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
What's in a price? How to price your products and services
michaelherold
243
12k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Raft: Consensus for Rubyists
vanstee
136
6.6k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Transcript
GoͰςϯϓϨʔτ͔ΒϑΝΠϧΛࣗಈੜ͢ΔCLIΛ࡞Δ ʲZOZO x ϕʔεϚΩφ x όΠηϧʳGoษڧձ #1ʲϋΠϒϦου։࠵ʳ 2023.05.24
ࣗݾհ ໊લɿૣً ܦྺɿBuySell Technologiesʹ2021ʹ৽ଔೖࣾ ॴଐɿ։ൃ2෦ ग़ཧSaaSνʔϜ ৬ɿϑϧελοΫΤϯδχΞɺϓϩδΣΫτϦʔμʔ झຯɿ։ൃɺϚϯΨɺΞχϝɺϕʔεɺόεέ Twitterɿ@KazukiHayase
ΞδΣϯμ CLIΛ࡞ͨ͠എܠ 01 ࡞ͨ͠CLIͷհ 02 ·ͱΊ 03
01 CLIΛ࡞ͨ͠എܠ
CLIΛ࡞ͨ͠എܠ • ݩʑੜ࢈ੑΛ্ͤ͞ΔCLIΛ࡞ΔจԽ͕νʔϜʹ͋ͬͨ • ϓϩμΫτͷಛੑ্ɺಉ͡Α͏ͳ࣮͕ෳՕॴଘࡏ͢Δ ◦ ※େಉ͕ͩ͡ɺڞ௨Խ͍͠
CLIΛ࡞ͨ͠എܠ ग़ཧSaaSෳͷECαΠτಉ࣌ग़Λߦ͏ ECαΠτ1 ECαΠτ2 ECαΠτ3
CLIΛ࡞ͨ͠എܠ ECαΠτ͝ͱʹAPI͕ҟͳΔ ECαΠτ1 ECαΠτ2 ECαΠτ3 json xml
CLIΛ࡞ͨ͠എܠ • ECαΠτ͝ͱʹAPI͕ҟͳΔͷͰڞ௨ԽͰ͖ͳ͍ • มߋ͞ΕΔഎܠ͕ҟͳΔͷͰɺաͳநԽආ͚͍ͨ • ͨͩ͠ɺॲཧͷେͲͷECαΠτେମಉ͡ ςϯϓϨʔτ͔ΒϑΝΠϧΛੜͯ͠ ࣮ΛޮԽ͍ͨ͠ʂʂ
02 ࡞ͨ͠CLIͷհ
࣮ߦίϚϯυ ରܗࣜͰೖྗ
ςϯϓϨʔτϑΝΠϧͱੜϑΝΠϧ ೖྗͨ͠ύοέʔδ໊ͱ໊ؔͰ ஔ͞ΕΔ ςϯϓϨʔτϑΝΠϧ ੜϑΝΠϧ
࣮
༻ͨ͠ϥΠϒϥϦ • cobra ◦ CLIΛ؆୯ʹ࡞Ͱ͖ΔϥΠϒϥϦ ◦ KubernetesGitHub CLIͰ༻͞Ε͍ͯΔ • text/template
◦ ςϯϓϨʔτΛݩʹจࣈྻΛੜ͢Δඪ४ϥΠϒϥϦ ◦ ؔมɺforifͳͲͷ੍ޚߏจςϯϓϨʔτʹຒΊࠐΊΔ
େͷ࡞ cobra-cliΛར༻ͯ͠ ϘΠϥʔςϯϓϨʔτΛ࡞ cmdύοέʔδʹCLIͷॲཧΛ ࣮͍ͯ͘͠
ίϚϯυͷՃ cobra.CommandߏମΛఆٛ rootCmdʹՃ͢Δ͜ͱͰ CLI͔Β࣮ߦͰ͖ΔΑ͏ʹͳΔ
ඪ४ೖྗͷऔಘ fmt.ScanlnͰඪ४ೖྗΛऔಘ ඪ४ೖྗΛݩʹςϯϓϨʔτʹ ͢σʔλΛmapͰఆٛ
ೖग़ྗϑΝΠϧͷఆٛ ςϯϓϨʔτϑΝΠϧͱग़ྗઌͷ ϑΝΠϧΛmapͰఆٛ ֤ೖग़ྗʹରͯ͠ϧʔϓͰॲཧ
ϑΝΠϧͷಡΈࠐΈͱੜ ςϯϓϨʔτΛಡΈࠐΈɺ ग़ྗઌͷϑΝΠϧΛੜ
ςϯϓϨʔτͷஔ ಡΈࠐΜͩςϯϓϨʔτʹରͯ͠ ඪ४ೖྗͰड͚औͬͨσʔλΛ ༻ͯ͠ஔॲཧΛ࣮ߦ
ςϯϓϨʔτϑΝΠϧͷྫ
03 ·ͱΊ
·ͱΊ • cobraͱtext/templateͰ؆୯ʹࣗಈੜCLIΛ࡞Εͨ ◦ ੍ޚߏจར༻Ͱ͖ΔͷͰɺςϯϓϨʔτॊೈʹఆٛՄೳ • CLIΛ࡞ͨ͜͠ͱͰ࣮ΛޮԽ͢Δ͜ͱ͕Ͱ͖ͨ • σΟϨΫτϦߏͳͲͷϧʔϧͷڧ੍ʹ׆༻Ͱ͖Δ ◦
ϧʔϧʹैͬͨςϯϓϨʔτΛఆٛ͢Δ͜ͱͰɺ ࣗવͱϧʔϧʹै࣮ͬͨʹͳΔΑ͏ʹΈԽͰ͖Δ
THANK YOU