Slide 1

Slide 1 text

TXBHHFSDPEFHFOͰ QPKPੜ੒ ,HNZTIJO

Slide 2

Slide 2 text

ࣗݾ঺հ w ఝٶͰ͢ w LHNZTIJO w ෱Ԭग़਎ w "OESPJEΤϯδχΞ

Slide 3

Slide 3 text

5-%3 w 4FSWFSଆ͕4XBHHFS࢖ͬͯͨΒɺϦΫΤετ΍Ϩ εϙϯεͷQPKPΛࣗಈੜ੒Ͱ͖ΔΑ w J04΋"OEPSJE΋ؔ܎ͳ͘Ͱ͖ΔΑ w ్தαϯϓϧίʔυͰ3FUPSJGUͱ͔ग़ͯ͘Δ͚Ͳɺ 3FUPSpU࢖ͬͯͳͯ͘΋େৎ෉ͩΑ

Slide 4

Slide 4 text

·ͣ͸͜ͷίʔυΛ

Slide 5

Slide 5 text

public interface ApiClient { @GET("/api/users") Single> getAll(); @GET("/api/users/{id}") Single get(@Path("id") int id); @POST("/api/users") Single create(@Body CreateUserRequest request); @POST("/tokens/new") Single publishToken(@Body PublishTokenRequest request); @POST("/tokens/verify") Single tokenVerify(@Body VerifyTokenRequest request); }

Slide 6

Slide 6 text

public interface ApiClient { @GET("/api/users") Single> getAll(); @GET("/api/users/{id}") Single get(@Path("id") int id); @POST("/api/users") Single create(@Body CreateUserRequest request); @POST("/tokens/new") Single publishToken(@Body PublishTokenRequest request); @POST("/tokens/verify") Single tokenVerify(@Body VerifyTokenRequest request); } 3FUSPpUΛ࢖༻ͯ͠ ֤"1*ͱͷૄ௨Λ ఆ͍ٛͯ͠ΔͳΜͰ΋ͳ͍ίʔυ

Slide 7

Slide 7 text

public interface ApiClient { @GET("/api/users") Single> getAll(); @GET("/api/users/{id}") Single get(@Path("id") int id); @POST("/api/users") Single create(@Body CreateUserRequest request); @POST("/tokens/new") Single publishToken(@Body PublishTokenRequest request); @POST("/tokens/verify") Single tokenVerify(@Body VerifyTokenRequest request); } ͜Ε͸ಛʹ໰୊ͳ͍ ͨͩ"1*ͷ਺͕͍͢͝૿͑ͨ࣌ɺɺ

Slide 8

Slide 8 text

public interface ApiClient { @GET("/api/users") Single> getAll(); @GET("/api/users/{id}") Single get(@Path("id") int id); @POST("/api/users") Single create(@Body CreateUserRequest request); @POST("/tokens/new") Single publishToken(@Body PublishTokenRequest request); @POST("/tokens/verify") Single tokenVerify(@Body VerifyTokenRequest request); : Լʹͨ͘͞Μଓ͘ } ͜ΕΒ࡞Δͷ େม͡Όͳ͍Ͱ͔͢ʁ

Slide 9

Slide 9 text

{ "item": { "id": 1234, "summary": { "name": "hoge", "description": "hoge" }, "items": { "items": [ { "id": 1234, "hogeId": 1234, "hogeUrl": “https://hoge.com“ } ], "pager": { "next": 3, "current": 2, "previous": 1 } } } } ྫ͑͹͜ΜͳKTPOΛ QPKPʹ͢Δͱͯ͠

Slide 10

Slide 10 text

w UZQPඞࢸ w ৔߹ʹΑΔ͚Ͳ ωετ͞ΕͯΔ෼͚ͩΫϥε΋૿ ͑Δ w ͜͏͍͏ͷOݸ͋Δͱਏ͞΋Oݸ

Slide 11

Slide 11 text

w UZQPඞࢸ w ৔߹ʹΑΔ͚Ͳ ωετ͞ΕͯΔ෼͚ͩΫϥε΋૿ ͑Δ w ͜͏͍͏ͷOݸ͋Δͱਏ͞΋Oݸ ໘౗ʂʂʂ

Slide 12

Slide 12 text

w UZQPඞࢸ w ৔߹ʹΑΔ͚Ͳ ωετ͞ΕͯΔ෼͚ͩΫϥε΋૿ ͑Δ w ͜͏͍͏ͷOݸ͋Δͱਏ͞΋Oݸ TXBHHFSDPEFHFOΛ ࢖͑͹ࣗಈੜ੒Ͱ͖·͢ લఏTFSWFSଆ͕ TXBHHFS࢖ͬͯ͘ΕͯΔ

Slide 13

Slide 13 text

TXBHHFSDPEFHFOΛ ࢖ͬͯΈΔ

Slide 14

Slide 14 text

΍Δ͜ͱ w TXBHHFSDPEFHFOKBSͷμ΢ϯϩʔυ w QPKPੜ੒ͷςϯϓϨʔτ࡞੒ w TXBHHFSKTPOͷμ΢ϯϩʔυ w ੜ੒ίϚϯυଧͭ

Slide 15

Slide 15 text

TXBHHFSDPEFHFOKBSͷμ΢ϯϩʔ υ wget http://central.maven.org/maven2/io/swagger/ swagger-codegen-cli/2.2.2/swagger-codegen- cli-2.2.2.jar -O swagger-codegen-cli.jar brew install swagger-codegen ԼهͰμ΢ϯϩʔυ .BDͳΒ͜ΕͰ΋0,

Slide 16

Slide 16 text

QPKPੜ੒ͷςϯϓϨʔτ࡞੒ IUUQTHJUIVCDPNTXBHHFSBQJTXBHHFSDPEFHFOUSFFNBTUFSNPEVMFT TXBHHFSDPEFHFOTSDNBJOSFTPVSDFT ΋Ζ΋Ζͷඪ४ςϯϓϨʔτ͸Լهʹ͋Δ ࠓճ͸BOESPJEΛϕʔεʹ͍͡Δɻ QPKP͚͕ͩඞཁͳͷͰNPEFMNVTUBDIFͷΈΛ͍͡Δɻ ͦΕҎ֎͸࡟আͯ͠΋0, ͪͳΈʹԼه͕ࣗ෼͕࡞ͬͨ΍ͭͰ͢ɻ IUUQTHJUIVCDPNLHNZTIJOBOESPJEQPKPTXBHHFSUFNQMBUF

Slide 17

Slide 17 text

TXBHHFSKTPOͷμ΢ϯϩʔυ wget https://hoge.jp/api-docs/index -O swagger.json 4FSWFSଆ͕༻ҙ͍ͯ͠ΔTXBHHFS͔Β KTPOΛμ΢ϯϩʔυ͢Δ ͜͜ʹ͸"1*ͷ৘ใؙ͕ͬͱೖͬͯ·͢

Slide 18

Slide 18 text

ੜ੒ίϚϯυଧͭ java -jar swagger-codegen-cli.jar generate -i ./ swagger.json -l android-poco -t android --model- package hoge.anroid.api --model-name-suffix Json -o dist w AJAΦϓγϣϯͰTXBHHFSKTPOࢦఆ w AUAΦϓγϣϯͰςϯϓϨʔτࢦఆ w APAΦϓγϣϯͰग़ྗઌࢦఆ w ANPEFMOBNFTV⒏YAͰQPKPͷTV⒏YΛࢦఆ w ANPEFMQBDLBHFAͰQBDLBHF໊ࢦఆ ςϯϓϨʔτʹNPEFMNVTUBDIF͔͠ͳͯ͘΋ଞͷ΋ͷ΋ੜ੒͞Ε ·͢ɻෆཁͳ΋ͷ͸࡟আͯ͠͠·͍·͠ΐ͏ɻ

Slide 19

Slide 19 text

͕ͭͬͱੜ੒͞Ε·͢

Slide 20

Slide 20 text

·ͱΊ

Slide 21

Slide 21 text

·ͱΊ w TFSWFSଆ͕TXBHHFS࢖ͬͯΔͳΒɺΨϯΨϯࣗಈ ੜ੒Λ