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

Debugging: All you need to know (for simultaneo...

Matsuda Jumpei
September 13, 2024

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

September 13, 2024
Tweet

More Decks by Matsuda Jumpei

Other Decks in Programming

Transcript

  1. 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
  2. w ✅+7.%FCVHHFSXJUI"OESPJE4UVEJP w ✅0 ffi DJBMEFCVHPQUJPOT w ❌"OESPJE/%, ,PUMJO/BUJWF w

    ❌SEQBSUZEFCVHMJCSBSJFTUPPMT w ❌%ZOBNJDQSPHSBNBOBMZTJT BTQFDUPSJFOUFEQSPHSBNNJOH $PWFSBHFPGUIJTQSFTFOUBUJPO 3 ࠓ೔ͷ಺༰ ಈతϓϩάϥϜղੳ΍ΞεϖΫτࢦ޲ ެࣜσόοάΦϓγϣϯ αʔυύʔςΟʔσόοάπʔϧɾϥΠϒϥϦ
  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ͳͲͰɺͷ࣌ؒΛσόοάʹ࢖͏ͱ౴͑ͯΔਓ΋
  4. w *T%FCVHHJOHPOMZGPS fi YJOHCVHT  w /P  EFCVHHJOH JTNPSFHFOFSJD

    w 'PSFYBNQMF XFPGUFOEFCVHBOBQQFWFOXIJMFBEEJOHBOFXGFBUVSF w %FCVHHJOHJTSFRVJSFEJGBOFXDPEFEPFTOUXPSLBTFYQFDUFE w &OHJOFFSTCBTJDBMMZEFCVHUIFJSQSPEVDUDPEFFWFSZEBZ w 6OMFTTUIFZBSFGBVMUMFTTQFPQMFQ .BZ%FCVHHJOHCFXJUIZPV 6 σόοά͸ৗʹͦ͹ʹ͋Δ σόοά͸όάमਖ਼ͷͨΊ͚ͩʹߦ͏࡞ۀ͔ ͍͍͑ɺσόοά͸΋ͬͱ൚༻తͳ࡞ۀͰ͢ ྫ ৽ػೳΛ࡞Δͱ͖Ͱ͑͞ɺσόοά࡞ۀΛߦ͏͜ͱ͕͋Δ ৽͍͠ίʔυ͕ظ଴௨Γʹಈ͔ͳ͍৔߹ɺσόοά࡞ۀʹస͡Δ جຊతʹɺզʑ͸ৗʹϓϩμΫτίʔυΛσόοά͢Δػձʹ઀͍ͯ͠Δ ྫ֎ ࣦഊ͠ͳ͍׬ᘳ௒ਓ
  5. w *OWFTUJHBUJPO w *EFOUJGZDBVTFTPGFSSPST w 7FSJGZIPXDPEFXPSLT w &WBMVBUFBTTVNQUJPOBOEIZQPUIFTJT w 'FBUVSF-PDBUJPO

    w *NQMFNFOUBUJPO 5IFDPNNPOEFCVHHJOHQSPDFTT 7 ීวతͳσόοάϓϩηε ௐࠪɾ෼ੳ ΤϥʔͷݪҼΛಛఆ͢Δ ίʔυɾಈ࡞Λݕূ͢Δ Ծఆ΍ԾઆΛݕূ͢Δ मਖ਼Օॴͷਪ࿦ɾಛఆ ࣮૷
  6. w *OWFTUJHBUJPO w *EFOUJGZDBVTFTPGFSSPST w 7FSJGZIPXDPEFXPSLT w &WBMVBUFBTTVNQUJPOBOEIZQPUIFTJT w 'FBUVSF-PDBUJPO

    w *NQMFNFOUBUJPO 5IFDPNNPOEFCVHHJOHQSPDFTT 8 ීวతͳσόοάϓϩηε ௐࠪɾ෼ੳ मਖ਼Օॴͷਪ࿦ɾಛఆ ࣮૷
  7. w +VTUNPEJGZDPEFUPBEEQSJOUTUBUFNFOUTXJUISFDPSEJOHWBMVFT w &BTZUPVTFCVUJUTBMPDBMTPMVUJPO w 1SJOUJOHXPSLTXJUIPOMZZPVSPXODPEF w 5IFTUBUFNFOUTNVTUCFSFMJBCMFOPTJEFF ff FDU

    OPOUJNFBXBSFWBMVF 1SJOUJOH1SJOU%FCVHHJOH 10 ϓϦϯτσόοά ஋ͷه࿥Λ໨తͱͯ͠ɺϩάग़ྗΛ͢Δ͚ͩͷίʔυमਖ਼Λߦ͏ ؆୯ʹར༻Ͱ͖Δ͕ɺہॴతͳղܾࡦͰ͔͠ͳ͍ ݪଇͱͯ͠ɺࣗ෼ͨͪͷίʔυͰ͔͠ػೳ͠ͳ͍ ৴པੑͷ͋Δϩάग़ྗ͕ٻΊΒΕΔFH෭࡞༻͕ͳ͍ɺ஋͕࣌ؒมԽ͠ͳ͍ͳͲ
  8. w +VTUNPEJGZDPEFUPBEEQSJOUTUBUFNFOUTXJUISFDPSEJOHWBMVFT w &BTZUPVTFCVUJUTBMPDBMTPMVUJPO w 1SJOUJOHXPSLTXJUIPOMZZPVSPXODPEF w 5IFTUBUFNFOUTNVTUCFSFMJBCMFOPTJEFF ff FDU

    OPOUJNFBXBSFWBMVF w 4PNFUJNFT JUXPVMECFBUJNFDPOTVNJOHEFCVHHJOH w :PVNBZOFFEUPNPEJGZDPEFBOESVOUIFBQQTPNBOZUJNFT w %FUFSNJOJTUJDGPSNVMUJQMFFWBMVBUJPOT CBDLXBSEBQQSPBDI 1SJOUJOH1SJOU%FCVHHJOH 16 ϓϦϯτσόοά ࣌ંɺ࣌ؒΛ࿘අ͢Δσόοάʹͳͬͯ͠·͏ Կ౓΋Կ౓΋ίʔυͷमਖ਼ͱΞϓϦͷ࣮ߦΛ܁Γฦ͢͜ͱ΋ ͋ͱͰࣅͨΑ͏ͳϩάʹܾఆੑΛ࣋ͨͤͨΓɺίʔυΛḪΔΞϓϩʔνʹͳΓ͕ͪ
  9. Getting Started with Debugger Don't become a print debugging expert

    17 3/10 σόοΨʔͷ࢖͍͸͡Ί ϓϦϯτσόοάͷϓϩʹͳΔͷ͸΍ΊΑ͏
  10. w 4UFQ*OUP%JWFJOUPUIFNFUIPEDBMMFWBMVBUJPO w 4UFQ0VU&WBMVBUFUIFSFNBJOJOHTUFQTBOESFUVSOUPUIFDBMMFS 4UFQ*OUP0VU 25 Step Into Step Out

    εςοϓΠϯτΡͱεςοϓΞ΢τ εςοϓΠϯτΡϝιουݺͼग़͠ͷධՁʹҠΔ εςοϓΞ΢τͦͷϝιουͷ࢒ΓߦΛධՁ͠ɺϝιουݺͼग़͠ݩʹ໭Δ
  11. w .VMUJQMFCSFBLQPJOUTEFHSBEFTBQQQFSGPSNBODF w %POUUPVDIZPVSBQQXIJMFBEFCVHHFSTVTQFOETUIFBQQ w 5IFBQQEPFTOUSFTQPOECFDBVTFUIFNBJOUISFBEJTTVTQFOEFE w &WFOUTBSFFORVFVFEBOEXJMMCFQSPDFTTFESJHIUBGUFSSFTVNJOH /PUJDFT 27

    ஫ҙ఺ ଟ͗͢ΔϒϨʔΫϙΠϯτ͸ΞϓϦύϑΥʔϚϯεʹѱӨڹ΋ σόοΨʔ͕ΞϓϦΛதஅ͍ͯ͠Δͱ͖ɺΞϓϦʹ৮Δ΂͖͡Όͳ͍ ϝΠϯεϨου΋தஅ͞ΕͯΔͷͰɺΞϓϦ͕Ԡ౴Ͱ͖ͳ͍ λονΠϕϯτͳͲ͸Ωϡʔʹੵ·Εɺ࠶։࣌ʹҰؾʹॲཧ͞ΕΔ
  12. 28 How to use Debugger better Inspect and Interact with

    Apps 4/10 ΑΓ͏·͘σόοΨʔΛ࢖͏ ͞ΒʹΞϓϦͷݕূͱΞϓϦ΁ͷհೖΛߦ͏
  13. *OUFSBDUXJUIFYUFSOBMMJCSBSJFT 29 w :PVDBOQVUCSFBLQPJOUTPOSEQBSUZMJCSBSJFT w .BLFTVSFZPVIBWFPQFOFEUIFDPSSFDUTPVSDF w %POUJOGFSUIFCFIBWJPVS DIFDLJUCZZPVSTFMG ֎෦ϥΠϒϥϦʹׯব͢Δ

    αʔυύʔςΟʔϥΠϒϥϦʹ΋ϒϨʔΫϙΠϯτ͸ஔ͚Δ όʔδϣϯͷਖ਼͍͠ιʔείʔυΛ։͍͓ͯ͘͜ͱ ৼΔ෣͍ͷ༧૝͔Βݕূ΁
  14. *OUFSBDUXJUI"OESPJE'SBNFXPSL 30 w "OESPJE'SBNFXPSLDBOBMTPCFTVTQFOEFE w .BLFTVSFZPVIBWFPQFOFEUIFDPSSFDUTPVSDF w $BOOPUTVTQFOEDPEFPOPUIFSQSPDFTTFT w FHTZTUFNTFSWJDFTDPEFCFIJOE"*%-

    "OESPJEϑϨʔϜϫʔΫʹׯব͢Δ "OESPJEϑϨʔϜϫʔΫͷίʔυʹ΋ϒϨʔΫϙΠϯτ͸ஔ͚Δ ୺຤ͷ04όʔδϣϯͱҰகͨ͠ίʔυΛ։͘͜ͱ ผϓϩηεͷίʔυ͸தஅɾհೖͰ͖ͳ͍ "*%-ͷ௨৴ઌʹ͋ͨΔγεςϜαʔϏεͳͲ
  15. w 4VTQFOEBQQXIFOUIFTQFDJ fi D fi FMEQSPQFSUZJTSFBEPSXSJUUFO w $BOOPUCFVTFEXJUIMPDBMEFMFHBUJPOQSPQFSUJFT w 6TFNFUIPECSFBLQPJOUTPOHFU7BMVFTFU7BMVFPQFSBUPSTJOTUFBE

    'JFMEXBUDIQPJOUT 32 ϑΟʔϧυ؂ࢹ ಛఆͷϑΟʔϧυ΍ϓϩύςΟ͕ಡΈॻ͖͞Εͨͱ͖ʹΞϓϦΛதஅͰ͖Δ ϩʔΧϧσϦήʔγϣϯϓϩύςΟʹ͸࢖͑ͳ͍ ͜ͷ৔߹͸ϓϩύςΟϝιου΁ͷϝιουϒϨʔΫϙΠϯτͰ୅ସ͢Δ
  16. w ,FFQXBUDIJOHWBSJBCMFTBOEPSFYQSFTTJPOTSFHBSEMFTTPGGSBNFT w $IFDLTUBUFTBDSPTTBDPNQMJDBUFEQSPDFTT MBZFSTBOETPPO w FH8BUDIBTUBUFPGBSFQPTJUPSZGSPNBQSFTFOUBUJPOMBZFS 8BUDI7BSJBCMFT8BUDIFYQSFTTJPO 33 ม਺΍ධՁࣜͷ؂ࢹ

    ಛఆͷม਺΍ධՁࣜΛϑϨʔϜԣஅͰ؂ࢹ͢Δ͜ͱ͕Ͱ͖Δ ෳࡶͳॲཧ΍ҟͳΔϨΠϠʔΛލ͍Ͱɺঢ়ଶΛ֬ೝͰ͖Δ ྫ ϓϨθϯςʔγϣϯϨΠϠʔ͔Βσʔλιʔεͷ্ྲྀϦϙδτϦͷঢ়ଶΛݟΔ
  17. w &YJUBNFUIPE 㲈BGSBNF BOENBLFJUSFUVSOBOBSCJUSBSZWBMVF w /POFFEUPTUVC OPOFFEUPSFQSPEVDFUIFTUBUFNBOVBMMZ w 4FMFDUBGSBNF03QVUBCSFBLQPJOUPOBNFUIPEDBMMBOEVTF4UFQ*OUP 'PSDF3FUVSO

    35 ڧ੍తͳ஋ͷฦ٫ ϝιου ϑϨʔϜ ͷ࢒Γ෦෼ΛධՁ͢Δ͜ͱͳ͘ɺ೚ҙͷ஋Λฦ͢Α͏ʹͰ͖Δ ελϒΛ͢Δඞཁ͸ͳ͍͠ɺखಈͰͷঢ়گ࠶ݱ΋লུͰ͖Δ εςοϓΠϯτΡΛ࢖͏ͳͲͯ͠ɺର৅ͷϑϨʔϜ ϝιου ·Ͱ౸ୡ͢Δඞཁ༗Γ
  18. 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 ϑϨʔϜͷϦηοτ ಛఆͷϑϨʔϜΛϦηοτͯ͠ɺϩʔΧϧม਺ͳͲΛר͖໭ͤΔ ੍ݶάϩʔόϧͳঢ়ଶ͸໭ͤͳ͍ ಛఆͷঢ়گͰ͸ɺमਖ਼ͱΞϓϦͷ࣮ߦΛ܁Γฦ͢ඞཁ͕ͳ͘ͳΔ ࣍ͷखॱΛ܁Γฦ͢ ม਺Λվม εςοϓΦʔόʔͰ݁ՌΛ֬ೝ ϑϨʔϜΛϦηοτ εςοϓΠϯτΡͰ࠷ॳͷதஅҐஔʹ໭Δ
  19. w %JTBCMFTVTQFOEJOHPSQVUCSFBLQPJOUTXJUIIPMEJOHEPXOUIFTIJGULFZ w 1BUUFSOT w #SFBLQPJOUIJUNFTTBHF w 4UBDL5SBDF w &WBMVBUFBOEMPH

    -PHHJOHCSFBLQPJOU 39 ϩά༻ϒϨʔΫϙΠϯτ ΞϓϦͷதஅઃఆ 4VTQFOE ΛղআPSγϑτΩʔΛԡ͠ͳ͕Β഑ஔ͢Δ ϩάܗࣜͷύλʔϯ ϒϨʔΫϙΠϯτώοτදࣔ ελοΫτϨʔε ࣜͷධՁͱ݁Ռͷϩά
  20. w 5PPNBOZTVTQFOTJPOTNBZBOOPZZPV w $POEJUJPOT w &YQSFTTJPO w 1BTT$PVOU w #SFBLQPJOUEFQFOEFODZ

    $POEJUJPOBM#SFBLQPJOUT 40 ৚݅෇͖ϒϨʔΫϙΠϯτ සൃ͢ΔΞϓϦͷதஅ͸গʑ΍͔·͍͠ ৚݅෇͚ ධՁࣜ ௨ա਺ ϒϨʔΫϙΠϯτؒͷґଘ
  21. w 4VTQFOEPOMZUIFTQFDJ fi DUISFBEJOTUFBEPGTVTQFOEJOHBMMUISFBET w 3BDFDPOEJUJPOTNBZCFSFWFBMFEFBTJFS w 3FDPNNFOEUPBMXBZTXBUDI5ISFBEDVSSFOU5ISFBE HFU/BNF .VMUJQMF5ISFBET

    45 ෳ਺εϨου σόοΨʔΛ࢖͑͹ಛఆͷεϨου͚ͩΛதஅ͢Δ͜ͱ͕Ͱ͖Δ ϨʔείϯσΟγϣϯ໰୊ͳͲΛɺΑΓ؆୯ʹղ໌Ͱ͖Δ͜ͱ΋ ݱࡏͷεϨου໊ͷ؂ࢹ 8BUDI Λ͓ͯ͘͠ͱ͍͍
  22. w %FCVHHFSDBOOPUFWBMVBUF$PNQPTBCMFGVODUJPOT w "TZPVLOPX $PNQPTBCMFTSFMZPOUIFDPNQJMFSQMVHJO w )PXFWFS %FCVHHFSJTTUJMMF ff FDUJWF

    /PUJDFT 52 ஫ҙ఺ σόοΨʔ͔Β$PNQPTBCMFؔ਺Λݺͼग़͢͜ͱ͕Ͱ͖ͳ͍ ίϯύΠϥʔϓϥάΠϯͷॲཧʹڧ͘ґଘ͍ͯ͠ΔͨΊ ͦΕͰ΋σόοΨʔ͸༗༻
  23. 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.ଆͷϙʔτΛ։͚ͳ͍ͱ͍͚ͳ͍
  24. w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w (PUP%FWFMPQFSPQUJPOT w 4FMFDUEFCVHBQQBOEUVSOPO

    8BJUGPSEFCVHHFS  w -BVODIBOBQQBOEBUUBDIBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 60 σόοΨʔͷ઀ଓํ๏ ΞϓϦͷىಈ࣌ʹσόοΨʔ઀ଓΛ଴ػ͢Δ ։ൃऀΦϓγϣϯΛ։͘ σόοάΞϓϦΛબͼɺσόοΨʔΛ଴ػ͢ΔΛ༗ޮԽ ΞϓϦΛىಈ͠ɺલεϥΠυͷํ๏ͰσόοΨʔΛ౰ͯΔ
  25. w 6TF%FCVHDPNNBOEGSPN"OESPJE4UVEJP w "UUBDIBEFCVHHFSUPBSVOOJOHEFCVHHBCMFQSPDFTT w 4VTQFOEPOBQQMBVODIUPXBJUGPSBEFCVHHFS w (PUP%FWFMPQFSPQUJPOT w 4FMFDUEFCVHBQQBOEUVSOPO

    8BJUGPSEFCVHHFS  w -BVODIBOBQQBOEBUUBDIBEFCVHHFS w 8BJUGPSBEFCVHHFSQSPHSBNBUJDBMMZ )PXUPDPOOFDU%FCVHHFSUP"QQ 61 σόοΨʔͷ઀ଓํ๏ ΞϓϦͷىಈ࣌ʹσόοΨʔ઀ଓΛ଴ػ͢Δ
  26. 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ʹ͢ΔͱΫϥογϡ͢Δ
  27. 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Λ࢖͑Δ ଟ͘ͷݴޠɾϑϨʔϜϫʔΫʹσόοΨʔɾσόοάπʔϧ͕ଘࡏ͢Δ ຆͲͷσόοΨʔ͕ࠓճ঺հͨ͠ػೳ΍ྨࣅػೳΛ͍࣋ͬͯΔ
  28. w ✅/PDPEFNPEJ fi DBUJPOJTSFRVJSFE w ✅1SPHSBNFOUJUZWJFXFSXJUIPVUSFFWBMVBUJPO w ✅1FSTUFQCFIBWJPVSDIFDLJOH w ✅*OTQFDUSEQBSUZMJCSBSJFTBOE"OESPJE'SBNFXPSL

    w ✅"MPUPGGFBUVSFTBSFBWBJMBCMFJOBEEJUJPOUPUIFGFBUVSFTJOUSPEVDFE w ❌/FHBUJWFJNQBDUTPOBQQQFSGPSNBODF %FCVHHFSJTQPXFSGVM 67 σόοΨʔ͸ڧྗ ίʔυमਖ਼͕ෆཁ ࠶ධՁͳ͠Ͱ΋ϓϩάϥϜߏ੒ཁૉͷঢ়ଶΛݟΔ͜ͱ͕Ͱ͖Δ εςοϓ͝ͱͷڍಈݕ͕ࠪՄೳ αʔυύʔςΟʔϥΠϒϥϦ΍"OESPJEϑϨʔϜϫʔΫͰ΋໰୊ͳ͠ ࠓճ঺հͯ͠ͳ͍ػೳ΋͍ͬͺ͍͋Δ ΞϓϦύϑΥʔϚϯεྼԽʹ஫ҙ
  29. 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͚͕ͩඞཁ৚݅ ར༻৚݅͸͕ͭͩͬͨɺ઀ଓํ๏͸ෳ਺͋Δ σόοΨʔεΩϧΛຏ͘͜ͱͰɺΤϯδχΞਓੜΛ๛͔ʹ͠Α͏
  30. (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