SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
コードジェネレートとの付き合い方 @Go Conference 2018 Spring
Report
jumpei chikamori
Follow
-- at ガリバーインターナショナル
Apr. 14, 2018
•
0 likes
•
9,362 views
1
of
144
コードジェネレートとの付き合い方 @Go Conference 2018 Spring
Apr. 14, 2018
•
0 likes
•
9,362 views
Download Now
Download to read offline
Report
Technology
コードジェネレートとの付き合い方を実例を交えて紹介します。
jumpei chikamori
Follow
-- at ガリバーインターナショナル
Recommended
Git and git hub
Kamalnath L P
51 views
•
18 slides
Introduction to Git
Rick Umali
930 views
•
48 slides
Goのパッケージ管理 @Go合宿2018
jumpei chikamori
670 views
•
54 slides
Candies for everybody: Hacking from 9 to 6
Alberto López Martín
658 views
•
90 slides
goaを使った開発TIPS@六本木一丁目
jumpei chikamori
903 views
•
108 slides
Contributing to Impala
Cloudera, Inc.
5.1K views
•
21 slides
More Related Content
What's hot
BBL Reactive Programming
Riadh MNASRI
191 views
•
19 slides
Open Source Systems Administration
All Things Open
509 views
•
26 slides
SPAと覚悟
Teppei Sato
67.3K views
•
32 slides
Protractor under the hood
輝 子安
994 views
•
26 slides
Tips To Rock At Hackathons
3scale
4.9K views
•
25 slides
Andrew Mager, Spotify
Mashery
774 views
•
7 slides
What's hot
(11)
BBL Reactive Programming
Riadh MNASRI
•
191 views
Open Source Systems Administration
All Things Open
•
509 views
SPAと覚悟
Teppei Sato
•
67.3K views
Protractor under the hood
輝 子安
•
994 views
Tips To Rock At Hackathons
3scale
•
4.9K views
Andrew Mager, Spotify
Mashery
•
774 views
Using Reactjs in an existing Rails App
José Luis Torres
•
223 views
A Noob's Journey to the Core
Ryan Welcher
•
1.6K views
Content in an Agile World
agrosvenor
•
945 views
Git Magic: Versioning Files like a Boss
tmacwilliam
•
2.2K views
GitGot: The Swiss Army Chainsaw of Git Repo Management
John Anderson
•
1.2K views
Similar to コードジェネレートとの付き合い方 @Go Conference 2018 Spring
Go/gRPCはじめました
Yuto Matsukubo
661 views
•
22 slides
BSides São Paulo - Trabalho no exterior e segurança de aplicações
Ismael Goncalves
37 views
•
17 slides
[2010]我有一个梦想
Twinsen Liang
352 views
•
108 slides
GR8CONF Contributing Back To Grails
bobbywarner
1K views
•
33 slides
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
John Anderson
207 views
•
209 slides
GitBucket: The perfect Github clone by Scala
takezoe
26.7K views
•
37 slides
Similar to コードジェネレートとの付き合い方 @Go Conference 2018 Spring
(20)
Go/gRPCはじめました
Yuto Matsukubo
•
661 views
BSides São Paulo - Trabalho no exterior e segurança de aplicações
Ismael Goncalves
•
37 views
[2010]我有一个梦想
Twinsen Liang
•
352 views
GR8CONF Contributing Back To Grails
bobbywarner
•
1K views
Logs Are Magic: Why Git Workflows and Commit Structure Should Matter To You
John Anderson
•
207 views
GitBucket: The perfect Github clone by Scala
takezoe
•
26.7K views
既存の資産をXamarinで / Utilize existing assets as Xamarin library
Yusuke Yamada
•
561 views
海纳百川,有容乃大
hujinpu
•
689 views
Continuous Integration for Pharo Smalltalk Part 2 (Smalltalk and Travis CI)
Sho Yoshida
•
791 views
Git isthenewsexy
Ailsa126
•
435 views
In graph we trust: Microservices, GraphQL and security challenges
Mohammed A. Imran
•
839 views
DevSecCon Singapore 2018 - in graph we trust By Imran Mohammed
DevSecCon
•
464 views
Node.js 기반 정적 페이지 블로그 엔진, 하루프레스
Rhio Kim
•
6.7K views
Index 2018 node.js what's next
Michael Dawson
•
400 views
George Bina: DITA for Developers and GitHub for Technical Writers
Jack Molisani
•
729 views
maksym vlasov - culture of git as roots of your ci
Dariia Seimova
•
99 views
Spark Streamingによるリアルタイムユーザ属性推定
Yoshiyasu SAEKI
•
1.9K views
5 loaded guns Go hapily aims at your feet
Márk Sági-Kazár
•
33 views
Tools Bringing Happiness
Konstantin Cherkasov
•
980 views
Impression of Rails 3
Kosuke Matsuda
•
532 views
Recently uploaded
Inclusivity and AI: opportunity or threat
Alan Dix
30 views
•
37 slides
Knowledge graph use cases in natural language generation
Elena Simperl
78 views
•
47 slides
inQuba Webinar Series 2023 - Sanlam Hyper Personalization v2.0 FINAL.pptx
LizaNolte
31 views
•
29 slides
MapInfo Pro v2023: The Next Dimension in Spatial Analytics
Precisely
33 views
•
25 slides
TEKART CON 2023
AdedoyinSamuel1
17 views
•
35 slides
class and object in c++.pptx
Adarsh College, Hingoli
177 views
•
8 slides
Recently uploaded
(20)
Inclusivity and AI: opportunity or threat
Alan Dix
•
30 views
Knowledge graph use cases in natural language generation
Elena Simperl
•
78 views
inQuba Webinar Series 2023 - Sanlam Hyper Personalization v2.0 FINAL.pptx
LizaNolte
•
31 views
MapInfo Pro v2023: The Next Dimension in Spatial Analytics
Precisely
•
33 views
TEKART CON 2023
AdedoyinSamuel1
•
17 views
class and object in c++.pptx
Adarsh College, Hingoli
•
177 views
Fipto Seed Pitch Deck
sjcobrien
•
33 views
Regulating Generative AI - LLMOps pipelines with Transparency
Debmalya Biswas
•
40 views
From Ambition to Go Live SWIB.pdf
RichardWallis3
•
60 views
Top tips for boosting your digital skills, with BT Group and Age UK
AbilityNet
•
270 views
Data Integrity Trends
Precisely
•
18 views
ISO Survey 2022: ISO 27001 certificates (ISMS)
Andrey Prozorov, CISM, CIPP/E, CDPSE. LA 27001
•
49 views
Conference paper: Passive House for Medium Density Housing in NZ (2018)
Elrond Burrell
•
164 views
Improve Employee Experiences on Cisco RoomOS Devices, Webex, and Microsoft Te...
ThousandEyes
•
78 views
How to Manage Your Offshore Software Development Team Efficiently
Capital Numbers
•
18 views
Accelerating Data Science through Feature Platform, Transformers, and GenAI
FeatureByte
•
117 views
Charity Navigator Masterclass - Accountability and Finance Beacon
OnBoard
•
30 views
Keynote: Two years at the British Library... and counting / Alan Danskin (Bri...
CILIP MDG
•
17 views
AMAZON-RESUME.pdf
RegineRaneses
•
35 views
ContainerDays Hamburg 2023 — Cilium Workshop.pdf
Raphaël PINSON
•
58 views
コードジェネレートとの付き合い方 @Go Conference 2018 Spring
1.
Go Conference 2018
Spring @pei0804
4.
• twitter/github @pei0804 •
Hatena tikasan • VOYAGE GROUP 2018 • OSS swaggo: GoDoc Swagger
6.
• • •
9.
10.
11.
database/sql Scan
12.
github.com/variadico/scaneo
13.
$ scaneo hoge.go scans.go
15.
Scan
17.
github.com/variadico/scaneo
19.
• func ScanCategory func
ScanCategories • func ScanCategory func ScanCategorys
20.
Category Categorys
21.
22.
tmpl.go PR
27.
OSS
28.
Fork
29.
Fork &&
30.
OSS
33.
34.
github.com/swaggo/swag
35.
github.com/swaggo/swag Go Swagger Swagger API
※Go
37.
Getting started
38.
$ go get
-u github.com/swaggo/swag/cmd/swag
40.
API
42.
$ swag init
44.
docs/swagger/swagger.json
45.
Swagger UI swaggo
Middleware
47.
http://localhost:8080/swagger/index.html
51.
53.
• • • API • • Swagger
spec
54.
• • • API • • Swagger
spec
55.
※ • @title • @version •
@basepath URI • @host •
58.
parser.go
59.
parser.go
60.
AST go/parser • :
abstract syntax tree AST wikipedia
61.
• Go AST
Hello, World #golang https://qiita.com/tenntenn/items/ 0cbc6f1f00dc579fcd8c • Go Go https://motemen.github.io/go-for-go-book/
62.
ParseFile • Go • fset
*token.FileSet, filename string, src interface{}, mode Mode • *ast.File, error
63.
ast.File
64.
ast.File
66.
parser.go
67.
• • • API • • Swagger
spec
68.
API ( ) ※ •
@param • @success • @failure • @router • @accept, @produce MimeType
71.
parser.go
72.
parser.go
73.
parser.go
74.
parser.go
75.
parser.go
76.
parser.go
77.
parser.go
78.
OK
81.
// @Success 200
{array} model.Account "User" @Success {param }
83.
α
84.
85.
// @Param default
query string false "string default" default(A) Swagger
86.
// @Param default
query string false "string default" Enums(A, B ,C) default(A)
87.
🤔
88.
// @Param default
query string false "string default" Enums(A, B ,C) default(A) // @Param default query string false "string default" Enums(A, B ,C) default(A)
89.
😇
91.
Model
92.
@Param account body
model.Account ~~ model Account Model
93.
AST TypeDefinitions map[string]map[string]*ast.TypeSpec map[ ][
] AST model TypeDefinitions["model"]["Account"] model Account AST
96.
• • •
97.
• • •
99.
parser.go
100.
parser.go
101.
parser.go
102.
parser.go
103.
parser.go
104.
• • •
106.
parser.go
107.
parser.go
108.
112.
😇
118.
User Family User Family User Family User Family
User panic
119.
• • •
120.
🤔
121.
• • •
123.
parser.go
124.
parser.go
125.
User Family User Family User Family User Family
User panic
126.
User Family User Family User Family User Family
User panic
127.
😂
128.
• • • API • • Swagger
spec
129.
github.com/go-openapi/spec
130.
github.com/go-openapi/spec Swagger2.0 spec go-swagger/go-swagger Swagger
131.
3.0 github.com/go-openapi/spec3
132.
Swagger
134.
135.
• •
136.
•
139.
141.
OSS swaggo welcome
142.
• github.com/mercari/go-httpdoc • github.com/goadesign/goa DSL
Swagger • github.com/cheekybits/genny Go
143.
• Go https://www.slideshare.net/lestrrat/go-86436442 •
go generate go/ast https://speakerdeck.com/masashisalvador57f/ast-falsezatukuritositahua • go generate http://agtn.hatenablog.com/entry/2017/08/06/015813