Share
Debugging: All you need to know (for simultaneous interpreting)
> You can find the full English version at https://speakerdeck.com/jmatsu/debugging-all-you-need-to-know-english-only
DroidKaigi 2024 での登壇 ref: https://2024.droidkaigi.jp/timetable/694440/
初学者からエキスパートまで幅広く。特に Debugger を使ったことがない人、早く実装を終わらせて休憩したい方にオススメです
〜セッション概要〜
Debug スキルの習得はバグの原因特定、問い合わせ対応、開発生産性の向上といった代表的な行為に必須です。またチーム開発において、日頃の個々人への作業依頼には暗黙的に Debug 作業が含まれています。
その一方で、デザインドキュメントやコードレビューといったチーム開発手法の中で、Debug に関する方法まで踏み込むことは多くありません。
このような背景から、Debug スキルとは「チーム開発において期待されるスキル」でありながら、「個々人が独学で習得しなければいけないスキル」といえるでしょう。
これは初学者にとって大きな障害となるだけではなく、中級者以上の開発者にとっても見えない障害となっていることがあります。特に手癖や古典的な方法(Print Debugging)で解決できてしまうと、新しい手法やより効率的な手法を調べる機会を損失します。
本セッションでは Android Studio(IDEA) の built-in Debugger や Debug 用オプション等を使った Debug テクニックについて解説します。Debugger を使った conditional breakpoints はもちろん、いかにして Coroutine や suspend function の絡んだコードを Debug するかといった内容を順を追って説明します。
サンプルコードには Jetpack Compose などを用い、Androidアプリ開発における場面を想定して解説する予定です。
Keywords: Print debugging, debugger, coroutine debugging, breakpoints
Matsuda Jumpei
Transcript
70 slides
-
2 Jumpei Matsuda @red_fat_daruma Software Architect at DeployGate, Inc. Android
App and SDK Development Gradle Plugin Development Development Productivity Engineering Rails App Development and more... .F https://deploygate.com -
w ✅+7.%FCVHHFSXJUI"OESPJE4UVEJP w ✅0 ffi DJBMEFCVHPQUJPOT w ❌"OESPJE/%, ,PUMJO/BUJWF w
❌SEQBSUZEFCVHMJCSBSJFTUPPMT w ❌%ZOBNJDQSPHSBNBOBMZTJT BTQFDUPSJFOUFEQSPHSBNNJOH $PWFSBHFPGUIJTQSFTFOUBUJPO 3 ࠓͷ༰ ಈతϓϩάϥϜղੳΞεϖΫτࢦ ެࣜσόοάΦϓγϣϯ αʔυύʔςΟʔσόοάπʔϧɾϥΠϒϥϦ -
w PGFOHJOFFSTTQFOEUIFNPTUUJNFPOXSJUJOHOFXDPEFEBJMZ<> w 4PNFFOHJOFFSTPO2VPSBTBJEPGUIFJSUJNFPOEFCVHHJOH<> 8FTQFOENVDIUJNFPODPEJOH 5 [1] GitHub https://github.blog/news-insights/research/survey-reveals-ais-impact-on-the-developer-experience/ [2]
Quora - https://www.quora.com/How-much-time-does-a-programmer-spend-on-debugging զʑଟ͘ͷ࣌ؒΛίʔσΟϯάʹ͍ͬͯΔ (JU)VCͷௐࠪʹΑΔͱͷ։ൃऀ͕ίʔσΟϯά࡞ۀʹҰ൪࣌ؒΛ͍ͬͯΔ 2VPSBͳͲͰɺͷ࣌ؒΛσόοάʹ͏ͱ͑ͯΔਓ -
w *T%FCVHHJOHPOMZGPS fi YJOHCVHT w /P EFCVHHJOH JTNPSFHFOFSJD
w 'PSFYBNQMF XFPGUFOEFCVHBOBQQFWFOXIJMFBEEJOHBOFXGFBUVSF w %FCVHHJOHJTSFRVJSFEJGBOFXDPEFEPFTOUXPSLBTFYQFDUFE w &OHJOFFSTCBTJDBMMZEFCVHUIFJSQSPEVDUDPEFFWFSZEBZ w 6OMFTTUIFZBSFGBVMUMFTTQFPQMFQ .BZ%FCVHHJOHCFXJUIZPV 6 σόοάৗʹͦʹ͋Δ σόοάόάमਖ਼ͷͨΊ͚ͩʹߦ͏࡞ۀ͔ ͍͍͑ɺσόοάͬͱ൚༻తͳ࡞ۀͰ͢ ྫ ৽ػೳΛ࡞Δͱ͖Ͱ͑͞ɺσόοά࡞ۀΛߦ͏͜ͱ͕͋Δ ৽͍͠ίʔυ͕ظ௨Γʹಈ͔ͳ͍߹ɺσόοά࡞ۀʹస͡Δ جຊతʹɺզʑৗʹϓϩμΫτίʔυΛσόοά͢Δػձʹ͍ͯ͠Δ ྫ֎ ࣦഊ͠ͳ͍ᘳਓ -
w *OWFTUJHBUJPO w *EFOUJGZDBVTFTPGFSSPST w 7FSJGZIPXDPEFXPSLT w &WBMVBUFBTTVNQUJPOBOEIZQPUIFTJT w 'FBUVSF-PDBUJPO
w *NQMFNFOUBUJPO 5IFDPNNPOEFCVHHJOHQSPDFTT 7 ීวతͳσόοάϓϩηε ௐࠪɾੳ ΤϥʔͷݪҼΛಛఆ͢Δ ίʔυɾಈ࡞Λݕূ͢Δ ԾఆԾઆΛݕূ͢Δ मਖ਼Օॴͷਪɾಛఆ ࣮ -
w *OWFTUJHBUJPO w *EFOUJGZDBVTFTPGFSSPST w 7FSJGZIPXDPEFXPSLT w &WBMVBUFBTTVNQUJPOBOEIZQPUIFTJT w 'FBUVSF-PDBUJPO
w *NQMFNFOUBUJPO 5IFDPNNPOEFCVHHJOHQSPDFTT 8 ීวతͳσόοάϓϩηε ௐࠪɾੳ मਖ਼Օॴͷਪɾಛఆ ࣮ -
w +VTUNPEJGZDPEFUPBEEQSJOUTUBUFNFOUTXJUISFDPSEJOHWBMVFT w &BTZUPVTFCVUJUTBMPDBMTPMVUJPO w 1SJOUJOHXPSLTXJUIPOMZZPVSPXODPEF w 5IFTUBUFNFOUTNVTUCFSFMJBCMFOPTJEFF ff FDU
OPOUJNFBXBSFWBMVF 1SJOUJOH1SJOU%FCVHHJOH 10 ϓϦϯτσόοά ͷهΛతͱͯ͠ɺϩάग़ྗΛ͢Δ͚ͩͷίʔυमਖ਼Λߦ͏ ؆୯ʹར༻Ͱ͖Δ͕ɺہॴతͳղܾࡦͰ͔͠ͳ͍ ݪଇͱͯ͠ɺࣗͨͪͷίʔυͰ͔͠ػೳ͠ͳ͍ ৴པੑͷ͋Δϩάग़ྗ͕ٻΊΒΕΔFH෭࡞༻͕ͳ͍ɺ͕࣌ؒมԽ͠ͳ͍ͳͲ -
w +VTUNPEJGZDPEFUPBEEQSJOUTUBUFNFOUTXJUISFDPSEJOHWBMVFT w &BTZUPVTFCVUJUTBMPDBMTPMVUJPO w 1SJOUJOHXPSLTXJUIPOMZZPVSPXODPEF w 5IFTUBUFNFOUTNVTUCFSFMJBCMFOPTJEFF ff FDU
OPOUJNFBXBSFWBMVF w 4PNFUJNFT JUXPVMECFBUJNFDPOTVNJOHEFCVHHJOH w :PVNBZOFFEUPNPEJGZDPEFBOESVOUIFBQQTPNBOZUJNFT w %FUFSNJOJTUJDGPSNVMUJQMFFWBMVBUJPOT CBDLXBSEBQQSPBDI 1SJOUJOH1SJOU%FCVHHJOH 16 ϓϦϯτσόοά ࣌ંɺ࣌ؒΛ࿘අ͢Δσόοάʹͳͬͯ͠·͏ ԿԿίʔυͷमਖ਼ͱΞϓϦͷ࣮ߦΛ܁Γฦ͢͜ͱ ͋ͱͰࣅͨΑ͏ͳϩάʹܾఆੑΛ࣋ͨͤͨΓɺίʔυΛḪΔΞϓϩʔνʹͳΓ͕ͪ -
Getting Started with Debugger Don't become a print debugging expert
17 3/10 σόοΨʔͷ͍͡Ί ϓϦϯτσόοάͷϓϩʹͳΔͷΊΑ͏ -
w .BSLMJOFTUPBMMPXJOUFSBDUJPOTGSPN%FCVHHFS w 5PHHMFMJOFCSFBLQPJOUTCZUBQQJOHBHVUUFSPGBOFEJUPS w "UUIFCPUIPGSVOUJNFBOECFGPSFMBVODIJOHUIFBQQ -JOF#SFBLQPJOUT 18 ߦϒϨʔΫϙΠϯτ σόοΨʔ͕հೖͰ͖ΔΑ͏ɺߦʹϚʔΩϯά͢Δ
ΤσΟλԣͷΨλʔΛλοϓ͢Δͱઃஔɾղআ͞ΕΔ ΞϓϦͷ࣮ߦதɺىಈલͷͲͪΒͷλΠϛϯάͰ͍͍ -
w 4UFQ*OUP%JWFJOUPUIFNFUIPEDBMMFWBMVBUJPO w 4UFQ0VU&WBMVBUFUIFSFNBJOJOHTUFQTBOESFUVSOUPUIFDBMMFS 4UFQ*OUP0VU 25 Step Into Step Out
εςοϓΠϯτΡͱεςοϓΞτ εςοϓΠϯτΡϝιουݺͼग़͠ͷධՁʹҠΔ εςοϓΞτͦͷϝιουͷΓߦΛධՁ͠ɺϝιουݺͼग़͠ݩʹΔ -
w .VMUJQMFCSFBLQPJOUTEFHSBEFTBQQQFSGPSNBODF w %POUUPVDIZPVSBQQXIJMFBEFCVHHFSTVTQFOETUIFBQQ w 5IFBQQEPFTOUSFTQPOECFDBVTFUIFNBJOUISFBEJTTVTQFOEFE w &WFOUTBSFFORVFVFEBOEXJMMCFQSPDFTTFESJHIUBGUFSSFTVNJOH /PUJDFT 27
ҙ ଟ͗͢ΔϒϨʔΫϙΠϯτΞϓϦύϑΥʔϚϯεʹѱӨڹ σόοΨʔ͕ΞϓϦΛதஅ͍ͯ͠Δͱ͖ɺΞϓϦʹ৮Δ͖͡Όͳ͍ ϝΠϯεϨουதஅ͞ΕͯΔͷͰɺΞϓϦ͕ԠͰ͖ͳ͍ λονΠϕϯτͳͲΩϡʔʹੵ·Εɺ࠶։࣌ʹҰؾʹॲཧ͞ΕΔ -
28 How to use Debugger better Inspect and Interact with
Apps 4/10 ΑΓ͏·͘σόοΨʔΛ͏ ͞ΒʹΞϓϦͷݕূͱΞϓϦͷհೖΛߦ͏ -
*OUFSBDUXJUIFYUFSOBMMJCSBSJFT 29 w :PVDBOQVUCSFBLQPJOUTPOSEQBSUZMJCSBSJFT w .BLFTVSFZPVIBWFPQFOFEUIFDPSSFDUTPVSDF w %POUJOGFSUIFCFIBWJPVS DIFDLJUCZZPVSTFMG ֎෦ϥΠϒϥϦʹׯব͢Δ
αʔυύʔςΟʔϥΠϒϥϦʹϒϨʔΫϙΠϯτஔ͚Δ όʔδϣϯͷਖ਼͍͠ιʔείʔυΛ։͍͓ͯ͘͜ͱ ৼΔ͍ͷ༧͔Βݕূ -
*OUFSBDUXJUI"OESPJE'SBNFXPSL 30 w "OESPJE'SBNFXPSLDBOBMTPCFTVTQFOEFE w .BLFTVSFZPVIBWFPQFOFEUIFDPSSFDUTPVSDF w $BOOPUTVTQFOEDPEFPOPUIFSQSPDFTTFT w FHTZTUFNTFSWJDFTDPEFCFIJOE"*%-
"OESPJEϑϨʔϜϫʔΫʹׯব͢Δ "OESPJEϑϨʔϜϫʔΫͷίʔυʹϒϨʔΫϙΠϯτஔ͚Δ ͷ04όʔδϣϯͱҰகͨ͠ίʔυΛ։͘͜ͱ ผϓϩηεͷίʔυதஅɾհೖͰ͖ͳ͍ "*%-ͷ௨৴ઌʹ͋ͨΔγεςϜαʔϏεͳͲ -
w 4VTQFOEBQQXIFOUIFTQFDJ fi D fi FMEQSPQFSUZJTSFBEPSXSJUUFO w $BOOPUCFVTFEXJUIMPDBMEFMFHBUJPOQSPQFSUJFT w 6TFNFUIPECSFBLQPJOUTPOHFU7BMVFTFU7BMVFPQFSBUPSTJOTUFBE
'JFMEXBUDIQPJOUT 32 ϑΟʔϧυࢹ ಛఆͷϑΟʔϧυϓϩύςΟ͕ಡΈॻ͖͞Εͨͱ͖ʹΞϓϦΛதஅͰ͖Δ ϩʔΧϧσϦήʔγϣϯϓϩύςΟʹ͑ͳ͍ ͜ͷ߹ϓϩύςΟϝιουͷϝιουϒϨʔΫϙΠϯτͰସ͢Δ -
w ,FFQXBUDIJOHWBSJBCMFTBOEPSFYQSFTTJPOTSFHBSEMFTTPGGSBNFT w $IFDLTUBUFTBDSPTTBDPNQMJDBUFEQSPDFTT MBZFSTBOETPPO w FH8BUDIBTUBUFPGBSFQPTJUPSZGSPNBQSFTFOUBUJPOMBZFS 8BUDI7BSJBCMFT8BUDIFYQSFTTJPO 33 มධՁࣜͷࢹ
ಛఆͷมධՁࣜΛϑϨʔϜԣஅͰࢹ͢Δ͜ͱ͕Ͱ͖Δ ෳࡶͳॲཧҟͳΔϨΠϠʔΛލ͍Ͱɺঢ়ଶΛ֬ೝͰ͖Δ ྫ ϓϨθϯςʔγϣϯϨΠϠʔ͔Βσʔλιʔεͷ্ྲྀϦϙδτϦͷঢ়ଶΛݟΔ -
w &YJUBNFUIPE 㲈BGSBNF BOENBLFJUSFUVSOBOBSCJUSBSZWBMVF w /POFFEUPTUVC OPOFFEUPSFQSPEVDFUIFTUBUFNBOVBMMZ w 4FMFDUBGSBNF03QVUBCSFBLQPJOUPOBNFUIPEDBMMBOEVTF4UFQ*OUP 'PSDF3FUVSO
35 ڧ੍తͳͷฦ٫ ϝιου ϑϨʔϜ ͷΓ෦ΛධՁ͢Δ͜ͱͳ͘ɺҙͷΛฦ͢Α͏ʹͰ͖Δ ελϒΛ͢Δඞཁͳ͍͠ɺखಈͰͷঢ়گ࠶ݱলུͰ͖Δ εςοϓΠϯτΡΛ͏ͳͲͯ͠ɺରͷϑϨʔϜ ϝιου ·Ͱ౸ୡ͢Δඞཁ༗Γ -
w 3FWFSUUIFTUBUFTPGMPDBMWBSJBCMFTUPUIFTQFDJ fi DGSBNF w -JNJUBUJPO(MPCBMTUBUFTDBOOPUCFSFWFSUFE w %POUOFFEUPNPEJGZBOESVOBOBQQSFQFBUFEMZ 3FTFU'SBNF 36
w 3FQFBUUIFGPMMPXJOHTUFQT w .PEJGZUIFWBSJBCMF w 4UFQ0WFSBOEDIFDLUIFSFTVMU w 3FTFU'SBNF w 4UFQ*OUP UPHPCBDLUPUIFNFUIPE ϑϨʔϜͷϦηοτ ಛఆͷϑϨʔϜΛϦηοτͯ͠ɺϩʔΧϧมͳͲΛר͖ͤΔ ੍ݶάϩʔόϧͳঢ়ଶͤͳ͍ ಛఆͷঢ়گͰɺमਖ਼ͱΞϓϦͷ࣮ߦΛ܁Γฦ͢ඞཁ͕ͳ͘ͳΔ ࣍ͷखॱΛ܁Γฦ͢ มΛվม εςοϓΦʔόʔͰ݁ՌΛ֬ೝ ϑϨʔϜΛϦηοτ εςοϓΠϯτΡͰ࠷ॳͷதஅҐஔʹΔ -
w %JTBCMFTVTQFOEJOHPSQVUCSFBLQPJOUTXJUIIPMEJOHEPXOUIFTIJGULFZ w 1BUUFSOT w #SFBLQPJOUIJUNFTTBHF w 4UBDL5SBDF w &WBMVBUFBOEMPH
-PHHJOHCSFBLQPJOU 39 ϩά༻ϒϨʔΫϙΠϯτ ΞϓϦͷதஅઃఆ 4VTQFOE ΛղআPSγϑτΩʔΛԡ͠ͳ͕Βஔ͢Δ ϩάܗࣜͷύλʔϯ ϒϨʔΫϙΠϯτώοτදࣔ ελοΫτϨʔε ࣜͷධՁͱ݁Ռͷϩά -
w 5PPNBOZTVTQFOTJPOTNBZBOOPZZPV w $POEJUJPOT w &YQSFTTJPO w 1BTT$PVOU w #SFBLQPJOUEFQFOEFODZ
$POEJUJPOBM#SFBLQPJOUT 40 ͖݅ϒϨʔΫϙΠϯτ සൃ͢ΔΞϓϦͷதஅগʑ͔·͍͠ ͚݅ ධՁࣜ ௨ա ϒϨʔΫϙΠϯτؒͷґଘ -
w 4VTQFOEPOMZUIFTQFDJ fi DUISFBEJOTUFBEPGTVTQFOEJOHBMMUISFBET w 3BDFDPOEJUJPOTNBZCFSFWFBMFEFBTJFS w 3FDPNNFOEUPBMXBZTXBUDI5ISFBEDVSSFOU5ISFBE HFU/BNF .VMUJQMF5ISFBET
45 ෳεϨου σόοΨʔΛ͑ಛఆͷεϨου͚ͩΛதஅ͢Δ͜ͱ͕Ͱ͖Δ ϨʔείϯσΟγϣϯͳͲΛɺΑΓ؆୯ʹղ໌Ͱ͖Δ͜ͱ ݱࡏͷεϨου໊ͷࢹ 8BUDI Λ͓ͯ͘͠ͱ͍͍ -
w *OHFOFSBM UISFBEOBNFTBSFOPOEFUFSNJOJTUJDGPSDPSPVUJOFT w 6TF$PSPVUJOF/BNFBOEFOBCMFDPSPVUJOFEFCVHNPEF $PSPVUJOF%FCVHHJOH 46 $PSPVUJOFͷσόοά Ұൠతʹɺ$PSPVUJOFͷ͏εϨου ໊
ʹܾఆੑ͕ͳ͍ $PSPVUJOF/BNFΫϥεͱ$PSPVUJOFσόοάϞʔυΛ͏ͱ͍͍ -
w %FCVHHFSDBOOPUFWBMVBUF$PNQPTBCMFGVODUJPOT w "TZPVLOPX $PNQPTBCMFTSFMZPOUIFDPNQJMFSQMVHJO w )PXFWFS %FCVHHFSJTTUJMMF ff FDUJWF
/PUJDFT 52 ҙ σόοΨʔ͔Β$PNQPTBCMFؔΛݺͼग़͢͜ͱ͕Ͱ͖ͳ͍ ίϯύΠϥʔϓϥάΠϯͷॲཧʹڧ͘ґଘ͍ͯ͠ΔͨΊ ͦΕͰσόοΨʔ༗༻ -
w 6TF-BZPVU*OTQFDUPSUPDPVOUSFDPNQPTJUJPOT w 4FUUIF1BTT$PVOUUPTVTQFOE"QQPOUIFVOFYQFDUFESFDPNQPTJUJPO w #SFBLQPJOUTTIPVMECFTFUUPDPEFTUIBUSFBEVQEBUFTUBUFT 1FSGPSNBODF5VOJOH 54 ύϑΥʔϚϯεɾνϡʔχϯά -BZPVU*OTQFDUPSΛͬͯSFDPNQPTJUJPOͷճΛه͓ͯ͘͠
௨աΛ݅ʹ͍ɺ༧ظ͠ͳ͍SFDPNQPTJUJPOͷͱ͖ΞϓϦΛதஅ͢Δ εςʔτͷಡΈॻ͖ʹؔ͢ΔίʔυʹϒϨʔΫϙΠϯτΛஔ͘ͱ͍͍ -
w %FCVHHFSBOE+7.VTF4FSWFS$MJFOUDPNNVOJDBUJPO w +%81+BWB%FCVH8JSF1SPUPDPM w +7.JTSFBEZGPSBDPOOFDUJPOGSPNEFCVHHFSJG+%81QPSUJTPQFO w JF%FCVHHFSDBOOPUDPOOFDUUP+7.XP+%81QPSU 0WFSWJFXPG+7.%FCVHHFS 56
+7.PQFOTBQPSUGPS+%81 +7.EPFTOUPQFOBQPSU +7.σόοΨʔͷ֎؍ σόοΨʔͱ+7.αʔόʔΫϥΠΞϯτํࣜͰ௨৴͍ͯ͠Δ ௨৴༻ͷϙʔτΛ։͍͍ͯΔ+7.ʹରͯ͠ͷΈɺσόοΨʔଓͰ͖Δ +7.ଆͷϙʔτΛ։͚ͳ͍ͱ͍͚ͳ͍ -
w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w 8BJUBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 58
σόοΨʔͷଓํ๏ "OESPJE4UVEJPʹ͋Δ%FCVHίϚϯυΛ3VOͷΘΓʹ͏ -
w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w (PUP%FWFMPQFSPQUJPOT w 4FMFDUEFCVHBQQBOEUVSOPO
8BJUGPSEFCVHHFS w -BVODIBOBQQBOEBUUBDIBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 60 σόοΨʔͷଓํ๏ ΞϓϦͷىಈ࣌ʹσόοΨʔଓΛػ͢Δ ։ൃऀΦϓγϣϯΛ։͘ σόοάΞϓϦΛબͼɺσόοΨʔΛػ͢ΔΛ༗ޮԽ ΞϓϦΛىಈ͠ɺલεϥΠυͷํ๏ͰσόοΨʔΛͯΔ -
w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w (PUP%FWFMPQFSPQUJPOT w 4FMFDUEFCVHBQQBOEUVSOPO
8BJUGPSEFCVHHFS w -BVODIBOBQQBOEBUUBDIBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 61 σόοΨʔͷଓํ๏ ΞϓϦͷىಈ࣌ʹσόοΨʔଓΛػ͢Δ -
w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ w 3FRVJSFEGPSNVMUJQSPDFTTFTBQQT
)PXUPDPOOFDU%FCVHHFSUP"QQ 62 σόοΨʔͷଓํ๏ ίʔυ͔ΒσόοΨʔΛػ͢Δ ϚϧνϓϩηεΞϓϦ։ൃͰඞਢ -
w +BWB,PUMJODPEFEFCVHHJOHXPSLTSFHBSEMFTTPGUIFGSBNFXPSL w "UMFBTU#SFBLQPJOUTGFBUVSFJTBWBJMBCMFPOPUIFS%FCVHHFST w /05&'MVUUFSIBTPOFLOPXOJTTVF<> w "QQTXJUIandroid:debuggable=truePOUIFSFMFBTF fl BWPSGBJMT
)PXBCPVU9QMBUGPSN'SBNFXPSL 64 [1] https://github.com/ fl utter/ fl utter/issues/54126 ΫϩεϓϥοτϑΥʔϜͰͲ͏͔ +BWB,PUMJOίʔυͳΒͳ͑͘Δ ଞͷ%FCVHHFS FH+BWB4DSJQU༻ Ͱɺ࠷ݶϒϨʔΫϙΠϯτػೳ͋Δ 'MVUUFSͰͭطͷ͕͋Δ SFMFBTFGMBWPSͰEFCVHHBCMFΛUSVFʹ͢ΔͱΫϥογϡ͢Δ -
w +7.%FCVHHFSDBOCFVTFEGPSHFOFSBM+7.BQQMJDBUJPOT w .BOZMBOHVBHFTBOEPSGSBNFXPSLTIBWFEFCVHUPPMT w +BWB4DSJQU$ISPNF%FW5PPMFUD w %BSU'MVUUFS%FCVHHFSFUD w /%,HEC
--%#FUD w .PTUPGEFCVHHFSTIBWFTBNFPSTJNJMBSGFBUVSFTFYQMBJOFETPGBS )PXBCPVUPUIFSQMBUGPSNMBOHVBHFT 65 ͦͷଞͷϓϥοτϑΥʔϜݴޠͰͲ͏͔ +7.ݴޠͳΒવ+7.%FCVHHFSΛ͑Δ ଟ͘ͷݴޠɾϑϨʔϜϫʔΫʹσόοΨʔɾσόοάπʔϧ͕ଘࡏ͢Δ ຆͲͷσόοΨʔ͕ࠓճհͨ͠ػೳྨࣅػೳΛ͍࣋ͬͯΔ -
w ✅/PDPEFNPEJ fi DBUJPOJTSFRVJSFE w ✅1SPHSBNFOUJUZWJFXFSXJUIPVUSFFWBMVBUJPO w ✅1FSTUFQCFIBWJPVSDIFDLJOH w ✅*OTQFDUSEQBSUZMJCSBSJFTBOE"OESPJE'SBNFXPSL
w ✅"MPUPGGFBUVSFTBSFBWBJMBCMFJOBEEJUJPOUPUIFGFBUVSFTJOUSPEVDFE w ❌/FHBUJWFJNQBDUTPOBQQQFSGPSNBODF %FCVHHFSJTQPXFSGVM 67 σόοΨʔڧྗ ίʔυमਖ਼͕ෆཁ ࠶ධՁͳ͠ͰϓϩάϥϜߏཁૉͷঢ়ଶΛݟΔ͜ͱ͕Ͱ͖Δ εςοϓ͝ͱͷڍಈݕ͕ࠪՄೳ αʔυύʔςΟʔϥΠϒϥϦ"OESPJEϑϨʔϜϫʔΫͰͳ͠ ࠓճհͯ͠ͳ͍ػೳ͍ͬͺ͍͋Δ ΞϓϦύϑΥʔϚϯεྼԽʹҙ -
4VNNBSZ w $PSPVUJOFEFCVHNPEFTIPVMECFBDUJWBUFEUPWJFXUIFJOGPSNBUJPO w %FCVHHFSDBOEFCVH+FUQBDL$PNQPTF w %FCVHHFSOFFETandroid:debuggable=trueGPS"OESPJE"QQT w )PXUPDPOOFDU%FCVHHFSUP"QQJTOPUPOMZTJOHMFXBZ w
.BTUFSJOH%FCVHHFSTLJMMTIFMQTZPVSFOHJOFFSMJGF 68 ·ͱΊ $PSPVUJOFσόοάϞʔυΛͬͯใΛӾཡɾऔಘ͠Α͏ +FUQBDL$PNQPTFͰσόοΨʔ͑Δ "OESPJEΞϓϦͷ߹ɺEFCVHHBCMFUSVF͚͕ͩඞཁ݅ ར༻͕݅ͭͩͬͨɺଓํ๏ෳ͋Δ σόοΨʔεΩϧΛຏ͘͜ͱͰɺΤϯδχΞਓੜΛ๛͔ʹ͠Α͏ -
(PPEUPSFBE w %FCVHHJOH w IUUQTXXXKFUCSBJOTDPNIFMQJEFBEFCVHHJOHDPEFIUNM w IUUQTEFWFMPQFSBOESPJEDPNDPEFMBCTCBTJDBOESPJELPUMJODPNQPTFJOUSPEFCVHHFS w IUUQTEFWFMPQFSBOESPJEDPNSFGFSFODFBOESPJEPT%FCVH w
IUUQTEFWFMPQFSBOESPJEDPNQSJWBDZBOETFDVSJUZSJTLTBOESPJEEFCVHHBCMF w $PNQPTF%FCVHHJOH w IUUQTEFWFMPQFSBOESPJEDPNEFWFMPQVJDPNQPTFUPPMJOHMBZPVUJOTQFDUPS w IUUQTNFEJVNDPNBOESPJEEFWFMPQFSTKFUQBDLDPNQPTFEFCVHHJOHSFDPNQPTJUJPOCGDGBGE w IUUQTJPHPPHMFQSPHSBNBFEECEEDBG w $PSPVUJOF%FCVHHJOH w IUUQTHJUIVCDPN,PUMJOLPUMJOYDPSPVUJOFTCMPCEBDDEGEBBCGBGBEEBLPUMJOYDPSPVUJOFTEFCVH3&"%.&NE w IUUQTLPUMJODPOGDPNUBMLT w IUUQTLPUMJOMBOHPSHEPDTEFCVHDPSPVUJOFTXJUIJEFBIUNM 70