Slide 1

Slide 1 text

ScalaͱKotlinΛۀ຿ Ͱ࢖ͬͯΈͨ Abe Asami

Slide 2

Slide 2 text

ࣗݾ঺հ "CF"TBNJl͖ͷࢠz
 େࡕͷϑϦʔϥϯεϓϩάϥϚ IUUQOPDPOPOFU !BBUI 4DBMBɺ"OESPJE +BWB,PUMJO

Slide 3

Slide 3 text

ࠓ೔ͷ಺༰ • ݸਓͰScalaɾKotlinڞʹडୗҊ݅Ͱ࠾༻Λ͠ɺ྆Ҋ݅ͱ΋େ ͖ͳ໰୊ͳ͘ೲ඼͢Δ͜ͱ͕Ͱ͖·ͨ͠ • ͦͷࡍ྆Ҋ݅Λख఻͍͍ͬͯͨͩͨ։ൃձࣾͷΤϯδχΞ͞ ΜʹScalaʹରͯ͠͸ʮ೉͍͠ʯͱ͍͏ҹ৅Λ๊͔ͤͯ͠·ͬ ͨͷͰɺͳͥͦ͏ͳͬͯ͠·ͬͨͷ͔Λߟ͑ͯ·ͱΊͯΈ· ͨ͠ • ʮScalaͱKotlinΛۀ຿Ͱ࢖ͬͯΈͨʯ݁Ռߟ͑ͯΈͨɺScala Λۀ຿Ͱಋೖ͢Δͱ͖ʹؾΛ͚ͭΔ͜ͱΛڞ༗͠·͢

Slide 4

Slide 4 text

• ޙ൒͸ʮScala೉͍͠ͱݴΘΕͳ͍Α͏ʹ͢Δ ʹ͸ʯͱ͍͏ํ޲ͷ࿩ʹͳͬͯ͠·͍ɺScala ͱKotlinͷٕज़తͳ࿩͸ઙ͍಺༰ʹͱͲ·ͬͯ ͠·͍·ͨ͠(͢Έ·ͤΜɾɾɾ) • ख఻͍͍ͬͯͨͩͨΤϯδχΞ͞ΜͷҙݟΛࡌ ͍ͤͯ·͕͢ɺ͋͘·Ͱ1ݸਓͷओ؍Ͱ͢ɻඞ ͣ͠΋શһʹ౰ͯ͸·Δ΋ͷͰ͸ͳ͍͜ͱ͸͝ ྃঝ͍ͩ͘͞

Slide 5

Slide 5 text

Kotlinͱ͸

Slide 6

Slide 6 text

Kotlinͱ͸ • JetBrains͕ࣾ։ൃͨ͠JVMݴޠ • ScalaͷӨڹΛ৭ೱ͘ड͚͍ͯΔ • Google I/O 2017 ʹͯAndroidͷެࣜ։ൃݴޠͱͯ͠ αϙʔτ͞ΕΔ͜ͱ͕ൃද͞Εͨ • ΋ͱ΋ͱAndroid޲͚Λڧ͘ҙࣝͨ͠࢓༷Ͱ͋ ΓɺެࣜԽલ͔Β࠾༻ࣄྫ͕૿Ճ܏޲ʹ͋ͬͨ

Slide 7

Slide 7 text

ScalaͱKotlinͷࣅ͍ͯΔͱ͜Ζ • JVM্Ͱಈ࡞͢Δ • JavaScript΁ͷτϥϯεύΠϧ؀ڥ΍
 NativeίϯύΠϧ؀ڥ΋͋Δ • ੩తܕ෇͚ͷΦϒδΣΫτࢦ޲ݴޠ

Slide 8

Slide 8 text

ྨࣅػೳͷྫ (͘͝Ұ෦) • var/val • ܕਪ࿦ • ηϛίϩϯෆཁ • ϓϦϛςΟϒܕ͕ଘࡏ͠ͳ͍ • case class ͱ data class • Ϋϥε΍ϝιου • ΦϒδΣΫτ΍ίϯύχΦϯ ΦϒδΣΫτ΋͋Δ • ϥϜμࣜ • ߴ֊ؔ਺ • ݕࠪྫ֎͕ͳ͍ etc.

Slide 9

Slide 9 text

ScalaͱKotlinͷ
 ҧ͏ͱ͜Ζ (※͜Ε΋ͨ͘͞Μ͋ΔͷͰҰ෦͚ͩ͝঺հ)

Slide 10

Slide 10 text

ϏϧυγεςϜ • Scala͸sbt͕ඪ४Ϗϧυπʔϧ • Koltin͸Gradle͕ඪ४Ϗϧυπʔϧ • Scala͸ಠࣗͷΤίγεςϜΛߏங͓ͯ͠Γɺ Kotlin͸JavaͷͦΕΛར༻͍ͯ͠Δ • Ͳ͕͍͍ͬͪͱ͔͸ͳ͍

Slide 11

Slide 11 text

Android։ൃ • Kotlin͸Android։ൃͰར༻͠΍͍͢Α͏ʹ
 ҙࣝͯ͠࡞ΒΕ͍ͯΔ • JDK6ͱͷޓ׵ੑ͕อূ͞Ε͍ͯΔ • ϥϯλΠϜͷαΠζ͕খ͍͞ • ϝιου਺͕গͳ͍ • Scala͸ଟػೳͰ͋ΔͨΊɺαΠζ͕େ͖͍ • ։ൃ؀ڥͰ͋ΔAndroidStudio͕JetBrainsͷIntelliJ IDEAΛForkͯ͠։ൃ͞ Ε͍ͯΔͱ͍͏໘΋େ͖͔ͬͨͱࢥΘΕΔ

Slide 12

Slide 12 text

ؔ਺ܕݴޠཁૉ • Scala͸ؔ਺ܕϓϩάϥϛϯάͷελΠϧΛڧ͘औΓ͍Εɺ ৭ʑͳศརػೳΛఏڙ͍ͯ͠Δ • OptionɺEitherɺforࣜͳͲ • Kotlin͸ߴ֊ؔ਺΍ϥϜμࣜͳͲͷؔ਺ܕϓϩάϥϛϯάͷཁ ૉΛ1෦ܰ͘औΓೖΕΔܗͰ৭ʑͳศརػೳΛఏڙ͍ͯ͠Δ • είʔϓؔ਺ͳͲ

Slide 13

Slide 13 text

ͦͷଞҟͳΔػೳͷྫ • OptionͱNull҆શ • for • Scalaʹ͋ͬͯKotlinʹͳ͍΋ͷ • Implicit • ύλʔϯϚον • Kotlinʹ͋ͬͯScalaʹͳ͍΋ͷ • είʔϓؔ਺ • ֦ுؔ਺

Slide 14

Slide 14 text

ScalaͱKotlinͷจ๏ൺֱ͸
 Լهͷهࣄ͕ৄ͍͠Ͱ͢ • KotlinϓϩάϥϚͷͨΊͷScalaೖ໳ʢ̍ʣʙجຊฤʙ - Qiita 
 http://qiita.com/kmizu/items/9d16360c4d383f3fa2aa • KotlinϓϩάϥϚͷͨΊͷScalaೖ໳ʢ̎ʣʙൃలฤʙ - Qiita 
 http://qiita.com/kmizu/items/ db6461485b9dd320de23

Slide 15

Slide 15 text

ίʔυྫ https://github.com/SAMMY7th/aws-lambda-scala https://github.com/SAMMY7th/aws-lambda-kotlin 2016/04ࠒɺAWS-lambdaͰಈ͘botίʔυΛ
 ScalaͱKotlinͰॻ͍ͨ΋ͷΛ͓ݟͤ͠·͢

Slide 16

Slide 16 text

࣮ࡍʹۀ຿Ͱ࢖ͬͨࡍͷ͓࿩

Slide 17

Slide 17 text

ࡢ೥डୗͨ͠Ҋ݅ • ։ൃձࣾTࣾ͞Μ͔ΒԼهͷҊ݅Λड஫ • AndroidΞϓϦ։ൃ (2016/04) ظؒ 3ϲ݄ • API͔Βऔಘͨ͠஋Λάϥϑදࣔ͢ΔΞϓϦ • WebΞϓϦ։ൃ (2016/10) ظؒ4ϲ݄ • Air̋NBΈ͍ͨͳΞϓϦ • AndroidͷํΛKotlinͰɺWebͷํΛPlay2/ScalaͰ։ൃ͠ɺແࣄೲ඼

Slide 18

Slide 18 text

։ൃମ੍ • Android/Kotlin • ։ൃɿࢲ
 ίʔυϨϏϡʔɿTࣾͷI͞Μ • Play2/Scala • ։ൃɿࢲ
 ίʔυϨϏϡʔɿTࣾͷI͞ΜɺTech To Valueͷ͕ͧ͘ ͞Μ

Slide 19

Slide 19 text

ࣗ෼ͷײ૝ • Scala΋Kotlin΋ͲͪΒ΋޷͖ • ؆ܿͳίʔυΛॻ͖͍ͨͱ͍͏ཁ๬͸ͲͪΒ΋ຬͨͯ͘͠ΕΔ • ͨͩɺforࣜ΍ύλʔϯϚονͳͲScalaͷํ͕ศརͩͳʔͱײ͡Δ͜ͱ͸͋Δ • AndroidҊ݅͸ެࣜԽ͞ΕͨKotlinΛࠓޙ΋ੵۃతʹ࢖͍͖͍ͬͯͨ • ͲͪΒͰ΋͍͍৔߹͸׳Ε͍ͯΔScalaΛબ୒͍͕ͨ͠ɺϥΠϒϥϦ΍ϑϨʔϜϫʔΫࣄ৘Λߟྀ ͯ͠બ୒͍͖͍ͯͨ͠ • WebͷํͰ΋KotlinͰ͍͍ϑϨʔϜϫʔΫ͕Ͱͯ͘Ε͹ɺScalaͰ͸ͳ͘KotlinΛબ୒͢Δ Α͏ʹͳΔ͔΋͠Εͳ͍ • Scala͸͢ͰʹScala੡ͷϥΠϒϥϦ΍ϑϨʔϜϫʔΫ͕ൃల͍ͯ͠Δ͕ɺKotlin͸·ͩ· ͩ͜Ε͔Βͱ͍͏ҹ৅

Slide 20

Slide 20 text

TࣾͷI͞Μʹ͍ͭͯิ଍આ໌ • I͞Μ͸Kotlin΋Scala΋ܦݧ͸͋Γ·ͤΜͰ͕ͨ͠ɺԼ هͷݴޠܦݧ͕͋Γ·͢ • PHPɺJavaɺSwiftɺRubyɺCɺC++ɺC#ɺ PerlɺPython • ࣮ࡍʹίʔυΛॻ͘͜ͱ͸͓ئ͍͓ͯ͠Βͣɺଞۀ຿ ͷยखؒͰࣗྗͰௐ΂ͳ͕ΒϨϏϡʔΛͯ͘͠Ε·͠ ͨ

Slide 21

Slide 21 text

KotlinίʔυΛϨϏϡʔͨ͠
 I͞Μͷ൓Ԡ • SwiftʹΑ͘ࣅ͍ͯΔ • ↑͜Ε͸ଞͷձࣾ͞Μʹ΋ݴΘΕͨ • Java͕ग़དྷΔਓͳΒ͢ΜͳΓशಘͰ͖ͦ͏ • AndroidͰ͸KotlinΛੵۃతʹ࢖͍͖͍ͬͯͨ

Slide 22

Slide 22 text

ScalaίʔυΛϨϏϡʔͨ͠
 I͞Μͷ൓Ԡ • ʮScala͜Θ͍ʯ • ࢲʮʂʁʯ

Slide 23

Slide 23 text

͜ͷɺKotlinͱScalaʹର͢Δ ൓Ԡͷҧ͍͸ҰମԿ͕ ݪҼͳΜ΍ɾɾɾ

Slide 24

Slide 24 text

I͞Μʹ ώΞϦϯάΛͯ͠Έ·ͨ͠

Slide 25

Slide 25 text

ώΞϦϯά݁Ռ • Kotlin͸Javaͷ஌ࣝͰԿͱͳ͘ಡΊͨ͠ॻ͚͚ͨͲɺScala͸ͦ͏͸ ͍͔ͳ͔ͬͨ • ෼͔Βͳ͍Ωʔϫʔυ͕ग़Δͨͼʹάά͕ͬͨɺҶͮΔࣜʹΘ ͔Βͳ͍Ωʔϫʔυ͕૿͑ͯ͠·ͬͯɺΊͪΌͪ͘Ό৭Μͳ͜ ͱΛௐ΂ͨ • Scalaಛ༗ͷΩʔϫʔυ͕͔ͳΓଟ͍Α͏ʹײͨ͡ • ௐ΂ͨ݁ՌཧղͰ͖ͳ͔ͬͨΩʔϫʔυ΋͋ͬͨ • Ϟφυͱ͔

Slide 26

Slide 26 text

ώΞϦϯά݁Ռ(ଓ͖) • AltJavaͩͱࢥ͍ͬͯͨΒɺJavaʹ͸ͳ͍Ϋϥ ε΍ػೳ͕ଟ͔ͬͨɻผݴޠͩͱ͍͏֮ޛΛ ࣋ͬͯ௅ΜͰ͓͚͹Α͔ͬͨ

Slide 27

Slide 27 text

I͞Μͷ࿩Λฉ͍ͯࢥͬͨ͜ͱ • Scala͸ଟػೳͰ͋ΔΏ͑ʹɺศར͚ͩͲ֮͑Δ͜ͱ͸ଟ͍ • ຊ౰͸ؔ਺ܕϓϩάϥϛϯά΁ͷཧղ͸ઙͯ͘΋Scalaͷػ ೳΛ࢖͏͜ͱ͸े෼Ͱ͖Δͷʹɺௐ΂͍ͯ͘͏ͪʹϞφυͳ ͲͷΩʔϫʔυʹߦ͖͖ͭɺScalaͷཧղʹ͸ؔ਺ܕϓϩά ϥϛϯάͷ஌͕ࣝඞਢͳͷͩͱ͍͏צҧ͍͕ൃੜ͍ͯ͠Δ • Scala͸ଞͷݴޠʹൺ΂ͯɺֶͿͨΊͷಓے͕੔උ͞Ε͍ͯ ͳ͍܏޲ʹ͋Δؾ͕ͨ͠

Slide 28

Slide 28 text

Ҏ্ͷ͜ͱ͔ΒΘ͔ͬͨ ۀ຿ͰScalaΛಋೖ ͢ΔࡍʹؾΛ͚ͭΔ͜ͱ

Slide 29

Slide 29 text

ݱঢ়Scala͸ɺଞͷݴޠͱൺֱ͢Δͱֶशίετ ͕ߴ͍ɻͦͷ͜ͱΛೝ͓ࣝͯ͘͠ɻ

Slide 30

Slide 30 text

ະܦݧऀ͕νʔϜʹ͍Δ৔߹ • ԼهͷΑ͏ͳํ๏ͰֶशͷαϙʔτΛߦ͏ • ίʔυϨϏϡʔ • ϖΞϓϩ • ֶशࢿྉͷ࡞੒ • ద੾ͳॻ੶΍ղઆWebαΠτ΁ͷ༠ಋ • ͦͷࡍʮίοϓຊಡΊʯΈ͍ͨͳେࡶ೺ͳ༠ಋͰ͸ͳ͘ɺௐ΂Δͱ ͖ͷద੾ͳΩʔϫʔυΛఏࣔ͢Δ • ʮଞʹݴޠܦݧ͕͋ΔΜͩͬͨΒͳΜͱ͔ͳΔͰ͠ΐʯͱαϙʔτ͠ͳ͍ͷ͸͓͢ ͢ΊͰ͖ͳ͍

Slide 31

Slide 31 text

ະܦݧऀ͔͍͠ͳ͍৔߹ • ScalaಋೖαϙʔτΛߦ͍ͬͯΔΤϯδχΞ͞ ΜͷྗΛआΓΔ • Tech to Value Co., Ltd. http://www.t2v.jp/ • Good Flow Technologies http://good- flow.com/

Slide 32

Slide 32 text

͜ͷ··ͩͱ
 Scalaະܦݧऀͷਓ͕
 ʮScala೉͍͠Μ΍ͬͨΒ΍Ί ͱ͔͜ͳɾɾɾʯ
 ͬͯͳΓ͔Ͷͳ͍ͷͰ
 ͪΐͬͱϑΥϩʔΛɾɾɾ

Slide 33

Slide 33 text

ݸਓతʹScalaΛֶΜͰΑ͔ͬͨ ͱײ͡Δ఺ • جຊతʹΦϒδΣΫτࢦ޲Ͱॻ͖ͳ͕Βɺؔ਺ܕ ϓϩάϥϛϯάͷύϥμΠϜʹ৮ΕΔ͜ͱ͕Ͱ͖ ͨ • ౶ҥߏจ͕ଟ͍ͨΊʮͲ͏͍͏ॻ͖ํͩͱଞͷਓ ͕ಡΈ΍͍͔͢ʯΛҙࣝ͢Δบ͕͍ͭͨ • ScalaΛֶͿ͜ͱʹΑΓɺΤϯδχΞͱͯ͠ͷϨϕ ϧ͕͕͋ͬͨؾ͕͢Δ

Slide 34

Slide 34 text

ࠓճͷ݅Ͱߟ͑ͨ͜ͱ • ࠷ۙʮScala͸ϋʔυϧ͕ߴ͍··Ͱ͍͍Μ͡Όͳ͍ͷ ͔ʯʮͦͷํ͕ΤϯδχΞͷϨϕϧ͕ҰఆʹอͨΕΔͷ Ͱ͸ʯͬͯҙݟΛͪΐ͍ͪΐ͍ฉ͘ • Ͱ΋ݱঢ়ຊདྷཧղͰ͖ΔྗΛ࣋ͭਓ΋ɺඇޮ཰ͳֶशΛ ͯ͠͠·͍ɺ࠳ંͨ͠ύλʔϯ͕ଟͦ͏ͩͱײͨ͡ • ͦ͏͍͏ͷ͸΋͍ͬͨͳ͍ͳʔͱࢥ͏ͷͰɺզʑܦݧऀ ͸ࠓޙ৽͍͠ਓ͕ʮֶͿͨΊͷಓےʯͷ੔උΛ৺͕͚ͨ ͍ͳͱࢥ͍·ͨ͠

Slide 35

Slide 35 text

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