Slide 1

Slide 1 text

KotlinͰRetrofitΛ ࢖͍΍͘͢͢Δ ͪΐͬͱͨ͠޻෉ 2015/02/26 Shinya Kumagai(@droibit)

Slide 2

Slide 2 text

About Me • Shinya Kumagai (۽୩ ৻໵) 25ࡀ • Twitter, GitHub - @droibit • λΦιϑτ΢ΣΞגࣜձࣾ

Slide 3

Slide 3 text

Happy Birthday Kotlin!! (ɾ8ɾ)

Slide 4

Slide 4 text

֓ཁ • connpass API ༻ͷRetrofit ServiceΛର৅ - JavaͰఆٛ͞ΕͨService - KotlinͰServiceΛఆٛ KotlinͰ࢖͏ͱ͖ͷͪΐͬͱͨ͠޻෉ IUUQTRVBSFHJUIVCJPSFUSPpU

Slide 5

Slide 5 text

Connpass API • ݕࡧΫΤϦ - keyword … Ωʔϫʔυ - order … ݁Ռͷදࣔॱ (1:ߋ৽ॱ, 2…) - ymd … Πϕϯτ։࠵೔ (yyyymmdd) • Ϩεϙϯε͸JSON ?keyword=kotlin&order=1&ymd=20150226 IUUQDPOOQBTTDPNBCPVUBQJ

Slide 6

Slide 6 text

JavaͰఆٛ͞ΕͨService public interface ConnpassService { // ※ @Get, @Query ͸লུ Response searchEvent(@NonNull String keyword, @Nullable Integer order, @Nullable String ymd); } // શΫΤϦΛࢦఆ service.searchEvent(“kotlin”, 1, "20160226"); // ΩʔϫʔυͷΈͷ৔߹ service.searchEvent("kotlin", null, null);

Slide 7

Slide 7 text

// ֦ுؔ਺Λఆٛ + σϑΥϧτҾ਺ fun ConnpassService.searchEventExt( keyword: String, order: Order? = null, ymd: String? = null ) = searchEvent(keyword, order?.index, ymd) // ݕࡧ݁Ռͷදࣔॱͷྻڍମ enum class Order(val index: Int) { UPDATE(1), EVENT(2), NEW(3); override fun toString() = "$index" } // ΩʔϫʔυҎ֎͸ඞཁͳΫΤϦͷΈ service.searchEventExt("kotlin", order = Order.UPDATE) KotlinͰվળ

Slide 8

Slide 8 text

KotlinͰServiceΛఆٛ interface ConnpassService { // ※ @Get,@Query ͸লུ fun searchEvent(keyword: String, order: Order? = null, ymd: String? = null): Response } // ΩʔϫʔυҎ֎͸ඞཁͳΫΤϦͷΈ service.searchEvent(“kotlin”, order = Order.UPDATE)

Slide 9

Slide 9 text

// ༻్ʹ߹Θ֦ͤͨுؔ਺Λఆٛ fun ConnpassService.searchEvent( keyword: String, order: Order? = null, ymd: Date? = null ) = searchEvent(keyword, order, format(ymd)) // DateΛ yyyymmdd ϑΥʔϚοτͷStringʹม׵ fun format(date: Date?): String? = … // ։࠵೔ʹ͸DateΦϒδΣΫτΛࢦఆ service.searchEvent(“kotlin", ymd = dateFromTimesSquare) վળྫ

Slide 10

Slide 10 text

·ͱΊ • ൚༻తͳΠϯλʔϑΣʔεʹͳΔ͹͍͋͸ɺ σϑΥϧτҾ਺ɺ֦ுؔ਺Ͱγϯϓϧͳ Service΁ fabricͷΑ͏ʹ͸ͳΒͳ͍Α͏ʹؾΛ͚ͭ·͠ΐ͏

Slide 11

Slide 11 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠