マルチモジュールでandroidアプリを救う | Scramble Tech #0

A45681c58220b58ca83a926b1be52e65?s=47 Mori Atsushi
December 18, 2019

マルチモジュールでandroidアプリを救う | Scramble Tech #0

https://scramble.connpass.com/event/157710/

tags: android, multi module, OPENREC, java, kotlin

A45681c58220b58ca83a926b1be52e65?s=128

Mori Atsushi

December 18, 2019
Tweet

Transcript

  1. ϚϧνϞδϡʔϧͰ BOESPJEΞϓϦΛ ٹ͏ ৿ಞ࢙c4DSBNCMF5FDIc

  2. ৿ಞ࢙ .PSJ"UTVTIJ ೥໌ੴߴઐ ೥ஜ೾େֶ ೥גࣜձࣾαΠόʔΤʔδΣϯτגࣜձࣾ$ZCFS;01&/3&$ ܦྺ BOESPJEXFCJPTDBNFSB εΩϧ ୈճશࠃߴઐϓϩάϥϛϯάίϯςετ,"/";"8"ΦʔϓϯσʔλΞϓϦίϯςετ -0%νϟϨϯδୈճશࠃߴઐϓϩάϥϛϯάίϯςετ

    ฏ੒೥౓ىۀՈߕࢠԂ*NBHJOF$VQ.BTIVQ"XBSET .BTIVQ"XBSET(6(&/ ίϯςετ
  3. ήʔϜ࣮گ΍ϓϨΠಈըɺ
 ϥΠϒ഑৴ָ͕͠ΊΔɺ
 ಈըίϛϡχςΟ
 ϓϥοτϑΥʔϜ

  4. σβΠϯϦχϡʔΞϧ ࡁ  ೥݄೔ ݄

  5. ೖࣾc೥݄̐ ೉ؔ+BWB ೉ؔ.7$ ೉ؔ$BMMCBDL஍ࠈ ۀքతͰ͸LPUMJOͰͷ։ൃ͕ओྲྀ (PPHMF͸.77.Λਪ঑ 3Y+BWB౳͸ར༻͍ͯ͠ͳ͍

  6. BOESPJE೥ද      01&/3&$ ϦϦʔε ,PUMJOΛ ਖ਼ࣜ։ൃݴޠʹ

    ,PUMJOpSTU +FU1BDLͷൃද "OESPJEΞϓϦͷ։ൃΛՃ଎ͤ͞Δ࣍ੈ୅ͷ
 ίϯϙʔωϯτɺπʔϧɺΞʔΩςΫνϟΨΠμϯε .77.͕ڧ͘ਪ঑͞Εɺ.7$͸ඇਪ঑ͱ͞Εͨ ,PUMJOͰͷ։ൃΛ(PPHMF͕ਖ਼ࣜʹαϙʔτ ͢ΔΑ͏ʹͳͬͨɻKBWBͱ޷͖ͳํ͕બ΂Δɻ ৽نػೳɾ৽نϥΠϒϥϦΛ,PUMJO༏ઌͰϦϦʔε͠ ͍ͯ͘ͱએݴɻ +BWBͩͱ࠷৽ػೳͷԸܙ͕ड͚ΒΕͳ͍Մೳੑ͕ +BWBͰͷ։ൃ͕ओྲྀɻ .7$.71.77.౳ɺ
 ༷ʑͳΞʔΩςΫνϟ͕ཚཱ͍ͯͨ͠
  7. ࠓ෩ʹॻ͖׵͍͑ͨʙʂ

  8. ઈରʹͳ͘ͳΒͳ͍΋ͷ

  9. ػೳ௥Ճ ઈରʹͳ͘ͳΒͳ͍΋ͷ

  10. ܧଓతʹ։ൃͭͭ͠ ৽ઃܭʹҠߦͰ͖Δ࢓૊Έ

  11. ͍͋Ͱ͌͋ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ৽ΞʔΩςΫνϟΛ࡞ͬͯঃʑʹͦͪΒʹҠߦ͍ͯ͘͠ ঃʑʹҠߦ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF

    6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  12. ༧૝͞ΕΔ͜ͱ +BWBͷ6UJMॆ࣮ͯ͠Δͦͬͪ͠࢖͓͏ʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  13. ༧૝͞ΕΔ͜ͱ ݹ͍ը໘Ͱ΋৽͍͠ػೳʹΞΫηε͠ͳ͚Ε͹ʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  14. ༧૝͞ΕΔ͜ͱ 6TF$BTFҎԼ࡞ΔͷϝϯυΫαΠ͠ɺ+BWBͷ$POUSPMMFS΁ʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  15. ༧૝͞ΕΔ͜ͱ ґଘؔ܎͕ΊͪΌΊͪΌʹʜ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  16. ৽-FHBDZ ༧૝͞ΕΔ͜ͱ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  17. ৽-FHBDZ ༧૝͞ΕΔ͜ͱ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  18. ͳʹ͕͍͚ͳ͔͔ͬͨ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ૄ݁߹Ͱ͋Δ͜ͱ͕ॏཁ ಛʹɿ৽ΞʔΩςΫνϟ͸چΞʔΩςΫνϟʹґଘͯ͠͸͍͚ͳ͍ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF

    6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  19. ͳʹ͕͍͚ͳ͔͔ͬͨ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ૄ݁߹Ͱ͋Δ͜ͱ͕ॏཁ ಛʹɿ৽ΞʔΩςΫνϟ͸چΞʔΩςΫνϟʹґଘͯ͠͸͍͚ͳ͍ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF

    6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  20. ؾΛ͚ͭͯ։ൃ͠Α͏ʂ ͓ΘΓ

  21. ຊ౰ʹେৎ෉Ͱ͔͢ʁ

  22. ਓؒ͸͠͹͠ աͪΛى͜͢

  23. "OESPJE .VMUJ .PEVMF

  24. ϚϧνϞδϡʔϧ ҰͭͷϓϩδΣΫτ಺ͰίϯύΠϧ୯ҐΛ෼ׂ͢Δ͜ͱ͕Ͱ͖Δ Ϟδϡʔϧؒͷґଘؔ܎Λ໌ࣔతʹఆٛ͢Δ ॥؀ͨ͠ґଘ͸ఆٛͰ͖ͳ͍ Ϟδϡʔϧ" Ϟδϡʔϧ#

  25. ࠓճͷྫ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ࢓૊ΈͰ༧ظͤ͵ґଘΛ๷͙ "DUJWJUZ'SBHNFOU 7JFX.PEFM 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF 6UJM

    "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM 6UJM
  26. ۩ମతʹ͸ GFBUVSFEJTDPWFS BQQ GFBUVSFXBUDI GFBUVSFTFUUJOH MFHBDZ EBUBVTFDBTF EBUBSFQPTJUPSZ EBUBTPVSDFBQJ EBUBTPVSDFMPDBM

    DPSF ˞؆ུԽͷͨΊҰ෦NPEVMFґଘ͸লུ͞Ε͍ͯΔ ˞VTFDBTFSFQPTJUPSZEBUBTPVSDFͷJOUFSGBDFͱ
 ͦͷ࣮૷͸ɺ࣮ࡍʹ͸ผNPEVMFʹͳ͍ͬͯΔ
  27. ܧଓతʹ։ൃͭͭ͠Ҡߦ͢Δ޻෉ ᶃ'SBHNFOU୯ҐͰҠߦ͢Δ ᶄԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ ᶅ#BTF"DUJWJUZͷҠߦ͸݁ہྗͮ͘ BDUJWJUZ୯ҐͰ͸େ͖͗͢ΔNPEVMFΛ௒͑ͯ'SBHNFOUΛ౉͢ʹ͸ʁ ԼҐϨΠϠʔ͸ೖΕସ͑΍͍͢ ΍Δؾͱࠜؾ

  28. 'SBHNFOU୯ҐͰҠߦ͢Δ Α͠ʂ͜ͷ"DUJWJUZʢը໘ʣΛ Ҡߦ͢Δͧʂ ͋Εɺͳ͔ͳ͔ऴΘΒͳ͍ʜ ͖͋ΒΊ·ͨ͠

  29. 'SBHNFOU୯ҐͰҠߦ͢Δ Α͠ʂ͜ͷ"DUJWJUZʢը໘ʣΛ Ҡߦ͢Δͧʂ ͋Εɺͳ͔ͳ͔ऴΘΒͳ͍ʜ ͖͋ΒΊ·ͨ͠ Ҡߦ͸যΒͣ গͣͭ͠

  30. 'SBHNFOU୯ҐͰҠߦ͢Δ ҠߦࡁΈ ະҠߦ λϒ୯ҐͰҠߦத Ұ౓ͷσόοάϦϦʔεΛখ͘͞ Ϟνϕʔγϣϯҡ࣋

  31. 'SBHNFOU୯ҐͰҠߦ͢Δ GFBUVSFOFX MFHBDZ BQQ MFHBDZͷ'SBHNFOUΛ
 औಘ͍͕ͨ͠औΕͳ͍

  32. GFBUVSFOFX MFHBDZ BQQ DPSFOBWJHBUJPO 'SBHNFOU୯ҐͰҠߦ͢Δ *OUFSGBDFΛఆٛ *OUFSGBDFΛ࣮૷ %*Ͱ*NQMΫϥεΛ഑Δ

  33. 'SBHNFOU୯ҐͰҠߦ͢Δ λϒλοϓͰ
 Ұ൪্·ͰεΫϩʔϧ BDUJWJUZ͔Β GSBHNFOUΛૢ࡞͍ͨ͠

  34. GFBUVSFOFX MFHBDZ BQQ DPSFOBWJHBUJPO 'SBHNFOU୯ҐͰҠߦ͢Δ *OUFSGBDFΛఆٛ 'SBHNFOUʹ*OUFSGBDFΛ࣮૷ͤ͞Δ 'SBHNFOUʹ*OUFSGBDFΛνΣοΫ͢Δ

  35. GFBUVSFOFX MFHBDZ BQQ DPSFOBWJHBUJPO 'SBHNFOU୯ҐͰҠߦ͢Δ *OUFSGBDFΛఆٛ *OUFSGBDFΛ࣮૷ *OUFSGBDFΛνΣοΫ͢Δ ந৅ʹґଘͤΑ

  36. 'SBHNFOU୯ҐͰҠߦ͢Δ ৽ը໘͸TDSPMMBCMFͳGSBHNFOUͰ͋Δ ͜ͱ͔͠஌Βͳ͍ TDSPMMBCMFͳGSBHNFOUʹଈ࠲ʹ
 ஔ͖׵͑Մೳ ந৅ʹґଘͤ͞ΔͱԿ͕ྑ͍͔

  37. ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ %BUB4PVSDF ৽ΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM چΞʔΩςΫνϟ ύλʔϯᶃ%BUB4PVSDFʢ-PDBM%#౳ʣ͚ͩ৽ʹࠩ͠ସ͑ ґଘ͕গͳ͘૊Έ΍͘͢ɺσʔλͷෆ੔߹౳͕ى͖ʹ͘͘ͳΔ

  38. ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ ৽ΞʔΩςΫνϟ "DUJWJUZ'SBHNFOU چΞʔΩςΫνϟ ύλʔϯᶄ6TF$BTFҎԼΛ৽ʹࠩ͠ସ͑ ৽͍͠ػೳΛ৽ΞʔΩςΫνϟͰ࡞Γɺچ"DUJWJUZ͔Βݺͼग़͢ ৽"DUJWJUZʹҠߦ͢Δͱ͖΋ָʑ 6TF$BTF 3FQPTJUPSZ %BUB4PVSDF

  39. ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ ൪֎ฤ6UJMΛNPEVMFҠߦ ڞ௨NPEVMFʹ࢖͑ͦ͏ͳVUJM͸ͲΜͲΜҠ͍ͯ͘͠ ϦϑΝΫλ͢Δ͍͍λΠϛϯάʂ 6UJM "DUJWJUZ'SBHNFOU $POUSPMMFS .PEFM

  40. #BTF"DUJWJUZͷҠߦ #BTF"DUJWJUZ͸ංେԽ͕ͪ͠ʜ ϩάܥॲཧͷڞ௨ԽݖݶपΓΞϓϦͷόοΫάϥ΢ϯυɾ ϑΥΞάϥ΢ϯυݕ஌1*1੍ޚڧ੍Ξοϓσʔτڧ੍ϩάΞ ΢τϓϨϛΞϜձһνΣοΫʜ

  41. #BTF"DUJWJUZͷҠߦ جຊઓུ ᶃࠓ·Ͱͷ#BTF"DUJWJUZΛ-FHBDZ#BTF"DUJWJUZʹ
 ϦωʔϜ͠ɺ-FHBDZNPEVMF಺ʹ͓͘ ᶄڞ௨NPEVMFʹਅ#BTF"DUJWJUZΛ࡞Γɺ
 ຊ౰ʹඞཁͳ΋ͷ͚ͩΛҠ͢ ᶅ-FHBDZ#BTF"DUJWJUZʹऔΓ࢒͞ΕͨॲཧΛ
 Α͠ͳʹ෼ղ͢Δ

  42. #BTF"DUJWJUZͷҠߦ #BTF"DUJWJUZͷ෼ղϓϥϯ ॲཧͷڞ௨ԽΛ͍ͨ͠ 6UJM΍*OUFSGBDFʹ੾Γग़͢ 'SBHNFOUͱ"DUJWJUZɺ'SBHNFOUؒͰσʔλͷ΍ΓऔΓ͕͍ͨ͠ "DUJWJUZTDPQFͷ7JFX.PEFMΛ࢖͏ ΞϓϦͷCBDLHSPVOE GPSFHSPVOEΛݕ஌͍ͨ͠ 1SPDFTT-JGFDZDMF0XOFSΛ࢖͏ Ͳ͏ʹ΋෼཭Ͱ͖ͳ͍͚Ͳɺ৽ΞʔΩςΫνϟͰ͸࢖͍ͨ͘ͳ͍

    *OUFSGBDFʹ੾ͬͯ!%FQSFDBUFEΛ͚ͭΔ
  43. #BTF"DUJWJUZͷҠߦ #BTF"DUJWJUZͷ෼ղϓϥϯ ॲཧͷڞ௨ԽΛ͍ͨ͠ 6UJM΍*OUFSGBDFʹ੾Γग़͢ 'SBHNFOUͱ"DUJWJUZɺ'SBHNFOUؒͰσʔλͷ΍ΓऔΓ͕͍ͨ͠ "DUJWJUZTDPQFͷ7JFX.PEFMΛ࢖͏ ΞϓϦͷCBDLHSPVOE GPSFHSPVOEΛݕ஌͍ͨ͠ 1SPDFTT-JGFDZDMF0XOFSΛ࢖͏ Ͳ͏ʹ΋෼཭Ͱ͖ͳ͍͚Ͳɺ৽ΞʔΩςΫνϟͰ͸࢖͍ͨ͘ͳ͍

    *OUFSGBDFʹ੾ͬͯ!%FQSFDBUFEΛ͚ͭΔ
  44. ·ͱΊ ϚϧνϞδϡʔϧΛ࢖ͬͯ৽ઃܭͱچઃܭΛ੾Γ෼͚Δͱ ґଘؔ܎͕ڧ੍Ͱ͖ͯྑ͍ ϞδϡʔϧΛ௒͑Δ৔߹͸ந৅ʹґଘͤ͞ΔΑ͏ʹ͢Δ ݁ߏͰ৐Γ੾Βͳ͍ͱ͍͚ͳ͍ͱ͜Ζ΋ଟ͍