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
120
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
470
もし今から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.3k
生産性が上がり続けるチームを作るための第一歩
kazukihayase
4
3.8k
GraphQLにおけるクライアントキャッシュ戦略
kazukihayase
0
3.3k
Other Decks in Technology
See All in Technology
Rustから学ぶ 非同期処理の仕組み
skanehira
1
150
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
190
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
2
260
CDK CLIで使ってたあの機能、CDK Toolkit Libraryではどうやるの?
smt7174
4
190
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
730
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
230
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
4
10k
20250912_RPALT_データを集める→とっ散らかる問題_Obsidian紹介
ratsbane666
0
100
AWSを利用する上で知っておきたい名前解決のはなし(10分版)
nagisa53
10
3.2k
Android Audio: Beyond Winning On It
atsushieno
0
2.4k
AI時代を生き抜くエンジニアキャリアの築き方 (AI-Native 時代、エンジニアという道は 「最大の挑戦の場」となる) / Building an Engineering Career to Thrive in the Age of AI (In the AI-Native Era, the Path of Engineering Becomes the Ultimate Arena of Challenge)
jeongjaesoon
0
230
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.8k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
A Tale of Four Properties
chriscoyier
160
23k
RailsConf 2023
tenderlove
30
1.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Designing Experiences People Love
moore
142
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
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