$30 off During Our Annual Pro Sale. View Details »

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
PRO

November 21, 2021
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

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

    View Slide

  2. ؠ୩ ໌
    -*/&גࣜձࣾ ։ൃ,νʔϜ
    ೥ೖࣾ
    -*/& -*7&ͷ"OESPJEΞϓϦ΍-*/&
    ϊϕϧͷJ04ΞϓϦͳͲͷΫϥΠΞϯ
    τΤϯδχΞΛܦͯɺ
    ೥͔Β
    ϥΠϒίϚʔεʮ-*7:ʯͷαʔ
    όʔαΠυΛ΍͍ͬͯ·͢
    *XBZB "LJSB

    View Slide

  3. • -*/&Ͱࠓճ৽͘͠։ൃͨ͠ϥΠϒίϚʔεαʔϏεͷ͝঺հ
    • ։ൃʹ͋ͨͬͯͷཁ݅ͱٕज़બఆ
    • ,PUMJO$PSPVUJOFͷઆ໌
    • ,PUMJO$PSPVUJOF 4QSJOH H31$ 3%#$ 3FEJTʣ࣮ફ
    ࠓ೔͓࿩͢͠Δ಺༰

    View Slide

  4. -*/&ͷϥΠϒίϚʔεαʔϏε
    ʹςετϩʔϯν
    ৽αʔϏε -*7: ެ։ʂ
    • -*/&্Ͱࢹௌɾߪೖ·Ͱ׬݁
    • ϥΠϒ഑৴Λݟͳ͕ΒλοϓͰ঎඼͕ങ͑Δ
    • ϦΞϧλΠϜͳΠϯλϥΫγϣϯ

    View Slide

  5. ϥΠϒίϚʔεαʔϏεʁ
    • ϥΠϒ഑৴Λ͠ͳ͕Β঎඼Λ঺հɾߪೖͰ͖ΔαʔϏε
    ηϥʔ Ϣʔβʔ
    ϦΞϧλΠϜͰ
    ߪങঢ়گ͕Θ͔Δ
    ࢹௌ͠ͳ͕Β
    ͦͷ৔Ͱങ͑Δ
    -*7&Ͱ঎඼঺հ
    νϟοτͷ࣭໰ճ౴΍
    ίϛϡχέʔγϣϯ
    ؾʹͳΔϙΠϯτΛ
    ௚઀࣭໰Ͱ͖Δ
    ಈతͳ
    ങ͍෺ͷָ͠͞
    εϚϗͰ
    खܰʹ഑৴
    -*7&ࢹௌ
    ߪೖ

    View Slide

  6. ߪೖϑΟʔυόοΫ νϟοτ ஫จ ৄࡉը໘
    -*/&্Ͱ࢖͑ΔϥΠϒίϚʔεαʔϏε
    -*/&'SPOUFOE'SBNFXPSL-*''ͷ׆༻
    • -*''8FCΞϓϦέʔγϣϯΛ-*/&্Ͱಈ͔ͤΔϑϨʔϜϫʔΫ
    • ͲͳͨͰ΋࡞Ε·͢ IUUQTMJGGTUBSUFSOFUMJGZBQQ

    View Slide

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

    View Slide

  8. ηϥʔ޲͚ΞϓϦ 'MVUUFS

    ഑৴ ొ࿥ɾฤू ϓϨϏϡʔ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. • 8FCαΠτ -*''

    • ηϥʔ޲͚$.4
    • ηϥʔ޲͚ΞϓϦ
    • ࣾ಺$.4
    • -*/&Ͱͷ௨஌ϝοηʔδͷૹ৴ͳͲ
    Ϣʔβʔ޲͚ʹ࡞Δ΋ͷ

    View Slide

  13. اըͱ૬ஊ
    جຊతͳཁ݅ͷܾఆ
    ϥΠϒ
    ͷཁ݅
    ίϚʔε
    ͷཁ݅
    ࡞Δ΋ͷ
    ͨͪ
    3FRVJSF
    NFOU
    3FRVJSF
    NFOU
    3FRVJSF
    NFOU

    View Slide

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

    View Slide

  15. • গ਺ਫ਼Ӷ
    • νʔϜ͸ΞϓϦͱαʔόʔ
    • ҰํͰઐ໳νʔϜ͕ଘࡏ
    • ϑϩϯτΤϯυ
    • -*/&1BZܾࡁ
    • 35.1ɾ)-4഑৴
    • ਫ਼ࢉ FUD
    ͱ͜ΖͰ-*/&ͷ։ൃελΠϧͱࠓճͷϓϩδΣΫτͷ؀ڥ
    • ͪΐ͏Ͳ͍͍λΠϛϯά
    • աڈͷܦݧ͔Βͷվળ
    • ৽͍ٕ͠ज़ͷΩϟονΞοϓ
    • ࣮ݧతʹࢼͤΔ؀ڥ

    View Slide

  16. • ϚΠΫϩαʔϏε
    ϩδοΫͷ͍ͩͿҟͳΔཁ݅ʢϥΠϒͱίϚʔεͳͲʣ͕͋ΔͷͰ෼཭͠΍͍͢
    8FCαΠτ΍$.4ͳͲͷෳ਺ͷίϯϙʔωϯτ͕͋Δ
    গਓ਺Ͱ։ൃ͢Δ͕ϝϦοτ͕͋Δͱ൑அ
    • ,VCFSOFUFT
    ϚΠΫϩαʔϏεͷͨΊ
    εέʔϥϏϦςΟΛ୲อ
    ࣾ಺ʹ͸.BOBHFEͳ,VCFSOFUFTΫϥελΛӡ༻͢ΔνʔϜ͕͋Δ
    બఆٕͨ͠ज़

    View Slide

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

    View Slide

  18. ΞʔΩςΫνϟ

    View Slide

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

    • $BMMCBDL)FMM΍)PU$PMEͷѻ͍ͳͲετϦʔϜͷ೉͠͞
    ϚΠΫϩαʔϏεʹ͓͚ΔύϑΥʔϚϯε

    View Slide

  20. • $PSPVUJOFʜதஅՄೳ TVTQFOEBCMF
    ͳॲཧ
    • 5ISFBEʹࣅ͍ͯΔ͕ΑΓܰྔͰεΠονͷίετ΋ͳ͍
    • ಛఆͷ5ISFBEʹ݁ͼ͔ͭͳ͍
    org.jetbrains.kotlinx:kotlinx-coroutines-core
    ͦ͜Ͱ,PUMJO$PSPVUJOF LPUMJOYDPSPVUJOF

    ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM

    View Slide


  21. ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM
    • MBVODIDPSPVUJOFCVJMEFSಠ
    ཱͯ͠ฒߦʹಈ͘$PSPVUJOFΛ
    ࡞Δ
    • EFMBZTVTQFOEJOHGVODUJPO
    ࢦఆ͞Εͨ࣌ؒTVTQFOE͢Δɻ
    $PSPVUJOFΛTVTQFOEͯ͠΋ͦ
    ͷεϨου͸ϒϩοΫ͠ͳ͍ɻ
    ଞͷDPSPVUJOF΍ίʔυ͸ಈ͘
    • SVO#MPDLJOHDPSPVUJOFCVJME
    FSී௨ͷಉظతͳίʔυ͔Β
    DPSPVUJOFΛىಈ͢Δɻ׬ྃ͢
    Δ·Ͱىಈ͞ΕͨεϨουΛϒ
    ϩοΫ͢Δ

    View Slide

  22. 4VTQFOEJOHGVODUJPO
    ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM
    • TVTQFOE म০ࢠΛGVODUJPOʹ͚ͭΔͱ
    TVTQFOEJOHGVODUJPOʹͳΔ
    • 4VTQFOEJOHGVODUJPO͸ଞͷTVTQFOEJOHGVODUJ
    POΛݺͼग़ͤΔ
    • 4VTQFOEJOHGVODUJPO͸$PSPVUJOF4DPQF͔ଞͷ
    TVTQFOEJOHGVODUJPO͔Β͔͠ݺͼग़ͤͳ͍
    • ͜ΕΛ܁Γฦͯ͠΄ͱΜͲTVTQFOEJOHGVODUJPO
    Λॻ͘͜ͱʹͳΔ

    View Slide

  23. 4USVDUVSFE$PODVSSFODZ
    ˞ग़యɿIUUQTLPUMJOMBOHPSHEPDTDPSPVUJOFTCBTJDTIUNM
    • $PSPVUJOF͸DPSPVUJOFʢݫີʹ͸DPSPVUJOF4DPQFʣͷத͔Β
    ͔͠ىಈͰ͖ͳ͍
    • ͖ͬ͞ͷྫͰ͸SVO#MPDLJOH͕DPSPVUJOF4DPQF
    • ֎ଆͷDPSPVUJOF͸಺ଆͷDPSPVUJOF͕શ෦׬ྃ͠ͳ͍ͱ׬ྃ͠
    ͳ͍
    • DPSPVUJOF4DPQF \ʜ^Λ࢖͏ͱࣗ෼ͰDPSPVUJOF4DPQF͕࡞Ε
    Δ
    • SVO#MPDLJOHͱҧͬͯεϨουΛϒϩοΫ͠ͳ͍ͷͰTVTQFOEJ
    OHGVODUJPOʹͳ͍ͬͯΔ
    • ࠨͷྫͰ͸DPSPVUJOF4DPQF಺ͷͭͷMBVODI\ʜ ^͸ฒྻʹಈ
    ࡞͢Δ
    • EP8PSME͸྆ํ͕׬ྃ͠ͳ͍ͱ׬ྃ͠ͳ͍

    View Slide

  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

    View Slide

  25. • HSQDKBWB
    JPHJUIVCMPHOFUHSQDTQSJOHCPPUTUBSUFS˞
    • HSQDLPUMJOʹҠߦ͢Δܭըத
    • ੜ੒͞ΕͨGVODUJPOͰDPSPVUJOFΛ࢖͑ΔΑ͏
    ʹ$PSPVUJOF-BVODIFSͱ͍͏ΫϥεΛ࡞੒
    • ʢ༨ஊʣ31$ͷ໋໊͸VCFSͷ1SPUPCVG 4UZMF
    (VJEF7 ˞˞ʹ͕͍ͨͬͯ͠Δ
    ,PUMJO$PSPVUJOFͱH31$
    ˞ग़య IUUQTHJUIVCDPN-PH/FUHSQDTQSJOHCPPUTUBSUFS
    ˞˞ग़య IUUQTHJUIVCDPNVCFSQSPUPUPPMCMPCEFWTUZMF3&"%.&NE

    View Slide

  26. $PSPVUJOFͰH31$ͷϨεϙϯεΛฦ͢
    • $PSPVUJOF&YDFQUJPO)BOEMFSͰΤ
    ϥʔϋϯυϥΛ$PSPVUJOF4DPQFʹ
    ઃఆ
    • ྫ֎ൃੜ࣌͸SFTQPOTF0CTFSWFS
    PO&SSPSͰΤϥʔฦ͢
    • MBVODI಺ͰҾ਺ͷTVTQFOEJOHMBN
    CEBΛ࣮ߦͯ͠SFTQPOTF0CTFSWFS
    PO/FYUͰϨεϙϯεΛฦ͍ͯ͠Δ

    View Slide

  27. • 4QSJOH%BUB3FEJT3FBDUPS
    • PSHTQSJOHGSBNFXPSLCPPUTQSJOHCPPUTUBSUFSE
    BUBSFEJTSFBDUJWF
    • 3FBDUJWF3FEJT0QFSBUJPOT&YUFOTJPOT˞͕
    • 3FBDUJWF3FEJT0QFSBUJPOTʹTVTQFOEJOHGVODUJPO
    Λ֦ுͯ͠௥Ճ
    • HFU"OE"XBJU
    • TFU"OE"XBJU ʜ
    • .POP5Ͱؼͬͯ͘Δϝιουʹରͯ͠
    BXBJU4JOHMF
    Ͱ΋0,
    ,PUMJO$PSPVUJOFͱ3FBDUJWF3FEJT
    ˞ग़యɿIUUQTHJUIVCDPNTQSJOHQSPKFDUTTQSJOHEBUBSFEJTCMPCNBJOTSDNBJOLPUMJOPSHTQSJOHGSBNFXPSLEBUBSFEJTDPSF3FBDUJWF3FEJT0QFSBUJPOT&YUFOTJPOTLU

    View Slide

  28. • 4QSJOH%BUB3%#$
    • PSHTQSJOHGSBNFXPSLEBUBTQSJOHEBUBSECD
    • 3%#$ʜϦΞΫςΟϒʹ42-σʔλϕʔεͱ࿈ܞ͢Δ
    ࢓༷˞
    • .Z42- %SJWFS EFWNJLVSECDNZTRM ˞˞
    • %#ͷεΩʔϚ͔ΒJOTFSUTFMFDU༻ͷEBUBDMBTTΛੜ੒͢Δ
    HSBEMFλεΫΛ։ൃ
    ,PUMJO$PSPVUJOFͱ3%#$ 3FBDUJWF3FMBUJPOBM%BUBCBTF$POOFDUJWJUZ

    ˞ग़యɿ
    IUUQTTQSJOHQMFJBEFTJPQSPKFDUTTQSJOHEBUBSECD
    IUUQTTQSJOHQMFJBEFTJPTQSJOHEBUBSECDEPDTSFGFSFODFIUNMSFGFSFODF
    ˞˞ग़యɿ
    IUUQTHJUIVCDPNNJSSPNVUUISECDNZTRM

    View Slide

  29. • 1SPT
    • ίʔυͷݟ௨͕͠ྑ͍
    • ೉͘͠ͳΓ͕ͪͳඇಉظॲཧΛ؆ܿʹ͔͚Δ
    • ύϑΥʔϚϯε͕͍͍
    • $POT
    • 4USVDUVSFE $PODVSSFODZͷ֓೦͕΍΍ͱ͖ͬͭʹ͍͘
    • ಛʹΤϥʔͷ఻ൖ͋ͨΓ
    • *%&ͷαϙʔτ͕௥͍͍͓ͭͯΒͣσόοΨ͕ͨ·ʹޮ͔ͳ͍
    • ελοΫτϨʔε͕೉͍͠
    ,PUMJO$PSPVUJOFಋೖͯ͠Έͯ

    View Slide

  30. • +40/ఆٛͰফ໣͠ͳͯ͘Αͯ͘ྑ͍
    • 1SPUPCVGͷΧελϜΦϓγϣϯͰೝূͷ༗ແͳͲΛίʔυʹམͱͨ͠Γ
    • αʔόʔɺΞϓϦɺϑϩϯτʢ8FC $.4
    ͱ୲౰ऀ͕͍Δ͕ᴥᴪ͕ى͖ʹ͍͘
    • ΞϓϦͱ$.4͸ಉ͡31$Λ࢖͍ͬͯΔ
    • αʔόʔͷϦϙδτϦͷQSPUPΛDMPOFͯ͠QSPUP༻ͷผϦϙδτϦΛެ։
    • 4FSWFSTUSFBNJOH31$
    • ৄࡉը໘ͰϥΠϒ͕։࢝ͨ͠λΠϛϯάͰࣗಈͰ-*7&ը໘ʹભҠ͢Δͷʹར༻
    • ఆظతʹ1*/(ͷΑ͏ͳϨεϙϯεΛૹͬͯΫϥΠΞϯτ͕͢Ͱʹ੾அ͍ͯͨ͠Βྫ֎͕ى͖ΔͷͰ
    ૹ৴ΛࢭΊΔΑ͏ͳ࣮૷Λ͍ͯ͠Δ
    • -PBE CBMBODFS͕Ұఆ࣌ؒͰίωΫγϣϯΛ੾ͬͯ͠·͏ͷͰΫϥΠΞϯτଆ͔Β࠶઀ଓ͍ͯ͠Δ
    H31$ ಋೖͯ͠Έͯ

    View Slide

  31. • ϚΠΫϩαʔϏε
    • υϝΠϯ͝ͱͷ*'͕ͱͯ΋໌֬ʹͳΔͷͰɺ݁Ռͱͯ͠ίʔυ͕៉ྷͳؾ͕͢Δ
    • ௨৴ઌͳͲͷαʔϏε͕ࢮΜͰ΋Өڹͳ͍Α͏ʹ࡞Βͳ͖Ό͍͚ͳ͍ͷͰΤϥʔ
    ϋϯυϦϯά͕ͱͯ΋ॏཁʹͳΔ
    • ࢮͳͳͯ͘΋σϓϩΠ࣌ͳͲॠஅ͕͋Γ͑Δ
    • αʔϏεؒʹґଘؔ܎͸͋Δ͚ΕͲɺσϓϩΠॱΛؾʹ͠ͳ͍͍ͯ͘Α͏ʹ࡞Βͳ͍ͱ͍͚ͳ͍
    • ,VCFSOFUFT
    • ΍͸Γಠࣗͷ֓೦͕೉͍͠
    • LVTUPNJ[FͰ؀ڥ͝ͱʹPWFSMBZ࡞͍ͬͯΔ
    • :".-ಡΉͷ͕ͭΒ͍
    • ͜ΕΛݟΕ͹શઃఆ͕ॻ͍ͯ͋Δͱ͍͏ͷ͸ྑ͍
    ϚΠΫϩαʔϏεɾ,VCFSOFUFT ಋೖͯ͠Έͯ

    View Slide

  32. • 3%#$
    • ͍ͭʹ.Z42- ESJWFSͷ࣮૷͕Ͱ͖ͨͷͰɺΑ͏΍͘ಋೖͰ͖ͨ
    • αϯϓϧͰ͸ΧϥϜ໊ΛจࣈྻͰࢦఆ͍͕ͯͨ͠ɺ,1SPQFSUZ͔ΒऔಘͰ͖ΔΑ͏
    ʹͯ͠2VYJEΈ͍ͨʹऔΕΔΑ͏ʹ͍ͯ͠Δ
    • 3FBDUPSʹ΋͋Δఔ౓ৄ͘͠ͳ͍ͱΤϥʔ͕ى͖ͨ࣌ͱ͔ʹௐ͕ࠪ೉͍͠
    3FBDUJWF3%#$ ಋೖͯ͠Έͯ

    View Slide

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

    View Slide

  34. • ʢ౔ʣ EBZબߟձ͕͋Γ·͢ʂ
    • IUUQTMJOFDPSQDPNKBDBSFFSMQEBZIJSJOH
    • ΤϯτϦʔక੾ ʢ݄ʣத
    • ๻΋͍·͢
    • ͳΜͱαʔόʔαΠυਓͳΜͰ͢
    • ͲΜͳ࢓ࣄʁ
    • େن໛αʔϏεΛ໨ࢦ͢ͱ͸͍͑ɺ࡞Δ΋ͷ͸͋·ΓมΘΓ·ͤΜ
    • ஍ಓʹػೳػೳ
    • ܾࡁɾ঎඼ɾ഑৴؅ཧʜ
    • ͱ͸͍ٕ͑ज़ͷྗΛ࠷େݶʹ׆͔͍ͯ͠·͢
    8&"3&)*3*/(

    View Slide

  35. THANK YOU

    View Slide