Slide 1

Slide 1 text

3VCZ,BJHJ5BLFPVU 0%")JSPIJUP NTHSBQI.JDSPTPGU(SBQI"1*$MJFOUXJUI3VCZ

Slide 2

Slide 2 text

*.1035"/5 *EP/05UBML BCPVU(SBQI%BUBCBTFT FH/FPK

Slide 3

Slide 3 text

w *OUSPEVDUJPO w "CPVU.JDSPTPGU(SBQI w "CPVU.JDSPTPGU(SBQI"1*DMJFOU w )PXUPDSFBUF"1*DMJFOU w %FFQEJWFJOUPNJDSPTPGU@HSBQI w "CPVUNTHSBQI w $PODMVTJPOT "HFOEB

Slide 4

Slide 4 text

*OUSPEVDUJPO

Slide 5

Slide 5 text

w OBNF0%")JSPIJUP w UXJUUFS!KJNMPDL w HJUIVC!KJOSPR w DPNNVOJUZ w 'VLVPLBSCDPPSHBOJ[FS w 3VCZ,BJHJ-PDBM0SHBOJ[FS TFMGJOTQFDU

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

.BU[JTNZ#FTU'SJFOE

Slide 8

Slide 8 text

"CPVU.JDSPTPGU(SBQI

Slide 9

Slide 9 text

.JDSPTPGU(SBQI IUUQTEFWFMPQFSNJDSPTPGUDPNFOVTHSBQI

Slide 10

Slide 10 text

.JDSPTPGU(SBQI IUUQTEPDTNJDSPTPGUDPNFOVTHSBQIPWFSWJFX

Slide 11

Slide 11 text

.JDSPTPGU(SBQI IUUQTEPDTNJDSPTPGUDPNFOVTHSBQIPWFSWJFX

Slide 12

Slide 12 text

4VQQPSUFEQMBUGPSNT IUUQTEPDTNJDSPTPGUDPNFOVTHSBQITELTTELTPWFSWJFXTVQQPSUFEQMBUGPSNT

Slide 13

Slide 13 text

4VQQPSUFEQMBUGPSNT IUUQTEPDTNJDSPTPGUDPNFOVTHSBQITELTTELTPWFSWJFXTVQQPSUFEQMBUGPSNT

Slide 14

Slide 14 text

"CPVU.JDSPTPGU(SBQI"1*DMJFOU

Slide 15

Slide 15 text

NJDSPTPGU@HSBQI IUUQTSVCZHFNTPSHHFNTNJDSPTPGU@HSBQI

Slide 16

Slide 16 text

NJDSPTPGU@HSBQI IUUQTSVCZHFNTPSHHFNTNJDSPTPGU@HSBQI Do we need to reinvent the wheel?

Slide 17

Slide 17 text

NJDSPTPGU@HSBQI IUUQTSVCZHFNTPSHHFNTNJDSPTPGU@HSBQI The answer is 'Yes!!!'.

Slide 18

Slide 18 text

NJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZ

Slide 19

Slide 19 text

NJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZ

Slide 20

Slide 20 text

NJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZ

Slide 21

Slide 21 text

.JDSPTPGU(SBQI3VCZDMJFOUMJCSBSZJTOPUBDUJWFMZTVQQPSUFE IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZJTTVFT

Slide 22

Slide 22 text

3VCZJT%FBE IUUQTZPVUVCF[CE98:69

Slide 23

Slide 23 text

3VCZJT%FBE IUUQTZPVUVCF[CE98:69 • Ruby is NOT dead. • I wish to aim for constructive development.

Slide 24

Slide 24 text

.PUJWBUJPO

Slide 25

Slide 25 text

w *XJTIUPFMJNJOBUFUIFQPTTJCJMJUZUIBU.JDSPTPGUXJMMTUPQ TVQQPSUJOH3VCZ w *XBOUUPDSFBUFBMJCSBSZUIBU*DBONBJOUBJO w 3VCZ,BJHJ%SJWFO%FWFMPQNFOU .PUJWBUJPO

Slide 26

Slide 26 text

)PXUPDSFBUF"1*DMJFOU

Slide 27

Slide 27 text

w 4BNQMFDPEFTPGNJDSPTPGU@HSBQIJTCSPLFO w .JDSPTPGU(SBQI"1*TQFDJpDBUJPOTBSFUPPEJ⒏DVMUUPVOEFSTUBOE w 4PVSDFDPEFTPGNJDSPTPGU@HSBQIJTIBSEUPSFBE 1SPCMFNTGPSEFWFMPQJOH"1*DMJFOU

Slide 28

Slide 28 text

w 4BNQMFDPEFTPGNJDSPTPGU@HSBQIJTCSPLFO w .JDSPTPGU(SBQI"1*TQFDJpDBUJPOTBSFUPPEJ⒏DVMUUPVOEFSTUBOE w 4PVSDFDPEFTPGNJDSPTPGU@HSBQIJTIBSEUPSFBE 1SPCMFNTGPSEFWFMPQJOH"1*DMJFOU

Slide 29

Slide 29 text

4UBOEPOUIFTIPVMEFSTPG(JBOUT IUUQTSVCZLBJHJPSHQSFTFOUBUJPOTPUBZIUNMBQS )PXUPVTF0QFO"1*GPS"1*EFWFMPQFS IUUQTSVCZLBJHJPSHQSFTFOUBUJPOTTVFIUNMBQS #FTUQSBDUJDFTJOXFC"1*DMJFOUEFWFMPQNFOU

Slide 30

Slide 30 text

OpenAPI Generator • Generate API client and Server stub from OpenAPI definition • Many language and framework supported (OpenAPI Generator is a folk of Swagger Codegen) 6TJOH0QFO"1*(FOFSBUPS IUUQTTQFBLFSEFDLDPNPUBZIPXUPVTFPQFOBQJGPSBQJEFWFMPQFSSVCZLBJHJ TMJEF

Slide 31

Slide 31 text

NJDSPTPGUHSBQIPQFOBQJ IUUQTHJUIVCDPNNJDSPTPGUHSBQINJDSPTPGUHSBQIPQFOBQJ

Slide 32

Slide 32 text

w 0QFO%BUB 0%BUB 1SPUPDPM w $VSSFOUWFSTJPOJT w %BUBGPSNBUT w 0%BUBSFRVFTUTBOESFTQPOTFTJTVTJOHB+40/GPSNBU w 4DIFNBEFpOJUJPOBOEEBUBNPEFMJTVTJOH9.-PS+40/GPSNBU w .JDSPTPGU(SBQIQSPWJEFT9.-POMZ w 4UBOEBSEJ[FECZ0"4*4JO w "QQSPWFEBTBO*40*&$JOUFSOBUJPOBMTUBOEBSEJO .JDSPTPGU(SBQI"1*4QFDJpDBUJPOT

Slide 33

Slide 33 text

+40/GPSNBUpMFDPOWFSUFE GSPNUIF0%BUB1SPUPDPM UPUIF0QFO"1*4QFDJpDBUJPO 8IBUJTNJDSPTPGUHSBQIPQFOBQJ

Slide 34

Slide 34 text

+40/GPSNBUpMFDPOWFSUFE GSPNUIF0%BUB1SPUPDPM UPUIF0QFO"1*4QFDJpDBUJPO 8IBUJTNJDSPTPGUHSBQIPQFOBQJ

Slide 35

Slide 35 text

+40/GPSNBUpMFDPOWFSUFE GSPNUIF0%BUB1SPUPDPM UPUIF0QFO"1*4QFDJpDBUJPO 8IBUJTNJDSPTPGUHSBQIPQFOBQJ

Slide 36

Slide 36 text

+40/GPSNBUpMFDPOWFSUFE GSPNUIF0%BUB1SPUPDPM UPUIF0QFO"1*4QFDJpDBUJPO 8IBUJTNJDSPTPGUHSBQIPQFOBQJ

Slide 37

Slide 37 text

Ɣ GEWIW ;L]-QEOI%4-GPMIRXW 4YFPMG%4-W 4VMZEXI%4-W 'PMIRXHIZIPSTIVÓÓ%4-HIZIPSTIV 'PMIRXHIZIPSTIV‹Ó%4-HIZIPSTIV 6TJOHTVFNFUIPE 5FOUBUJWF/BNF IUUQTTQFBLFSEFDLDPNTVFCFTUQSBDUJDFTJOXFCBQJDMJFOUEFWFMPQNFOUOVNCFSSVCZLBJHJ TMJEF

Slide 38

Slide 38 text

Ɣ GEWIW ;L]-QEOI%4-GPMIRXW 4YFPMG%4-W 4VMZEXI%4-W 'PMIRXHIZIPSTIVÓÓ%4-HIZIPSTIV 'PMIRXHIZIPSTIV‹Ó%4-HIZIPSTIV 6TJOHTVFNFUIPE IUUQTTQFBLFSEFDLDPNTVFCFTUQSBDUJDFTJOXFCBQJDMJFOUEFWFMPQNFOUOVNCFSSVCZLBJHJ TMJEF

Slide 39

Slide 39 text

Ɣ 8LIVIEVIQSWXP]I\MWXMRK%4-GPMIRXWKIQWJSVQENSVWIVZMGIW ż 7IEVGLMRLXXTWVYF]KIQWSVK Ɣ 6IGSQQIRHIHXSYWIXLISJJMGMEP%4-GPMIRX 4YFPMG%4-WQEHIF]SXLIVW 6TJOHTVFNFUIPE IUUQTTQFBLFSEFDLDPNTVFCFTUQSBDUJDFTJOXFCBQJDMJFOUEFWFMPQNFOUOVNCFSSVCZLBJHJ TMJEF

Slide 40

Slide 40 text

Ɣ 1SXMZEXMSR ż 6IMRZIRXMSRSJ[LIIP ż 2I[WIVZMGIW ż 1MRSVWIVZMGIW 4YFPMG%4-WQEHIF]SXLIVW 6TJOHTVFNFUIPE IUUQTTQFBLFSEFDLDPNTVFCFTUQSBDUJDFTJOXFCBQJDMJFOUEFWFMPQNFOUOVNCFSSVCZLBJHJ TMJEF

Slide 41

Slide 41 text

Ɣ 1SXMZEXMSR ż 6IMRZIRXMSRSJ[LIIP ż 2I[WIVZMGIW ż 1MRSVWIVZMGIW 4YFPMG%4-WQEHIF]SXLIVW 6TJOHTVFNFUIPE IUUQTTQFBLFSEFDLDPNTVFCFTUQSBDUJDFTJOXFCBQJDMJFOUEFWFMPQNFOUOVNCFSSVCZLBJHJ TMJEF Me

Slide 42

Slide 42 text

3FJOWFOUJOHUIFXIFFM -JTUVTFST (&5 IUUQTHSBQINJDSPTPGUDPNWVTFST (FUVTFS (&5 IUUQTHSBQINJDSPTPGUDPNWVTFSTVTFS@JE $SFBUFVTFS 1045 IUUQTHSBQINJDSPTPGUDPNWVTFST 6QEBUFVTFS 1"5$) IUUQTHSBQINJDSPTPGUDPNWVTFSTVTFS@JE %FMFUFVTFS %&-&5& IUUQTHSBQINJDSPTPGUDPNWVTFSTVTFS@JE .JDSPTPGU(SBQI"1*&OEQPJOUT

Slide 43

Slide 43 text

3FJOWFOUJOHUIFXIFFM -JTUVTFST (&5 IUUQTHSBQINJDSPTPGUDPNWVTFST (FUVTFS (&5 IUUQTHSBQINJDSPTPGUDPNWVTFSTVTFS@JE $SFBUFVTFS 1045 IUUQTHSBQINJDSPTPGUDPNWVTFST 6QEBUFVTFS 1"5$) IUUQTHSBQINJDSPTPGUDPNWVTFSTVTFS@JE %FMFUFVTFS %&-&5& IUUQTHSBQINJDSPTPGUDPNWVTFSTVTFS@JE mg = MicrosoftGraph.new .JDSPTPGU(SBQI"1*4JNQMF*OUFSGBDF &YBNQMF

Slide 44

Slide 44 text

3FJOWFOUJOHUIFXIFFM -JTUVTFST (&5 NHVTFSMJTU (FUVTFS (&5 NHVTFSHFU VTFS@JE $SFBUFVTFS 1045 NHVTFSDSFBUF 6QEBUFVTFS 1"5$) NHVTFSVQEBUF VTFS@JE %FMFUFVTFS %&-&5& NHVTFSEFMFUF VTFS@JE mg = MicrosoftGraph.new .JDSPTPGU(SBQI"1*4JNQMF*OUFSGBDF &YBNQMF

Slide 45

Slide 45 text

3FJOWFOUJOHUIFXIFFM !"" lib/ #"" microsoft_graph.rb !"" microsoft_graph/ !"" user.rb .JDSPTPGU(SBQI"1*%JSFDUPSZIJFSBSDIZ &YBNQMF

Slide 46

Slide 46 text

3FJOWFOUJOHUIFXIFFM !"" lib/ #"" microsoft_graph.rb !"" microsoft_graph/ !"" user.rb .JDSPTPGU(SBQI"1*%JSFDUPSZIJFSBSDIZ &YBNQMF But…

Slide 47

Slide 47 text

3FJOWFOUJOHUIFXIFFM !"" lib #"" microsoft_graph.rb !"" microsoft_graph #"" ... #"" many many many classes!! #"" ... !"" user.rb .JDSPTPGU(SBQI"1*%JSFDUPSZIJFSBSDIZ &YBNQMF Too many

Slide 48

Slide 48 text

3FJOWFOUJOHUIFXIFFM !"" lib #"" microsoft_graph.rb !"" microsoft_graph #"" ... #"" many many many classes!! #"" ... !"" user.rb .JDSPTPGU(SBQI"1*%JSFDUPSZIJFSBSDIZ &YBNQMF Too many

Slide 49

Slide 49 text

(P$POGFSFODF"VUVNO IUUQTHPDPOKQ

Slide 50

Slide 50 text

1MGVSWSJX+VETL%4-0MFVEV]JSV+S 8EOIWLM=EIKEWLM +S'SRJIVIRGI%YXYQR .JDSPTPGU(SBQI"1*-JCSBSZGPS(P IUUQTXXXTMJEFTIBSFOFUZBFHBTIJNJDSPTPGUHSBQIBQJMJCSBSZGPSHP

Slide 51

Slide 51 text

✀㢮䛾䝁䞊䝗䝆䜵䝛䝺䞊䝍䛾Ꮡᅾ Ɣ 17+VETL7(/'SHI+IRIVEXSV LXXTWKMXLYFGSQQMGVSWSJXKVETL17+VETL7(/'SHI+IRIVEXSV ż 1MGVSWSJXබᘧ17+VETL7(/䝁䞊䝗䝆䜵䝛䝺䞊䝍 ż '䛚䜘䜃2)8*VEQI[SVO䛻䜘䜛ᐇ⿦㛤Ⓨ䛻;MRHS[W䛜ᚲせ ż '2)8'SVI .EZE.EZE7GVMTX3FNIGXMZI'4]XLSR Ɣ QWKVETLKS䝁䞊䝗䝆䜵䝛䝺䞊䝍 LXXTWKMXLYFGSQ]EIKEWLMQWKVETLKSKIR ż 4YVI+S䛻䜘䜛ᐇ⿦ .4(SBQI4%,$PEF(FOFSBUPS IUUQTXXXTMJEFTIBSFOFUZBFHBTIJNJDSPTPGUHSBQIBQJMJCSBSZGPSHP

Slide 52

Slide 52 text

.JDSPTPGU(SBQI4%,$PEF(FOFSBUPS IUUQTHJUIVCDPNNJDSPTPGUHSBQI.4(SBQI4%,$PEF(FOFSBUPS

Slide 53

Slide 53 text

.JDSPTPGU(SBQI4%,$PEF(FOFSBUPS IUUQTHJUIVCDPNNJDSPTPGUHSBQI.4(SBQI4%,$PEF(FOFSBUPS Ruby is unsupported…

Slide 54

Slide 54 text

.JDSPTPGU(SBQI4%,$PEF(FOFSBUPS IUUQTHJUIVCDPNNJDSPTPGUHSBQI.4(SBQI4%,$PEF(FOFSBUPS Ruby is unsupported…

Slide 55

Slide 55 text

NJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZ

Slide 56

Slide 56 text

NJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZ This gem’s code is not generated by the generator.

Slide 57

Slide 57 text

NJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZ How to develop this gem?

Slide 58

Slide 58 text

%FFQEJWFJOUPNJDSPTPGU@HSBQI

Slide 59

Slide 59 text

w 4BNQMFDPEFTPGNJDSPTPGU@HSBQIJTCSPLFO w .JDSPTPGU(SBQI"1*TQFDJpDBUJPOTBSFUPPEJ⒏DVMUUPVOEFSTUBOE w 4PVSDFDPEFTPGNJDSPTPGU@HSBQIJTIBSEUPSFBE 1SPCMFNTGPSEFWFMPQJOH"1*DMJFOU

Slide 60

Slide 60 text

w 4BNQMFDPEFTPGNJDSPTPGU@HSBQIJTCSPLFO w .JDSPTPGU(SBQI"1*TQFDJpDBUJPOTBSFUPPEJ⒏DVMUUPVOEFSTUBOE w 4PVSDFDPEFTPGNJDSPTPGU@HSBQIJTIBSEUPSFBE 1SPCMFNTGPSEFWFMPQJOH"1*DMJFOU

Slide 61

Slide 61 text

w IUUQTHJUIVCDPNNJDSPTPGUHSBQI NTHSBQITELSVCZQVMM w 5IBOLT IUUQBSUZFYBNQMFT w IUUQTHJUIVCDPNKOVOFNBLFS IUUQBSUZCMPCNBTUFSFYBNQMFT NJDSPTPGU@HSBQISC )PXUPFYFDVUFTBNQMFDPEF

Slide 62

Slide 62 text

w 4BNQMFDPEFTPGNJDSPTPGU@HSBQIJTCSPLFO w .JDSPTPGU(SBQI"1*TQFDJpDBUJPOTBSFUPPEJ⒏DVMUUPVOEFSTUBOE w 4PVSDFDPEFTPGNJDSPTPGU@HSBQIJTIBSEUPSFBE 1SPCMFNTGPSEFWFMPQJOH"1*DMJFOU

Slide 63

Slide 63 text

w 0QFO%BUB 0%BUB 1SPUPDPM w $VSSFOUWFSTJPOJT w %BUBGPSNBUT w 0%BUBSFRVFTUTBOESFTQPOTFTJTVTJOHB+40/GPSNBU w 4DIFNBEFpOJUJPOBOEEBUBNPEFMJTVTJOH9.-PS+40/GPSNBU w .JDSPTPGU(SBQIQSPWJEFT9.-POMZ w 4UBOEBSEJ[FECZ0"4*4JO w "QQSPWFEBTBO*40*&$JOUFSOBUJPOBMTUBOEBSEJO .JDSPTPGU(SBQI"1*4QFDJpDBUJPOT

Slide 64

Slide 64 text

0%BUB$PNNPO4DIFNB%FpOJUJPO-BOHVBHF9.- 3FQSFTFOUBUJPO7FSTJPO IUUQEPDTPBTJTPQFOPSHPEBUBPEBUBDTEMYNMWPEBUBDTEMYNMWIUNM

Slide 65

Slide 65 text

w &OUJUZ$POUBJOFS w &OUJUZ4FU w /BWJHBUJPO1SPQFSUZ#JOEJOH .JDSPTPGU(SBQI"1*4QFDJpDBUJPOT IUUQTHSBQINJDSPTPGUDPNWNFUBEBUB

Slide 66

Slide 66 text

w 4BNQMFDPEFTPGNJDSPTPGU@HSBQIJTCSPLFO w .JDSPTPGU(SBQI"1*TQFDJpDBUJPOTBSFUPPEJ⒏DVMUUPVOEFSTUBOE w 4PVSDFDPEFTPGNJDSPTPGU@HSBQIJTIBSEUPSFBE 1SPCMFNTGPSEFWFMPQJOH"1*DMJFOU

Slide 67

Slide 67 text

.FUBQSPHSBNNJOHPGNJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZCMPCNBTUFSMJCNJDSPTPGU@HSBQIDMBTT@CVJMEFSSC

Slide 68

Slide 68 text

3FJOWFOUJOHUIFXIFFM -JTUVTFST (&5 NHVTFSMJTU (FUVTFS (&5 NHVTFSHFU VTFS@JE $SFBUFVTFS 1045 NHVTFSDSFBUF 6QEBUFVTFS 1"5$) NHVTFSVQEBUF VTFS@JE %FMFUFVTFS %&-&5& NHVTFSEFMFUF VTFS@JE mg = MicrosoftGraph.new .JDSPTPGU(SBQI"1*4JNQMF*OUFSGBDF &YBNQMF

Slide 69

Slide 69 text

.FUBQSPHSBNNJOHPGNJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZCMPCNBTUFSMJCNJDSPTPGU@HSBQIDMBTT@CVJMEFSSC

Slide 70

Slide 70 text

.FUBQSPHSBNNJOHPGNJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZCMPCNBTUFSMJCNJDSPTPGU@HSBQIDMBTT@CVJMEFSSC

Slide 71

Slide 71 text

.FUBQSPHSBNNJOHPGNJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZCMPCNBTUFSMJCNJDSPTPGU@HSBQIDMBTT@CVJMEFSSC

Slide 72

Slide 72 text

.FUBQSPHSBNNJOHPGNJDSPTPGU@HSBQI IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZCMPCNBTUFSMJCNJDSPTPGU@HSBQIDMBTT@CVJMEFSSC GET https://graph.microsoft.com/v1.0/users/

Slide 73

Slide 73 text

"CPVUNTHSBQI

Slide 74

Slide 74 text

NTHSBQI IUUQTHJUIVCDPNKJOSPRNTHSBQI

Slide 75

Slide 75 text

NTHSBQIEJSFDUPSZIJFSBSDIZ NJDSPTPGU@HSBQI NTHSBQI

Slide 76

Slide 76 text

0%BUB4FSWJDF IUUQTHJUIVCDPNNJDSPTPGUHSBQINTHSBQITELSVCZCMPCNBTUFSMJCPEBUBTFSWJDFSC

Slide 77

Slide 77 text

'JYFEBCVH IUUQTHJUIVCDPNKJOSPRNTHSBQIQVMMpMFT

Slide 78

Slide 78 text

*BTLFEBRVFTUJPOPOTUBDLPWFSqPX IUUQTTUBDLPWFSqPXDPNRVFTUJPOTEPFTUIFNJDSPTPGUHSBQI BQJNFUBEBUBDPOpSNUIFPEBUBQSPUPDPMTQFDJpDBUJPO

Slide 79

Slide 79 text

*BTLFEBRVFTUJPOPOTUBDLPWFSqPX IUUQTTUBDLPWFSqPXDPNRVFTUJPOTEPFTUIFNJDSPTPGUHSBQI BQJNFUBEBUBDPOpSNUIFPEBUBQSPUPDPMTQFDJpDBUJPO

Slide 80

Slide 80 text

$PODMVTJPOT

Slide 81

Slide 81 text

w 6TJOH.JDSPTPGUTFSWJDFTUPFOTVSFUIBU3VCZTEFWFMPQNFOUOFWFS FOETJO.JDSPTPGU w NTHSBQIEPFTOPUIBWF34QFD $PODMVTJPOT

Slide 82

Slide 82 text

'JO