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

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

LINE Developers

November 21, 2021
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

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

    νϟοτͷ࣭໰ճ౴΍ ίϛϡχέʔγϣϯ ؾʹͳΔϙΠϯτΛ ௚઀࣭໰Ͱ͖Δ ಈతͳ ങ͍෺ͷָ͠͞ εϚϗͰ खܰʹ഑৴ -*7&ࢹௌ ߪೖ
  2. • 8FCαΠτ -*'' • ηϥʔ޲͚$.4 • ηϥʔ޲͚ΞϓϦ • ࣾ಺$.4 •

    -*/&Ͱͷ௨஌ϝοηʔδͷૹ৴ͳͲ Ϣʔβʔ޲͚ʹ࡞Δ΋ͷ
  3. • গ਺ਫ਼Ӷ • νʔϜ͸ΞϓϦͱαʔόʔ • ҰํͰઐ໳νʔϜ͕ଘࡏ • ϑϩϯτΤϯυ • -*/&1BZܾࡁ

    • 35.1ɾ)-4഑৴ • ਫ਼ࢉ FUD ͱ͜ΖͰ-*/&ͷ։ൃελΠϧͱࠓճͷϓϩδΣΫτͷ؀ڥ • ͪΐ͏Ͳ͍͍λΠϛϯά • աڈͷܦݧ͔Βͷվળ • ৽͍ٕ͠ज़ͷΩϟονΞοϓ • ࣮ݧతʹࢼͤΔ؀ڥ
  4. ྫ ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM • MBVODIDPSPVUJOFCVJMEFSಠ ཱͯ͠ฒߦʹಈ͘$PSPVUJOFΛ ࡞Δ • EFMBZTVTQFOEJOHGVODUJPO ࢦఆ͞Εͨ࣌ؒTVTQFOE͢Δɻ $PSPVUJOFΛTVTQFOEͯ͠΋ͦ

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

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

    • DPSPVUJOF4DPQF \ʜ^Λ࢖͏ͱࣗ෼ͰDPSPVUJOF4DPQF͕࡞Ε Δ • SVO#MPDLJOHͱҧͬͯεϨουΛϒϩοΫ͠ͳ͍ͷͰTVTQFOEJ OHGVODUJPOʹͳ͍ͬͯΔ • ࠨͷྫͰ͸DPSPVUJOF4DPQF಺ͷͭͷMBVODI\ʜ ^͸ฒྻʹಈ ࡞͢Δ • EP8PSME͸྆ํ͕׬ྃ͠ͳ͍ͱ׬ྃ͠ͳ͍
  7. • 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
  8. • HSQDKBWB JPHJUIVCMPHOFUHSQDTQSJOHCPPUTUBSUFS˞ • HSQDLPUMJOʹҠߦ͢Δܭըத • ੜ੒͞ΕͨGVODUJPOͰDPSPVUJOFΛ࢖͑ΔΑ͏ ʹ$PSPVUJOF-BVODIFSͱ͍͏ΫϥεΛ࡞੒ • ʢ༨ஊʣ31$ͷ໋໊͸VCFSͷ1SPUPCVG

    4UZMF (VJEF7 ˞˞ʹ͕͍ͨͬͯ͠Δ ,PUMJO$PSPVUJOFͱH31$ ˞ग़య IUUQTHJUIVCDPN-PH/FUHSQDTQSJOHCPPUTUBSUFS ˞˞ग़య IUUQTHJUIVCDPNVCFSQSPUPUPPMCMPCEFWTUZMF3&"%.&NE
  9. • 4QSJOH%BUB3FEJT 3FBDUPS • PSHTQSJOHGSBNFXPSLCPPUTQSJOHCPPUTUBSUFSE BUBSFEJTSFBDUJWF • 3FBDUJWF3FEJT0QFSBUJPOT&YUFOTJPOT˞͕ • 3FBDUJWF3FEJT0QFSBUJPOTʹTVTQFOEJOHGVODUJPO

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

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

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

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

    αʔϏεؒʹґଘؔ܎͸͋Δ͚ΕͲɺσϓϩΠॱΛؾʹ͠ͳ͍͍ͯ͘Α͏ʹ࡞Βͳ͍ͱ͍͚ͳ͍ • ,VCFSOFUFT • ΍͸Γಠࣗͷ֓೦͕೉͍͠ • LVTUPNJ[FͰ؀ڥ͝ͱʹPWFSMBZ࡞͍ͬͯΔ • :".-ಡΉͷ͕ͭΒ͍ • ͜ΕΛݟΕ͹શઃఆ͕ॻ͍ͯ͋Δͱ͍͏ͷ͸ྑ͍ ϚΠΫϩαʔϏεɾ,VCFSOFUFT ಋೖͯ͠Έͯ
  14. • ʢ౔ʣ EBZબߟձ͕͋Γ·͢ʂ • IUUQTMJOFDPSQDPNKBDBSFFSMQEBZIJSJOH • ΤϯτϦʔక੾ ʢ݄ʣத • ๻΋͍·͢

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