Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlinでマッチョ💪💪💪💪💪する話

operandoOS
December 09, 2016

 Kotlinでマッチョ💪💪💪💪💪する話

Kotlinでマッチョ💪💪💪💪💪する話

Retty Tech Cafe #8
https://retty.connpass.com/event/45628/

operandoOS

December 09, 2016
Tweet

More Decks by operandoOS

Other Decks in Technology

Transcript

  1. KotlinͰ

    Ϛονϣ
    ͢Δ࿩
    Retty Tech Cafe #8

    View Slide

  2. About Me
    Shinobu Okano
    @operandoOS
    Mercari, Inc.
    Souzoh, Inc.

    View Slide

  3. View Slide

  4. ຖ೔30෼ Kotlin΍ͬͯ·͢
    • ࡶʹࡶʹϝϞΛ࢒ͯ͠·͢
    • http://hack-it-iron.hatenablog.com/archive/
    category/Kotlin

    View Slide

  5. Tuple
    ෳ਺ݸͷ஋Λ૊Έʹͯ͠·ͱΊͨ΋ͷ

    View Slide

  6. Α͏͸
    Ұ࣌తͳείʔϓͰෳ਺ݸͷσʔλͷ૊Έ߹Θ͕ͤ

    ཉ͍͚͠ͲɺClassΛఆٛ͢Δ΄ͲͰ΋ͳ͍ͳʔ

    ͬͯ࣌ʹ༗ޮ

    View Slide

  7. Guild
    https://github.com/operando/Guild/
    Simple java tuples.

    View Slide

  8. ͳͥTuple͕ඞཁ͔ͩͬͨ
    • Android + JSON-RPC
    • http://www.slideshare.net/shinobuokano7/
    android-jsonrpc
    • ཧ༝ॻ͍ͯ͋Δ͔΋ʁ

    View Slide

  9. KotlinͷPair
    val pair = 1 to "pair"
    println(pair.first) // 1
    println(pair.second) // pair

    View Slide

  10. Triple΋͋ΔΑ
    val triple = Triple(1, true, "Triple")
    println(triple.first) // 1
    println(triple.second) // true
    println(triple.third) // Triple

    View Slide

  11. ͜ΕΛΈ͓ͯ΋ͬͨ

    View Slide

  12. ͜͏ॻ͚ͳ͍ͷʁ
    val triple = 1 to true to "Triple"

    View Slide

  13. ͜͏ॻ͚ͳ͍ͷʁ
    val triple = A to B to C

    View Slide

  14. ͦͷ··Ͱ͸ॻ͚ͳʔ͍
    • Pair in Pairʹͳͬͯ͠·͏
    • Pair,C>
    • ((1,true)"Triple")

    View Slide

  15. ͳʔΜͩɺΧοίΘΔ͍

    View Slide

  16. ͦ΋ͦ΋ Pairͷtoͬͯ

    Ͳ͏ͳͬͯΔΜͩ?

    View Slide

  17. ͦ΋ͦ΋ PairͷtoͬͯͲ͏ͳͬͯΔΜͩ?
    public infix fun .to(that: B)

    : Pair = Pair(this, that)

    View Slide

  18. ͳΔ΄Ͳ

    View Slide

  19. ͍΍ɺ·ͯΑ

    View Slide

  20. ಉ͡Α͏ʹ֦ுؔ਺

    ࡞Ε͹Ͱ͖Δ͔☺

    View Slide

  21. Pair͔ΒTripleΛ࡞Δ֦ுؔ਺Λॻ͍ͯΈͨ
    infix fun Pair.to(that: C)

    : Triple = 

    Triple(this.first, this.second, that)

    View Slide

  22. ͡ΌtoͰͭͳ͛ͯ

    ॻ͍ͯΈΑ͏

    View Slide

  23. ͡ΌtoͰͭͳ͛ͯॻ͍ͯΈΑ͏
    val triple = 1 to true to "Triple"
    println(triple.first) // 1
    println(triple.second) // true
    println(triple.third) // Triple
    println(triple.javaClass) // class kotlin.Triple

    View Slide

  24. Ͱ͖ͨ☺

    View Slide

  25. ΋ͬͱϚοεϧ

    ͍ͨ͠Ͱ͠ΐʁ

    View Slide

  26. 4ͭͷ஋Λ࣋ͭ

    Tuple QuartetΛ࡞Ζ͏

    View Slide

  27. 4ͭͷ஋Λ࣋ͭTuple QuartetΛ࡞Ζ͏
    class Quartet(
    val first: F,
    val second: S,
    val third: T,
    val fourth: FO,) {
    override fun toString(): String {
    return "Quartet(first=$first, second=$second,

    third=$third, fourth=$fourth)"
    }
    }

    View Slide

  28. toͭͳ͗ͰQuartetΛ

    ࡞ΕΔΑ͏ʹ͢Δ

    View Slide

  29. Triple͔ΒQuartetΛ࡞Δ֦ுؔ਺Λॻ͘
    infix fun Triple.to(that: D):
    Quartet = 

    Quartet(this.first, this.second, this.third, that)

    View Slide

  30. Quartet࢖ͬͯΈΑ͏
    val quartet = 1 to 10L to true to "quartet"
    println(quartet.first) // 1
    println(quartet.second) // 10
    println(quartet.third) // true
    println(quartet.fourth) // quartet

    View Slide

  31. ΋ͬͱϚοεϧ

    ΄͘͠ͳ͍??

    View Slide

  32. 5ͭͷ஋Λ࣋ͭ

    Tuple QuintetΛ࡞Ζ͏

    View Slide

  33. 5ͭͷ஋Λ࣋ͭTuple QuintetΛ࡞Ζ͏
    class Quintet(
    val first: F,
    val second: S,
    val third: T,
    val fourth: FO,
    val five: FI) {
    override fun toString(): String {
    return "Quintet(first=$first, second=$second,

    third=$third, fourth=$fourth, five=$five)"
    }
    }

    View Slide

  34. ͸͍͸͍ɺtoΛͭͳ͛ͯ

    ॻ͍ͯ࡞Γ͍ͨΑͶ

    View Slide

  35. ͸͍͸͍ɺ֦ுؔ਺֦ுؔ਺
    infix fun Quartet.to(that: E):
    Quintet = Quintet(this.first, this.second,
    this.third, this.fourth, that)

    View Slide

  36. Quintet࢖ͬͯΈΑ͏
    val quintet = 1 to 10L to true to LocalDateTime.now() to "quintet"
    println(quintet.first) // 1
    println(quintet.second) // 10
    println(quintet.third) // true
    println(quintet.fourth) // 2016-12-09T19:45:38.959
    println(quintet.five) // quintet

    View Slide

  37. Libraryʹ͠·ͨ͠

    View Slide

  38. Guild Kotlin
    https://github.com/operando/Guild/
    tree/master/guild-kotlin
    ͍͔ͭjCenterͱ͔ʹ͋͛·ʔ͢

    View Slide

  39. Links
    • Pair͔ΒTripleΛ࡞Δ֦ுؔ਺Λॻ͍ͯΈͨ - 2016/12/03ͷ30෼ KotlinϝϞ
    • http://hack-it-iron.hatenablog.com/entry/2016/12/03/165601
    • 4ͭͱ5ͭ஋Λ࣋ͭTupleΛ࡞ͬͯΈͨ - 2016/12/04ͷ30෼ KotlinϝϞ
    • http://hack-it-iron.hatenablog.com/entry/2016/12/04/223509
    • TupleϥΠϒϥϦ GuildͷKotlin൛࡞ͬͯΈͨ - 2016/12/09ͷ30෼ KotlinϝϞ
    • http://hack-it-iron.hatenablog.com/entry/2016/12/09/172657
    • Guild
    • https://github.com/operando/Guild/

    View Slide

  40. Thanks!

    View Slide