https://scramble.connpass.com/event/157710/
tags: android, multi module, OPENREC, java, kotlin
ϚϧνϞδϡʔϧͰBOESPJEΞϓϦΛٹ͏ಞ࢙c4DSBNCMF5FDIc
View Slide
ಞ࢙.PSJ"UTVTIJ໌ੴߴઐஜେֶגࣜձࣾαΠόʔΤʔδΣϯτגࣜձࣾ$ZCFS;01&/3&$ܦྺBOESPJEXFCJPTDBNFSBεΩϧୈճશࠃߴઐϓϩάϥϛϯάίϯςετ,"/";"8"ΦʔϓϯσʔλΞϓϦίϯςετ-0%νϟϨϯδୈճશࠃߴઐϓϩάϥϛϯάίϯςετฏىۀՈߕࢠԂ*NBHJOF$VQ.BTIVQ"XBSET.BTIVQ"XBSET(6(&/ίϯςετ
ήʔϜ࣮گϓϨΠಈըɺ ϥΠϒ৴ָ͕͠ΊΔɺ ಈըίϛϡχςΟ ϓϥοτϑΥʔϜ
σβΠϯϦχϡʔΞϧ ࡁ݄ ݄
ೖࣾc݄̐ؔ+BWBؔ.7$ؔ$BMMCBDLࠈۀքతͰLPUMJOͰͷ։ൃ͕ओྲྀ(PPHMF.77.Λਪ3Y+BWBར༻͍ͯ͠ͳ͍
BOESPJEද01&/3&$ϦϦʔε,PUMJOΛਖ਼ࣜ։ൃݴޠʹ,PUMJOpSTU+FU1BDLͷൃද"OESPJEΞϓϦͷ։ൃΛՃͤ͞Δ࣍ੈͷ ίϯϙʔωϯτɺπʔϧɺΞʔΩςΫνϟΨΠμϯε.77.͕ڧ͘ਪ͞Εɺ.7$ඇਪͱ͞Εͨ,PUMJOͰͷ։ൃΛ(PPHMF͕ਖ਼ࣜʹαϙʔτ͢ΔΑ͏ʹͳͬͨɻKBWBͱ͖ͳํ͕બΔɻ৽نػೳɾ৽نϥΠϒϥϦΛ,PUMJO༏ઌͰϦϦʔε͍ͯ͘͠ͱએݴɻ+BWBͩͱ࠷৽ػೳͷԸܙ͕ड͚ΒΕͳ͍Մೳੑ͕+BWBͰͷ։ൃ͕ओྲྀɻ.7$.71.77.ɺ ༷ʑͳΞʔΩςΫνϟ͕ཚཱ͍ͯͨ͠
ࠓ෩ʹॻ͖͍͑ͨʙʂ
ઈରʹͳ͘ͳΒͳ͍ͷ
ػೳՃઈରʹͳ͘ͳΒͳ͍ͷ
ܧଓతʹ։ൃͭͭ͠৽ઃܭʹҠߦͰ͖ΔΈ
͍͋Ͱ͌͋৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ৽ΞʔΩςΫνϟΛ࡞ͬͯঃʑʹͦͪΒʹҠߦ͍ͯ͘͠ঃʑʹҠߦ"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
༧͞ΕΔ͜ͱ+BWBͷ6UJMॆ࣮ͯ͠Δ͓ͦͬͪ͠͏ʜ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
༧͞ΕΔ͜ͱݹ͍ը໘Ͱ৽͍͠ػೳʹΞΫηε͠ͳ͚Εʜ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
༧͞ΕΔ͜ͱ6TF$BTFҎԼ࡞ΔͷϝϯυΫαΠ͠ɺ+BWBͷ$POUSPMMFSʜ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
༧͞ΕΔ͜ͱґଘ͕ؔΊͪΌΊͪΌʹʜ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
৽-FHBDZ༧͞ΕΔ͜ͱ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟ"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
ͳʹ͕͍͚ͳ͔͔ͬͨ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟૄ݁߹Ͱ͋Δ͜ͱ͕ॏཁಛʹɿ৽ΞʔΩςΫνϟچΞʔΩςΫνϟʹґଘ͍͚ͯ͠ͳ͍"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
ؾΛ͚ͭͯ։ൃ͠Α͏ʂ͓ΘΓ
ຊʹେৎͰ͔͢ʁ
ਓؒ͠͠աͪΛى͜͢
"OESPJE.VMUJ.PEVMF
ϚϧνϞδϡʔϧҰͭͷϓϩδΣΫτͰίϯύΠϧ୯ҐΛׂ͢Δ͜ͱ͕Ͱ͖ΔϞδϡʔϧؒͷґଘؔΛ໌ࣔతʹఆٛ͢Δ॥ͨ͠ґଘఆٛͰ͖ͳ͍Ϟδϡʔϧ" Ϟδϡʔϧ#
ࠓճͷྫ৽ΞʔΩςΫνϟ چΞʔΩςΫνϟΈͰ༧ظͤ͵ґଘΛ͙"DUJWJUZ'SBHNFOU7JFX.PEFM6TF$BTF3FQPTJUPSZ%BUB4PVSDF6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM6UJM
۩ମతʹGFBUVSFEJTDPWFSBQQGFBUVSFXBUDI GFBUVSFTFUUJOHMFHBDZEBUBVTFDBTFEBUBSFQPTJUPSZEBUBTPVSDFBQJ EBUBTPVSDFMPDBMDPSF˞؆ུԽͷͨΊҰ෦NPEVMFґଘলུ͞Ε͍ͯΔ˞VTFDBTFSFQPTJUPSZEBUBTPVSDFͷJOUFSGBDFͱ ͦͷ࣮ɺ࣮ࡍʹผNPEVMFʹͳ͍ͬͯΔ
ܧଓతʹ։ൃͭͭ͠Ҡߦ͢Δᶃ'SBHNFOU୯ҐͰҠߦ͢ΔᶄԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δᶅ#BTF"DUJWJUZͷҠߦ݁ہྗͮ͘BDUJWJUZ୯ҐͰେ͖͗͢ΔNPEVMFΛ͑ͯ'SBHNFOUΛ͢ʹʁԼҐϨΠϠʔೖΕସ͍͑͢Δؾͱࠜؾ
'SBHNFOU୯ҐͰҠߦ͢Δ Α͠ʂ͜ͷ"DUJWJUZʢը໘ʣΛҠߦ͢Δͧʂ ͋Εɺͳ͔ͳ͔ऴΘΒͳ͍ʜ ͖͋ΒΊ·ͨ͠
'SBHNFOU୯ҐͰҠߦ͢Δ Α͠ʂ͜ͷ"DUJWJUZʢը໘ʣΛҠߦ͢Δͧʂ ͋Εɺͳ͔ͳ͔ऴΘΒͳ͍ʜ ͖͋ΒΊ·ͨ͠ҠߦযΒͣগͣͭ͠
'SBHNFOU୯ҐͰҠߦ͢ΔҠߦࡁΈ ະҠߦλϒ୯ҐͰҠߦதҰͷσόοάϦϦʔεΛখ͘͞Ϟνϕʔγϣϯҡ࣋
'SBHNFOU୯ҐͰҠߦ͢ΔGFBUVSFOFX MFHBDZBQQMFHBDZͷ'SBHNFOUΛ औಘ͍͕ͨ͠औΕͳ͍
GFBUVSFOFX MFHBDZBQQDPSFOBWJHBUJPO'SBHNFOU୯ҐͰҠߦ͢Δ*OUFSGBDFΛఆٛ*OUFSGBDFΛ࣮%*Ͱ*NQMΫϥεΛΔ
'SBHNFOU୯ҐͰҠߦ͢ΔλϒλοϓͰ Ұ൪্·ͰεΫϩʔϧBDUJWJUZ͔ΒGSBHNFOUΛૢ࡞͍ͨ͠
GFBUVSFOFX MFHBDZBQQDPSFOBWJHBUJPO'SBHNFOU୯ҐͰҠߦ͢Δ*OUFSGBDFΛఆٛ'SBHNFOUʹ*OUFSGBDFΛ࣮ͤ͞Δ'SBHNFOUʹ*OUFSGBDFΛνΣοΫ͢Δ
GFBUVSFOFX MFHBDZBQQDPSFOBWJHBUJPO'SBHNFOU୯ҐͰҠߦ͢Δ*OUFSGBDFΛఆٛ*OUFSGBDFΛ࣮*OUFSGBDFΛνΣοΫ͢ΔநʹґଘͤΑ
'SBHNFOU୯ҐͰҠߦ͢Δ৽ը໘TDSPMMBCMFͳGSBHNFOUͰ͋Δ͜ͱ͔͠Βͳ͍TDSPMMBCMFͳGSBHNFOUʹଈ࠲ʹ ஔ͖͑Մೳநʹґଘͤ͞ΔͱԿ͕ྑ͍͔
ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ%BUB4PVSDF৽ΞʔΩςΫνϟ"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFMچΞʔΩςΫνϟύλʔϯᶃ%BUB4PVSDFʢ-PDBM%#ʣ͚ͩ৽ʹࠩ͠ସ͑ґଘ͕গͳ͘Έ͘͢ɺσʔλͷෆ߹͕ى͖ʹ͘͘ͳΔ
ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ৽ΞʔΩςΫνϟ"DUJWJUZ'SBHNFOUچΞʔΩςΫνϟύλʔϯᶄ6TF$BTFҎԼΛ৽ʹࠩ͠ସ͑৽͍͠ػೳΛ৽ΞʔΩςΫνϟͰ࡞Γɺچ"DUJWJUZ͔Βݺͼग़͢৽"DUJWJUZʹҠߦ͢Δͱָ͖ʑ6TF$BTF3FQPTJUPSZ%BUB4PVSDF
ԼҐϨΠϠʔ͔ΒੵۃతʹҠߦ͢Δ৽ΞʔΩςΫνϟچΞʔΩςΫνϟ൪֎ฤ6UJMΛNPEVMFҠߦڞ௨NPEVMFʹ͑ͦ͏ͳVUJMͲΜͲΜҠ͍ͯ͘͠ϦϑΝΫλ͢Δ͍͍λΠϛϯάʂ6UJM"DUJWJUZ'SBHNFOU$POUSPMMFS.PEFM
#BTF"DUJWJUZͷҠߦ#BTF"DUJWJUZංେԽ͕ͪ͠ʜϩάܥॲཧͷڞ௨ԽݖݶपΓΞϓϦͷόοΫάϥϯυɾϑΥΞάϥϯυݕ1*1੍ޚڧ੍Ξοϓσʔτڧ੍ϩάΞτϓϨϛΞϜձһνΣοΫʜ
#BTF"DUJWJUZͷҠߦجຊઓུᶃࠓ·Ͱͷ#BTF"DUJWJUZΛ-FHBDZ#BTF"DUJWJUZʹ ϦωʔϜ͠ɺ-FHBDZNPEVMFʹ͓͘ᶄڞ௨NPEVMFʹਅ#BTF"DUJWJUZΛ࡞Γɺ ຊʹඞཁͳͷ͚ͩΛҠ͢ᶅ-FHBDZ#BTF"DUJWJUZʹऔΓ͞ΕͨॲཧΛ Α͠ͳʹղ͢Δ
#BTF"DUJWJUZͷҠߦ#BTF"DUJWJUZͷղϓϥϯॲཧͷڞ௨ԽΛ͍ͨ͠6UJM*OUFSGBDFʹΓग़͢'SBHNFOUͱ"DUJWJUZɺ'SBHNFOUؒͰσʔλͷΓऔΓ͕͍ͨ͠"DUJWJUZTDPQFͷ7JFX.PEFMΛ͏ΞϓϦͷCBDLHSPVOE GPSFHSPVOEΛݕ͍ͨ͠1SPDFTT-JGFDZDMF0XOFSΛ͏Ͳ͏ʹͰ͖ͳ͍͚Ͳɺ৽ΞʔΩςΫνϟͰ͍ͨ͘ͳ͍*OUFSGBDFʹͬͯ!%FQSFDBUFEΛ͚ͭΔ
·ͱΊϚϧνϞδϡʔϧΛͬͯ৽ઃܭͱچઃܭΛΓ͚Δͱґଘ͕ؔڧ੍Ͱ͖ͯྑ͍ϞδϡʔϧΛ͑Δ߹நʹґଘͤ͞ΔΑ͏ʹ͢Δ݁ߏͰΓΒͳ͍ͱ͍͚ͳ͍ͱ͜Ζଟ͍