Save 37% off PRO during our Black Friday Sale! »

LINEでKotlinを活用してサービスを作っていく話 / The story about using Kotlin to create a new service at LINE

LINEでKotlinを活用してサービスを作っていく話 / The story about using Kotlin to create a new service at LINE

LINEで新規に開発しているライブコマースサービスにおいて、どういうコンポーネントを作っているのか、どう作っていくのか、どんな技術を利用して作っているのかを説明しています。

Speaker:岩谷 明 / @hoshi_gaki https://twitter.com/hoshi_gaki

※以下のイベントの登壇資料です。
https://fortee.jp/jjug-ccc-2021-fall/proposal/622ddb46-f357-424c-a99c-1f263b50166c

53850955f15249a1a9dc49df6113e400?s=128

LINE Developers
PRO

November 21, 2021
Tweet

Transcript

  1. -*/&で,PUMJOを活用して サービスを作っていく話 -*/&株式会社 ؠ୩໌ 

  2. ؠ୩ ໌ -*/&גࣜձࣾ ։ൃ,νʔϜ ೥ೖࣾ -*/& -*7&ͷ"OESPJEΞϓϦ΍-*/& ϊϕϧͷJ04ΞϓϦͳͲͷΫϥΠΞϯ τΤϯδχΞΛܦͯɺ ೥͔Β

    ϥΠϒίϚʔεʮ-*7&#6:ʯͷαʔ όʔαΠυΛ΍͍ͬͯ·͢ *XBZB "LJSB
  3. • -*/&Ͱࠓճ৽͘͠։ൃͨ͠ϥΠϒίϚʔεαʔϏεͷ͝঺հ • ։ൃʹ͋ͨͬͯͷཁ݅ͱٕज़બఆ • ,PUMJO$PSPVUJOFͷઆ໌ • ,PUMJO $PSPVUJOF 

    4QSJOH H31$ 3%#$ 3FEJTʣ࣮ફ ࠓ೔͓࿩͢͠Δ಺༰
  4. -*/&ͷϥΠϒίϚʔεαʔϏε ʹςετϩʔϯν ৽αʔϏε -*7&#6: ެ։ʂ • -*/&্Ͱࢹௌɾߪೖ·Ͱ׬݁ • ϥΠϒ഑৴Λݟͳ͕ΒλοϓͰ঎඼͕ങ͑Δ •

    ϦΞϧλΠϜͳΠϯλϥΫγϣϯ
  5. ϥΠϒίϚʔεαʔϏεʁ • ϥΠϒ഑৴Λ͠ͳ͕Β঎඼Λ঺հɾߪೖͰ͖ΔαʔϏε ηϥʔ Ϣʔβʔ ϦΞϧλΠϜͰ ߪങঢ়گ͕Θ͔Δ ࢹௌ͠ͳ͕Β ͦͷ৔Ͱങ͑Δ -*7&Ͱ঎඼঺հ

    νϟοτͷ࣭໰ճ౴΍ ίϛϡχέʔγϣϯ ؾʹͳΔϙΠϯτΛ ௚઀࣭໰Ͱ͖Δ ಈతͳ ങ͍෺ͷָ͠͞ εϚϗͰ खܰʹ഑৴ -*7&ࢹௌ ߪೖ
  6. ߪೖϑΟʔυόοΫ νϟοτ ஫จ ৄࡉը໘ -*/&্Ͱ࢖͑ΔϥΠϒίϚʔεαʔϏε -*/&'SPOUFOE'SBNFXPSL-*''ͷ׆༻ • -*''8FCΞϓϦέʔγϣϯΛ-*/&্Ͱಈ͔ͤΔϑϨʔϜϫʔΫ • ͲͳͨͰ΋࡞Ε·͢

    IUUQTMJGGTUBSUFSOFUMJGZBQQ
  7. ηϥʔ޲͚$.4 • ഑৴؅ཧ • ঎඼؅ཧ • ஫จ؅ཧ • ൃૹॲཧ

  8. ηϥʔ޲͚ΞϓϦ 'MVUUFS ഑৴ ొ࿥ɾฤू ϓϨϏϡʔ

  9. • ϥΠϒ • ίϚʔε -*7&#6:αʔϏεͷཁ݅

  10. • ಉ࣌ؒ͡ʹେྔͷϢʔβʔ͕ΞΫηε͢Δ • ഑৴ͷ؅ཧ • ϦΞϧλΠϜੑʢ഑৴தʹى͜ΔΠϕϯτͷ఻ୡʣ • ΠϯλϥΫςΟϒੑʢνϟοτ΍ߪೖʹΑΔϢʔβʔ͔ΒͷΞΫγϣϯʣ ϥΠϒͷཁ݅

  11. • ঎඼ͷ؅ཧ • ஫จͷ؅ཧ • ܾࡁ • ൃૹ ίϚʔεͷཁ݅

  12. • 8FCαΠτ -*'' • ηϥʔ޲͚$.4 • ηϥʔ޲͚ΞϓϦ • ࣾ಺$.4 •

    -*/&Ͱͷ௨஌ϝοηʔδͷૹ৴ͳͲ Ϣʔβʔ޲͚ʹ࡞Δ΋ͷ
  13. اըͱ૬ஊ جຊతͳཁ݅ͷܾఆ ϥΠϒ ͷཁ݅ ίϚʔε ͷཁ݅ ࡞Δ΋ͷ ͨͪ 3FRVJSF NFOU

    3FRVJSF NFOU 3FRVJSF NFOU
  14. • εέʔϥϏϦςΟ • ύϑΥʔϚϯε • ϩδοΫ͕େ͖͘ҟͳΔίϯϙʔωϯτΛಉ࣌ʹ࡞Δඞཁ • ෳ਺ίϯϙʔωϯτؒͰ௨৴ • ڞ௨͢ΔػೳΛ࣋ͭ8FCͱ"QQ͕ඞཁ

    3FRVJSFNFOUT
  15. • গ਺ਫ਼Ӷ • νʔϜ͸ΞϓϦͱαʔόʔ • ҰํͰઐ໳νʔϜ͕ଘࡏ • ϑϩϯτΤϯυ • -*/&1BZܾࡁ

    • 35.1ɾ)-4഑৴ • ਫ਼ࢉ FUD ͱ͜ΖͰ-*/&ͷ։ൃελΠϧͱࠓճͷϓϩδΣΫτͷ؀ڥ • ͪΐ͏Ͳ͍͍λΠϛϯά • աڈͷܦݧ͔Βͷվળ • ৽͍ٕ͠ज़ͷΩϟονΞοϓ • ࣮ݧతʹࢼͤΔ؀ڥ
  16. • ϚΠΫϩαʔϏε ϩδοΫͷ͍ͩͿҟͳΔཁ݅ʢϥΠϒͱίϚʔεͳͲʣ͕͋ΔͷͰ෼཭͠΍͍͢ 8FCαΠτ΍$.4ͳͲͷෳ਺ͷίϯϙʔωϯτ͕͋Δ গਓ਺Ͱ։ൃ͢Δ͕ϝϦοτ͕͋Δͱ൑அ • ,VCFSOFUFT ϚΠΫϩαʔϏεͷͨΊ εέʔϥϏϦςΟΛ୲อ ࣾ಺ʹ͸.BOBHFEͳ,VCFSOFUFTΫϥελΛӡ༻͢ΔνʔϜ͕͋Δ

    બఆٕͨ͠ज़
  17. • ,PUMJO ࣾ಺Ͱ͸+BWB͕ओྲྀͰ࠷ۙͰ͸,PUMJO΋ଟ͍ ޙड़͢Δ$PSPVUJOFʹΑΔඇಉظॲཧͱͷ਌࿨ੑ • H31$ ෳ਺ίϯϙʔωϯτؒͷ௨৴ ෳ਺ͷ։ൃνʔϜΛ·͍ͨͩεΩʔϚ؅ཧͷͨΊ 4FSWFSTUSFBNJOH31$Λ࢖ͬͯΫϥΠΞϯτͷը໘Λߋ৽ •

    .Z42- 3FEJT ,BGLB ͜ͷล͸͍ͭ΋௨Γ બఆٕͨ͠ज़
  18. ΞʔΩςΫνϟ

  19. • ύϑΥʔϚϯεΛग़ͨ͢ΊʹͰ͖Δ͚ͩඇಉظʹ͍ͨ͠ • ϚΠΫϩαʔϏεͰ͸ͨ͘͞Μͷ31$Λߦ͏ • ࣗαʔϏε಺ͷ௨৴΋ɺ-*/&಺ͷଞαʔϏεͱͷ௨৴΋ଟ͍ • ಉظతʹ࣮૷ͯ͠͠·͏ͱɺ௨৴ʹ͔͔ΔϨΠςϯγͷؒ*0଴ͪͰແବ͕ଟ͍ • Ͱ͖Δ͚ͩʜϦΫΤετ͔ΒϨεϙϯε·Ͱ

    • ࠓ·Ͱඇಉظॲཧͱ͍͑͹ • 'VUVSF 1SPNJTF 3Y+BWB 3FBDUPS 4QSJOH8FC'MVY • $BMMCBDL )FMM΍)PU$PMEͷѻ͍ͳͲετϦʔϜͷ೉͠͞ ϚΠΫϩαʔϏεʹ͓͚ΔύϑΥʔϚϯε
  20. • $PSPVUJOFʜதஅՄೳ TVTQFOEBCMF ͳॲཧ • 5ISFBEʹࣅ͍ͯΔ͕ΑΓܰྔͰεΠονͷίετ΋ͳ͍ • ಛఆͷ5ISFBEʹ݁ͼ͔ͭͳ͍ org.jetbrains.kotlinx:kotlinx-coroutines-core ͦ͜Ͱ,PUMJO$PSPVUJOF

    LPUMJOYDPSPVUJOF ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM
  21. ྫ ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM • MBVODIDPSPVUJOFCVJMEFSಠ ཱͯ͠ฒߦʹಈ͘$PSPVUJOFΛ ࡞Δ • EFMBZTVTQFOEJOHGVODUJPO ࢦఆ͞Εͨ࣌ؒTVTQFOE͢Δɻ $PSPVUJOFΛTVTQFOEͯ͠΋ͦ

    ͷεϨου͸ϒϩοΫ͠ͳ͍ɻ ଞͷDPSPVUJOF΍ίʔυ͸ಈ͘ • SVO#MPDLJOH DPSPVUJOF CVJME FS ී௨ͷಉظతͳίʔυ͔Β DPSPVUJOFΛىಈ͢Δɻ׬ྃ͢ Δ·Ͱىಈ͞ΕͨεϨουΛϒ ϩοΫ͢Δ
  22. 4VTQFOEJOH GVODUJPO ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM • TVTQFOE म০ࢠΛGVODUJPOʹ͚ͭΔͱ TVTQFOEJOHGVODUJPOʹͳΔ • 4VTQFOEJOHGVODUJPO͸ଞͷTVTQFOEJOHGVODUJ POΛݺͼग़ͤΔ

    • 4VTQFOEJOHGVODUJPO͸$PSPVUJOF4DPQF͔ଞͷ TVTQFOEJOHGVODUJPO͔Β͔͠ݺͼग़ͤͳ͍ • ͜ΕΛ܁Γฦͯ͠΄ͱΜͲTVTQFOEJOH GVODUJPO Λॻ͘͜ͱʹͳΔ
  23. 4USVDUVSFE $PODVSSFODZ ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM • $PSPVUJOF͸DPSPVUJOFʢݫີʹ͸DPSPVUJOF4DPQFʣͷத͔Β ͔͠ىಈͰ͖ͳ͍ • ͖ͬ͞ͷྫͰ͸SVO#MPDLJOH͕DPSPVUJOF4DPQF • ֎ଆͷDPSPVUJOF͸಺ଆͷDPSPVUJOF͕શ෦׬ྃ͠ͳ͍ͱ׬ྃ͠

    ͳ͍ • DPSPVUJOF4DPQF \ʜ^Λ࢖͏ͱࣗ෼ͰDPSPVUJOF4DPQF͕࡞Ε Δ • SVO#MPDLJOHͱҧͬͯεϨουΛϒϩοΫ͠ͳ͍ͷͰTVTQFOEJ OHGVODUJPOʹͳ͍ͬͯΔ • ࠨͷྫͰ͸DPSPVUJOF4DPQF಺ͷͭͷMBVODI\ʜ ^͸ฒྻʹಈ ࡞͢Δ • EP8PSME͸྆ํ͕׬ྃ͠ͳ͍ͱ׬ྃ͠ͳ͍
  24. • 4QSJOH'SBNFXPSLͰ$PSPVUJOFͷαϙʔτ͕ೖΔ˞ • %FGGFSFEͱ'MPXʢ͍ͣΕ΋$PSPVUJOFͷ࣮ߦ݁ՌΛද͢ΫϥεʣΛ!$POUSPMMFSͷ4QSJOH8FC'MVYͷ໭Γ஋ʹ࢖͑ ΔΑ͏ʹͳͬͨΓɺ4VTQFOEJOHGVODUJPOͱͯ͠ॻ͚ΔΑ͏ʹͳͬͨΓ • GVOIBOEMFS.POP5ˠ TVTQFOEGVO5 • 4QSJOHͰ͸3FBDUPSΛར༻ͯ͠ඇಉظɾϦΞΫςΟϒϓϩάϥϛϯάΛ࣮ݱ͍ͯ͠Δ

    • 3FBDUPS ⁶ DPSPVUJOFͷม׵ΛΑ͘΍Δ͜ͱʹͳΔ ,PUMJO$PSPVUJOFͱ4QSJOH ˞ग़యɿIUUQTEPDTTQSJOHJPTQSJOHGSBNFXPSLEPDT.TQSJOHGSBNFXPSLSFGFSFODFMBOHVBHFTIUNMDPSPVUJOFT org.jetbrains.kotlinx:kotlinx-coroutines-reactive org.jetbrains.kotlinx:kotlinx-coroutines-reactor
  25. • HSQDKBWB JPHJUIVCMPHOFUHSQDTQSJOHCPPUTUBSUFS˞ • HSQDLPUMJOʹҠߦ͢Δܭըத • ੜ੒͞ΕͨGVODUJPOͰDPSPVUJOFΛ࢖͑ΔΑ͏ ʹ$PSPVUJOF-BVODIFSͱ͍͏ΫϥεΛ࡞੒ • ʢ༨ஊʣ31$ͷ໋໊͸VCFSͷ1SPUPCVG

    4UZMF (VJEF7 ˞˞ʹ͕͍ͨͬͯ͠Δ ,PUMJO$PSPVUJOFͱH31$ ˞ग़య IUUQTHJUIVCDPN-PH/FUHSQDTQSJOHCPPUTUBSUFS ˞˞ग़య IUUQTHJUIVCDPNVCFSQSPUPUPPMCMPCEFWTUZMF3&"%.&NE
  26. $PSPVUJOFͰH31$ͷϨεϙϯεΛฦ͢ • $PSPVUJOF&YDFQUJPO)BOEMFSͰΤ ϥʔϋϯυϥΛ$PSPVUJOF4DPQFʹ ઃఆ • ྫ֎ൃੜ࣌͸SFTQPOTF0CTFSWFS PO&SSPSͰΤϥʔฦ͢ • MBVODI಺ͰҾ਺ͷTVTQFOEJOHMBN

    CEBΛ࣮ߦͯ͠SFTQPOTF0CTFSWFS PO/FYUͰϨεϙϯεΛฦ͍ͯ͠Δ
  27. • 4QSJOH%BUB3FEJT 3FBDUPS • PSHTQSJOHGSBNFXPSLCPPUTQSJOHCPPUTUBSUFSE BUBSFEJTSFBDUJWF • 3FBDUJWF3FEJT0QFSBUJPOT&YUFOTJPOT˞͕ • 3FBDUJWF3FEJT0QFSBUJPOTʹTVTQFOEJOH

    GVODUJPO Λ֦ுͯ͠௥Ճ • HFU"OE"XBJU • TFU"OE"XBJU ʜ • .POP5Ͱؼͬͯ͘Δϝιουʹରͯ͠ BXBJU4JOHMF Ͱ΋0, ,PUMJO$PSPVUJOFͱ3FBDUJWF3FEJT ˞ग़యɿIUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHEBUBSFEJTCMPCNBJOTSDNBJOLPUMJOPSHTQSJOHGSBNFXPSLEBUBSFEJTDPSF3FBDUJWF3FEJT0QFSBUJPOT&YUFOTJPOTLU
  28. • 4QSJOH%BUB3%#$ • PSHTQSJOHGSBNFXPSLEBUBTQSJOHEBUBSECD • 3%#$ʜ ϦΞΫςΟϒʹ42-σʔλϕʔεͱ࿈ܞ͢Δ ࢓༷˞ • .Z42-

    %SJWFS EFWNJLVSECDNZTRM ˞˞ • %#ͷεΩʔϚ͔ΒJOTFSUTFMFDU༻ͷEBUBDMBTTΛੜ੒͢Δ HSBEMFλεΫΛ։ൃ ,PUMJO$PSPVUJOFͱ3%#$ 3FBDUJWF3FMBUJPOBM%BUBCBTF$POOFDUJWJUZ ˞ग़యɿ IUUQTTQSJOHQMFJBEFTJPQSPKFDUTTQSJOHEBUBSECD IUUQTTQSJOHQMFJBEFTJPTQSJOHEBUBSECDEPDTSFGFSFODFIUNMSFGFSFODF ˞˞ग़యɿ IUUQTHJUIVCDPNNJSSPNVUUISECDNZTRM
  29. • 1SPT • ίʔυͷݟ௨͕͠ྑ͍ • ೉͘͠ͳΓ͕ͪͳඇಉظॲཧΛ؆ܿʹ͔͚Δ • ύϑΥʔϚϯε͕͍͍ • $POT

    • 4USVDUVSFE $PODVSSFODZͷ֓೦͕΍΍ͱ͖ͬͭʹ͍͘ • ಛʹΤϥʔͷ఻ൖ͋ͨΓ • *%&ͷαϙʔτ͕௥͍͍͓ͭͯΒͣσόοΨ͕ͨ·ʹޮ͔ͳ͍ • ελοΫτϨʔε͕೉͍͠ ,PUMJO$PSPVUJOFಋೖͯ͠Έͯ
  30. • +40/ఆٛͰফ໣͠ͳͯ͘Αͯ͘ྑ͍ • 1SPUPCVGͷΧελϜΦϓγϣϯͰೝূͷ༗ແͳͲΛίʔυʹམͱͨ͠Γ • αʔόʔɺΞϓϦɺϑϩϯτʢ8FC $.4 ͱ୲౰ऀ͕͍Δ͕ᴥᴪ͕ى͖ʹ͍͘ • ΞϓϦͱ$.4͸ಉ͡31$Λ࢖͍ͬͯΔ

    • αʔόʔͷϦϙδτϦͷQSPUPΛDMPOFͯ͠QSPUP༻ͷผϦϙδτϦΛެ։ • 4FSWFSTUSFBNJOH31$ • ৄࡉը໘ͰϥΠϒ͕։࢝ͨ͠λΠϛϯάͰࣗಈͰ-*7&ը໘ʹભҠ͢Δͷʹར༻ • ఆظతʹ1*/(ͷΑ͏ͳϨεϙϯεΛૹͬͯΫϥΠΞϯτ͕͢Ͱʹ੾அ͍ͯͨ͠Βྫ֎͕ى͖ΔͷͰ ૹ৴ΛࢭΊΔΑ͏ͳ࣮૷Λ͍ͯ͠Δ • -PBE CBMBODFS͕Ұఆ࣌ؒͰίωΫγϣϯΛ੾ͬͯ͠·͏ͷͰΫϥΠΞϯτଆ͔Β࠶઀ଓ͍ͯ͠Δ H31$ ಋೖͯ͠Έͯ
  31. • ϚΠΫϩαʔϏε • υϝΠϯ͝ͱͷ*'͕ͱͯ΋໌֬ʹͳΔͷͰɺ݁Ռͱͯ͠ίʔυ͕៉ྷͳؾ͕͢Δ • ௨৴ઌͳͲͷαʔϏε͕ࢮΜͰ΋Өڹͳ͍Α͏ʹ࡞Βͳ͖Ό͍͚ͳ͍ͷͰΤϥʔ ϋϯυϦϯά͕ͱͯ΋ॏཁʹͳΔ • ࢮͳͳͯ͘΋σϓϩΠ࣌ͳͲॠஅ͕͋Γ͑Δ •

    αʔϏεؒʹґଘؔ܎͸͋Δ͚ΕͲɺσϓϩΠॱΛؾʹ͠ͳ͍͍ͯ͘Α͏ʹ࡞Βͳ͍ͱ͍͚ͳ͍ • ,VCFSOFUFT • ΍͸Γಠࣗͷ֓೦͕೉͍͠ • LVTUPNJ[FͰ؀ڥ͝ͱʹPWFSMBZ࡞͍ͬͯΔ • :".-ಡΉͷ͕ͭΒ͍ • ͜ΕΛݟΕ͹શઃఆ͕ॻ͍ͯ͋Δͱ͍͏ͷ͸ྑ͍ ϚΠΫϩαʔϏεɾ,VCFSOFUFT ಋೖͯ͠Έͯ
  32. • 3%#$ • ͍ͭʹ.Z42- ESJWFSͷ࣮૷͕Ͱ͖ͨͷͰɺΑ͏΍͘ಋೖͰ͖ͨ • αϯϓϧͰ͸ΧϥϜ໊ΛจࣈྻͰࢦఆ͍͕ͯͨ͠ɺ,1SPQFSUZ͔ΒऔಘͰ͖ΔΑ͏ ʹͯ͠2VYJEΈ͍ͨʹऔΕΔΑ͏ʹ͍ͯ͠Δ • 3FBDUPSʹ΋͋Δఔ౓ৄ͘͠ͳ͍ͱΤϥʔ͕ى͖ͨ࣌ͱ͔ʹௐ͕ࠪ೉͍͠

    3FBDUJWF3%#$ ಋೖͯ͠Έͯ
  33. • ৽αʔϏε։ൃʹ͋ͨΓɺ,PUMJOΛ࠷ॳ͔Β౤ೖɾ׆༻ͯ͠Α͔ͬͨ • ࠓͳΒ4QSJOH΍पลϥΠϒϥϦ΋͍ͩͿ$PSPVUJOFΛαϙʔτ͍ͯ͠Δ ·ͱΊ ˞ग़యɿIUUQTEPDTTQSJOHJPTQSJOHGSBNFXPSLEPDT.TQSJOHGSBNFXPSLSFGFSFODFMBOHVBHFTIUNMDPSPVUJOFT

  34. • ʢ౔ʣ EBZબߟձ͕͋Γ·͢ʂ • IUUQTMJOFDPSQDPNKBDBSFFSMQEBZIJSJOH • ΤϯτϦʔక੾ ʢ݄ʣத • ๻΋͍·͢

    • ͳΜͱαʔόʔαΠυਓͳΜͰ͢ • ͲΜͳ࢓ࣄʁ • େن໛αʔϏεΛ໨ࢦ͢ͱ͸͍͑ɺ࡞Δ΋ͷ͸͋·ΓมΘΓ·ͤΜ • ஍ಓʹػೳػೳ • ܾࡁɾ঎඼ɾ഑৴؅ཧʜ • ͱ͸͍ٕ͑ज़ͷྗΛ࠷େݶʹ׆͔͍ͯ͠·͢ 8&"3&)*3*/(
  35. THANK YOU