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
1.4k
Goでテンプレートからファイルを自動生成するCLIを作る
KazukiHayase
May 24, 2023
Tweet
Share
More Decks by KazukiHayase
See All by KazukiHayase
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
240
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
480
もし今からGraphQLを採用するなら
kazukihayase
13
5.4k
Goでテストをしやすくするためにやったこと
kazukihayase
1
840
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
7.3k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
1k
自分だけが頑張るのをやめて、フルスタックなチームを作る
kazukihayase
2
3.4k
生産性が上がり続けるチームを作るための第一歩
kazukihayase
4
3.8k
GraphQLにおけるクライアントキャッシュ戦略
kazukihayase
0
3.3k
Other Decks in Technology
See All in Technology
非エンジニアのあなたもできる&もうやってる!コンテキストエンジニアリング
findy_eventslides
3
910
AWSにおけるTrend Vision Oneの効果について
shimak
0
130
コンテキストエンジニアリングとは? 考え方と応用方法
findy_eventslides
4
900
M5製品で作るポン置きセルラー対応カメラ
sayacom
0
150
Pure Goで体験するWasmの未来
askua
1
180
about #74462 go/token#FileSet
tomtwinkle
1
320
Green Tea Garbage Collector の今
zchee
PRO
2
390
いまさら聞けない ABテスト入門
skmr2348
1
200
AIが書いたコードをAIが検証する!自律的なモバイルアプリ開発の実現
henteko
1
340
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
330
stupid jj tricks
indirect
0
7.9k
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
420
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Music & Morning Musume
bryan
46
6.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
Large-scale JavaScript Application Architecture
addyosmani
514
110k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
It's Worth the Effort
3n
187
28k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Navigating Team Friction
lara
189
15k
Docker and Python
trallard
46
3.6k
How to train your dragon (web standard)
notwaldorf
96
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