Slide 1

Slide 1 text

2017೥ʹ৽نΞϓϦ Λ্ཱͪ͛ͨ࿩ Keisuke Kobayashi (@kobakei) shibuya.apk #20

Slide 2

Slide 2 text

About Me • Keisuke Kobayashi • GitHub, Qiita: kobakei • Twitter: kobakei122 • Kyash, Inc • ݸਓࣄۀओ΋΍ͬͯ·͢

Slide 3

Slide 3 text

2017೥ʹ৽͘͠ΞϓϦΛ
 ্ཱͪ͛ͨ࿩Λ͠·͢

Slide 4

Slide 4 text

Kyash • ݸਓؒૹۚαʔϏε • 2017೥4݄ʹiOS൛ϦϦʔε • 2017೥7݄ʹAndroid൛ϦϦʔε

Slide 5

Slide 5 text

Kyash • ݸਓؒૹۚαʔϏε • 2017೥4݄ʹiOS൛ϦϦʔε • 2017೥5݄ʹԶೖࣾ • 2017೥7݄ʹAndroid൛ϦϦʔε

Slide 6

Slide 6 text

2͔݄ͪΐͬͱͰϦϦʔε • AndroidΤϯδχΞ1ਓ • େମ40ը໘ • αʔόʔͷAPI͸͢Ͱʹ͋Δ • ͍͔ʹͯ͠ϦϦʔε͔ͨ͠

Slide 7

Slide 7 text

Kotlin • Google I/Oલʹ࠾༻ • Kotlinͷํ͕։ൃ଎౓ૣ͍Β͍͠ͱ͍͏ᷚ • ษڧ͠ͳ͕Βॻ͖͢͢ΊΔ • Better Javaͱͯ͠ॻ͚ͩ͘ͳΒ͙͢׳ΕΔ

Slide 8

Slide 8 text

࣮ࡍͲ͏͔ͩͬͨ • λΠϓྔ͕ݮͬͨ • Data class • Delegated property • NPE͕ݮͬͨ • Nullڐ༰ or ඇڐ༰

Slide 9

Slide 9 text

ྫ: Delegated property class MainActivity : AppCompatActivity { companion object { fun createIntent(context: Context, hoge: String?, fuga: Int): Intent { return Intent(context, MainActivity::class.java).apply { putExtra(MainActivity::hoge.name, hoge) putExtra(MainActivity::fuga.name, fuga) } } } val hoge: String? by ExtraNullable() val fuga: Int by ExtraNonNull() }

Slide 10

Slide 10 text

ࠔͬͨͱ͜Ζ • είʔϓؔ਺ͷ࢖͍ํʹ໎ͬͨ • ࠷ۙ͸ͨΖ͏͞Μͷϑϩʔνϟʔτʹै͏ • ParcelizeΛಋೖͨ͠ΒJBͰىಈ͠ͳ͘ͳͬͨ • ͋͘·ͰExperimentalͳͷͰ஫ҙ

Slide 11

Slide 11 text

ઃܭ • MVVM + ϨΠϠʔυΞʔΩςΫνϟ • Data binding • ֤֊૚ΛRxJavaͰͭͳ͙ • ϥΠϑαΠΫϧʹԠͯ͡dispose͞ΕΔ࢓૊ Έ

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

ϥΠϒϥϦ • ͍͍ͩͨఆ൪Λ࢖͍ͬͯΔ • ϒϩάʹ·ͱΊ·ͨ͠ • Android։ൃʹ͓͚Δఆ൪ϥΠϒϥϦ22બ

Slide 14

Slide 14 text

ఆ൪Ҏ֎ʹศརͬΆ͍΋ͷ • DeepLinkDispatch • Airbnb࡞ɻΞϊςʔγϣϯͰσΟʔϓϦϯΫͷίʔυΛࣗಈੜ ੒ • debot • ϝϧΧϦͷࠓҪ͞Μ࡞ɻ୺຤ΛৼͬͯσόοάϝχϡʔΛग़͢ • MaterialChipsInput • GmailͷѼઌબ୒UIͬΆ͍ΞϨ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Architecture Components • ։ൃ౰࣌·ͩbetaͩͬͨͷͰ࢖Θͳ͔ͬͨ • RxLifecycleͬΆ͍࢓૊ΈΛࣗ࡞ͨ͠ • ͍͍ײ͡ʹCompositeDisposableʹadd͢Δ ࢓૊Έ • ORM͸OrmaΛ࢖ͬͨ

Slide 17

Slide 17 text

ࣗ࡞ͨ͠ϥΠϒϥϦ • FabSpeedDial • طଘͷϥΠϒϥϦ͕ඍົͩͬͨͷͰ࡞ͬͨ • ͍͔ͭ͘ͷUIϥΠϒϥϦ͸forkͨ͠ • UIϥΠϒϥϦ͸์ஔ͞Ε͕ͪ

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

ςετ • ୯ମςετ • Rolectric + mockito-kotlin • Mockito-kotlin͸͍͍ͧ • UIςετ • ͪΐͬͱԿݴͬͯΔ͔Θ͔Βͳ͍Ͱ͢

Slide 20

Slide 20 text

Mockito-kotlin val mock = mock { on { hoge() } doReturn "hoge" on { fuga() } doReturn "fuga" }

Slide 21

Slide 21 text

·ͱΊ • Kyash Android൛ͷ։ൃΛࢧٕ͑ͨज़Λ঺հ͠·ͨ͠ • Kotlin • ઃܭ • ϥΠϒϥϦ • ςετ

Slide 22

Slide 22 text

Α͍͓೥Λʂ