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

ハマった時に役立つ通信系デバッグの話

M.Inomata
February 08, 2019

 ハマった時に役立つ通信系デバッグの話

DroidKaigi 2019 資料

実業務開発・運用中によくあるAPI/Webの問題か、アプリの問題か、を解決するための通信周りのデバッグ手法について詳しくお話します。

アジェンダ:
- WebAPIで問題があったときにどちらの不具合かを突き止める
- SSL通信を改ざんして期待値の確認
- WebViewアプリデバッグテクニック
- モックを使ったWebAPI動作確認手法

対象者:
Android/iOS開発の経験があり、実業務でTCP/IP通信周りで困ったことがある方。

M.Inomata

February 08, 2019
Tweet

More Decks by M.Inomata

Other Decks in Programming

Transcript

  1. ϋϚͬͨ࣌ʹ໾ཱͭ
    ௨৴ܥσόοάͷ࿩

    View Slide

  2. ழມɹॆԝ (͍ͷ·ͨɹΈͭͻΖ)
    Twitter: @ino2222
    גࣜձࣾ tech vein ୅ද ݉ σϕϩούʔ
    େࡕͷAndroid/iOS/Web։ൃ͕ಘҙͳडୗγεςϜ։ൃձࣾͰ͢ɻ
    https://www.tech-vein.com/
    ɹɹࣗݾ঺հ

    View Slide

  3. ࣗࣾӡӦͷ8FC։ൃ࣮੷
    ݄೔ʹNJSVEF ϛϧσ
    ͱ͍͏8FCαʔϏεΛϦϦʔε͠·ͨ͠ɻ
    (PPHMF"OBMZUJDTΛར༻͞Ε͍ͯΔํʹ໾ཱͭϨϙʔταʔϏεͰ͢ɻ
    ظؒݶఆͰແྉΩϟϯϖʔϯதʂ

    ɹɹɹɹˠIUUQTNJSVEFTJUF

    View Slide

  4. ɹɹݸਓͷུྺ
    www.ecoop.net ͱ͍͏αΠτΛ2002೥͔ΒӡӦ͍ͯͯ͠ɺ
    GNU Make ͷެࣜυΩϡϝϯτΛ຋༁ͯ͠αΠτͰެ։ͯ͠·͢ɻ
    ओͳ։ൃܦྺɿ
    → [झຯ] WindowsΞϓϦ։ൃ(2000~2003) & Perl CGI։ൃ(2001~2003)
    → [ձࣾһ] PHP։ൃ/αʔόӡ༻(2003~2012) ˍ Java։ൃ(FOMAΨϥέʔΞϓϦˍ
    JavaEE)(2005~2010)
    → [ձࣾһ/ىۀ] AndroidΞϓϦ։ൃ(2010~2013, 2018~ݱࡏ)
    → [ىۀ] iPhone ΞϓϦ։ൃத৺ʹ(2013~ݱࡏ)
    → [ڞಉݚڀ] Python Ͱ Deep Learning ݚڀ։ൃ(2016~ݱࡏ)

    View Slide

  5. www.ecoop.net ͱ͍͏αΠτΛ2002೥͔ΒӡӦ͍ͯͯ͠ɺ
    GNU Make ͷެࣜυΩϡϝϯτΛ຋༁ͯ͠αΠτͰެ։ͯ͠·͢ɻ
    ओͳ։ൃܦྺɿ
    → [झຯ] WindowsΞϓϦ։ൃ(2000~2003) & Perl CGI։ൃ(2001~2003)
    → [ձࣾһ] PHP։ൃ/αʔόӡ༻(2003~2012) ˍ Java։ൃ(FOMAΨϥέʔΞϓϦˍ
    JavaEE)(2005~2010)
    → [ձࣾһ/ىۀ] AndroidΞϓϦ։ൃ(2010~2013, 2018~ݱࡏ)
    → [ىۀ] iPhone ΞϓϦ։ൃத৺ʹ(2013~ݱࡏ)
    → [ڞಉݚڀ] Python Ͱ Deep Learning ݚڀ։ൃ(2016~ݱࡏ)
    ɹɹݸਓͷུྺ
    ྘ɿαʔόܦݧ
    ੺ɿΫϥΠΞϯτ

    View Slide

  6. ௨৴·ΘΓ͸ɺεϚʔτϑΥϯΞϓϦ։ൃͷϋϚΓͲ͜ΖʹͳΓ΍͍͢
    8FC"1*ͱΞϓϦΛ݁߹ͨ͠Βɺ
    ڍಈ͕ͳΜ͔ΦΧγΠʜ
    8FC7JFXͰ͚ͩົͳಈ͖Λ͢Δ͜ͱ͕͋Δɻ
    ϒϥ΢βͰ͸ͪΌΜͱಈ͘ͷʹʜ
    ͳΜͯ͜ͱΛҰ౓͸ܦݧͨ͜͠ͱɺͳ͍Ͱ͠ΐ͏͔ʁ

    View Slide

  7. ͳͥ͜͏ͳΔͷ͔ʁ
    ௨৴·ΘΓ͸ཁҼ͕ଟ͍ͷͰɺݪҼͷಛఆ͕೉͍͠ɻ
    Android/iOS/Unity
    OSόʔδϣϯ
    ػछ
    ϑϨʔϜϫʔΫ
    ௨৴ϥΠϒϥϦͳͲʜ
    ి೾ঢ়گ
    ܞଳج஍ہɾ8J'Jઃఆ
    ϓϩόΠμ
    44-ূ໌ॻɾೝূہ
    ͳͲʜ
    <ΫϥΠΞϯτ> <ͦͷଞ͍Ζ͍Ζ>
    <αʔό>
    8FCαʔό
    %#αʔό
    %/4αʔό
    όονॲཧͳͲʜ

    View Slide

  8. ௨৴σόοάͷͨΊͷ
    ςΫχοΫ

    View Slide

  9. ௨৴पΓ͸ؔ܎͢Δ΋ͷ͕ଟ͍ͷͰʜ
    Webαʔό
    DNSαʔό
    ϩʔυόϥϯαʔ
    ܞଳి೾໢
    ج஍ہ
    ܞଳి࿩໢
    Πϯλʔωοτ
    υϝΠϯϨδετϥ
    *41
    ωοτϫʔΫ
    8J'JϧʔλͳͲ
    ܞଳճઢͰͷ઀ଓ
    8J'J઀ଓ
    αʔόଆωοτϫʔΫ "84 ($1ͳͲ

    Webαʔό
    DBαʔό
    ϑΝΠΞ΢Υʔϧ

    View Slide

  10. Webαʔό
    DNSαʔό
    ϩʔυόϥϯαʔ
    ܞଳి೾໢
    ج஍ہ
    ܞଳి࿩໢
    Πϯλʔωοτ
    υϝΠϯϨδετϥ
    *41
    ωοτϫʔΫ
    8J'JϧʔλͳͲ
    ܞଳճઢͰͷ઀ଓ
    8J'J઀ଓ
    αʔόଆωοτϫʔΫ "84 ($1ͳͲ

    Webαʔό
    DBαʔό
    ϑΝΠΞ΢Υʔϧ
    αʔό͕མͪͯΔͷ͔ʜ

    View Slide

  11. ΫϥΠΞϯτͷωοτ͕མͪͯΔͷ͔ɺͦΕͱ΋Πϯλʔωοτͷ
    ܦ࿏ͷ్தͰམ͍ͪͯΔͷ͔͕Θ͔ΓͮΒ͍ɻ
    Webαʔό
    DNSαʔό
    ϩʔυόϥϯαʔ
    ܞଳి೾໢
    ج஍ہ
    ܞଳి࿩໢
    Πϯλʔωοτ
    υϝΠϯϨδετϥ
    *41
    ωοτϫʔΫ
    8J'JϧʔλͳͲ
    ܞଳճઢͰͷ઀ଓ
    8J'J઀ଓ
    αʔόଆωοτϫʔΫ "84 ($1ͳͲ

    Webαʔό
    DBαʔό
    ϑΝΠΞ΢Υʔϧ

    View Slide

  12. Webαʔό
    DNSαʔό
    ϩʔυόϥϯαʔ
    ܞଳి೾໢
    ج஍ہ
    ܞଳి࿩໢
    Πϯλʔωοτ
    υϝΠϯϨδετϥ
    *41
    ωοτϫʔΫ
    8J'JϧʔλͳͲ
    ܞଳճઢͰͷ઀ଓ
    8J'J઀ଓ
    αʔόଆωοτϫʔΫ "84 ($1ͳͲ

    Webαʔό
    DBαʔό
    ϑΝΠΞ΢Υʔϧ
    ௨৴؀ڥͷτϥϒϧൃੜʂ
    Ͳ͜Ͱো֐ɾ໰୊͕ى͖͍ͯΔ͔͕෼͔ΓͮΒ͍ɻා͍ɻ

    View Slide

  13. Webαʔό
    DNSαʔό
    ϩʔυόϥϯαʔ
    ܞଳి೾໢
    ج஍ہ
    ܞଳి࿩໢
    Πϯλʔωοτ
    υϝΠϯϨδετϥ
    *41
    ωοτϫʔΫ
    8J'JϧʔλͳͲ
    ܞଳճઢͰͷ઀ଓ
    8J'J઀ଓ
    αʔόଆωοτϫʔΫ "84 ($1ͳͲ

    Webαʔό
    DBαʔό
    ϑΝΠΞ΢Υʔϧ
    Ͱ΋େৎ෉ʂ
    ௨৴पΓ΋ɺ໰୊ͷ੾Γ෼͚Λ͢Ε͹ා͘ͳ͍ʂ
    google.co.jp
    ಉ͡ܞଳͰ
    GooglF͸ݟ͑ͯΔɻ
    ͱ͍͏͜ͱ͸αʔόো֐͔΋
    !
    !

    View Slide

  14. ΫϥΠΞϯτ ΞϓϦ
    Ͱमਖ਼͢΂͖໰୊͔Ͳ͏͔Λத৺ʹ֬ೝ͢Δɻ
    ʲओͳ֬ೝϙΠϯτʳ
    ɾϦΫΤετ͕ਖ਼͘͠ૹΕ͍ͯΔ͔ʁ
    ɾϨεϙϯεΛਖ਼͘͠ड͚औΕ͍ͯΔ͔ʁ
    ɾ௨৴ҟৗ࣌ʹਖ਼͘͠ΤϥʔॲཧͰ͖͍ͯΔ͔ʁ
    ΞϓϦ։ൃऀͱͯ͠ͷ੾Γ෼͚ΔϙΠϯτ
    ʮਖ਼͘͠ʯͱ͸ɻ
    ɾ௨৴࢓༷Ͳ͓Γʹૹड৴Ͱ͖͍ͯΔ
    ɾى͜Γ͏Δҟৗܥʹద੾ʹରԠ͍ͯ͠Δ

    ɹʢϢʔβʹΤϥʔϝοηʔδΛग़͢ͳͲʣ

    View Slide

  15. "1*࣮૷ʹ໰୊͕ͳ͍͔ʁϖʔδ͕ϒϥ΢β্Ͱਖ਼͘͠ಈ࡞͍ͯ͠Δ͔ʁ
    ʲओͳ֬ೝϙΠϯτʳ
    ɾϦΫΤετΛਖ਼͘͠ड͚औΕ͍ͯΔ͔ʁ
    ɾϦΫΤετʹର͢ΔϨεϙϯεΛਖ਼͘͠ฦ͍ͤͯΔ͔ʁ
    ʲ8FCϑϩϯτ +4)5.-
    ͷ௥Ճ֬ೝϙΠϯτʳ
    ɾ+4͕ΫϥΠΞϯτ্ 8FC7JFXϒϥ΢β
    ͰΤϥʔແ͘ಈ͍͍ͯΔ͔ʁ
    ɾ+4͕࣮ߦ͢ΔϦΫΤετɾϨεϙϯε͕ਖ਼͍͔͠ʁ
    8FC "1*8FCϑϩϯτ
    ։ൃऀͱͯ͠஌Γ͍ͨ੾Γ෼͚ϙΠϯτ

    View Slide

  16. ௨৴Ͱ໰୊͕ى͖ͨͱ͖ͷ৺ߏ͑
    ୺຤ͷ௨৴݁ՌΛݟۃΊͯɺ
    ΞϓϦΛमਖ਼͢΂͖͔ɺͦΕͱ΋"1*Λमਖ਼͢΂͖͔ɺ
    ແࢹ͢΂͖໰୊͔Λ੾Γ෼͚·͠ΐ͏ɻ
    Ұఆ৚݅Ͱ͔͠࠶ݱͤͣɺҰݟ؀ڥ΍"1*͕ѱ͍Α͏ʹࢥ͑Δ໰୊΋ɺ
    ҙ֎ͳͱ͜ΖͰΞϓϦଆཁҼͩͬͨΓ͠·͢ɻʢ΋ͪΖΜٯ΋͋Γ·͢ʣ
    ΞϓϦଆͰରࡦ͢΂͖໰୊͔΋͠Εͳ͍ɺͱ͍͏ҙࣝΛৗʹ͓࣋ͬͯ͘ͱɺ
    ෆ۩߹ͷݟಀ͠ʹ໾ཱͪ·͢ɻ

    View Slide

  17. ௨৴Ͱ໰୊͕ى͖ͨͱ͖ͷجຊͷ֬ೝखॱ
    ᶃྫ֎ͷৄࡉΛϩάʹग़͢ࣄ͔Β࢝ΊΔɻ
    ᶄ)551Ϩεϙϯε͕ಧ͍͍ͯΔͳΒɺ
    ɹϨεϙϯεͷ)551εςʔλείʔυΛ֬ೝ͢Δɻ
    ᶅಉ༷ʹɺΫϥΠΞϯτଆͷϨεϙϯεύʔεॲཧΛ֬ೝ͢Δɻ

    View Slide

  18. खॱᶃྫ֎ͷৄࡉΛϩάʹग़͢ࣄ͔Β࢝ΊΔ
    5$1*1઀ଓཱ֬ΤϥʔͳͲͷ)551ΤϥʔҎ֎ͷ௨৴Τϥʔ͸ɺ
    ྫ֎ ಛʹ*0&YDFQUJPOܥྻ
    ͷελοΫτϨʔεϝοηʔδ͕ॏཁʹͳΓ·͢ɻ
    ͨͱ͑͹ελοΫτϨʔεͷ๯಄ߦͱɺ͋Ε͹$BVTFECZͷߦΛݟΕ͹ཧ༝͕Θ
    ͔Δ৔߹͕݁ߏ͋Γ·͢ɻ
    java.net.ConnectException: Failed to connect to example.com:93.184.216.34
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:242)
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160)
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:
    257)
    at ...
    Caused by: java.net.ConnectException: failed to connect to example.com:93.184.216.34 (port
    443) after 10000ms: isConnected failed: ENETUNREACH (Network is unreachable)
    at ...

    View Slide

  19. ྫ֎ΛಡΉ
    ௨৴ো֐ͳͲͰ઀ଓཱ֬ʹࣦഊͨ͠Β$POOFDU&YDFQUJPO
    ଴͖ͪΕͣλΠϜΞ΢τͨ͠Β$POOFDU5JNFPVU&YDFQUJPO
    63-ॻ͕ࣜؒҧ͍ͬͯͨΒ.BMGPSNFE63-&YDFQUJPO
    ໊લղܾʹࣦഊͨ͠Β6OLOPXO)PTU&YDFQUJPO
    ͳͲͳͲɺಘΒΕΔ৘ใ͸ҙ֎ͱଟ͍Ͱ͢ɻ
    ௨৴पΓͷྫ֎͕ݪҼͷ৔߹͸௨৴؀ڥ΍୺຤ઃఆ΋ٙͬͯΈ·͠ΐ͏ɻ
    ྫ֎͚ͩͰ൑அͰ͖ͳ͍৔߹͸ɺ࣍ͷखॱʹਐΈ·͢ɻ

    View Slide

  20. खॱᶄϨεϙϯεͷ)551εςʔλείʔυΛ֬ೝ͢Δ
    ΫϥΠΞϯτଆʹϨεϙϯε͕ಧ͍͍ͯΔͳΒɺ
    Ϩεϙϯεͷ)551εςʔλείʔυͱϝοηʔδΛ֬ೝ͠·͠ΐ͏ɻ
    ʲ0L)UUQͷྫʳ
    3FTQPOTFDPEF
    *OUʜ)551εςʔλείʔυ਺஋
    ɹɹɹɹɹɹɹɹɹɹɹˠྫɿɺ
    3FTQPOTFNFTTBHF
    4USJOHʜ)551εςʔλείʔυͷϝοηʔδΛऔಘ
    ɹɹɹɹɹɹɹɹɹɹɹˠྫɿ0,ɺ/PU'PVOE

    View Slide

  21. )551εςʔλείʔυͱϝοηʔδ
    ɾ0,ʜαʔόͱͯ͠ɺਖ਼͍݁͠ՌΛฦ͍ͯ͠Δɻ
    ɾ#BE3FRVFTUʜϦΫΤετ͕Կ͔ؒҧ͍ͬͯͨɻ
    ɾ6OBVUIPSJ[FEʜະೝূঢ়ଶͰೝূ͕ඞཁͳϖʔδ 8FC"1*
    ʹΞΫη
    εͨ͠ɻ
    ɾ*OUFSOBM4FSWFS&SSPSʜ಺෦αʔόΤϥʔɻαʔόଆʹো֐͕ൃੜ͠
    ͍ͯΔɻ
    ͳͲͳͲɻ஌Βͳ͍εςʔλείʔυ͕ݱΕͨ࣌͸ɺ

    XJLJQFEJBͷʮ)551εςʔλείʔυʯϖʔδ IUUQTHPPHMQS3'
    ͳͲ͕
    ݟ΍͘͢ศརͰ͢ɻ
    ˞ਖ਼֬ͳ)551εςʔλείʔυ࢓༷͸3'$Λࢀর

    View Slide

  22. ૝ఆ֎ͷ)551εςʔλείʔυʹ஫ҙ
    "1*࢓༷ʹͳͯ͘΋௨৴؀ڥɾܦ࿏΍αʔόঢ়ଶʹΑͬͯɺ
    ։ൃऀ͕໌ࣔతʹฦͨ͠΋ͷͰ͸ͳ͍ɺ"1*࢓༷ʹͳ͍εςʔλείʔυ͕ฦΔ͜
    ͱ͕͋Γ·͢ɻ
    ಛʹd൪୆ʹ͍ͭͯ͸ɺ࢓༷ʹͳ͍εςʔλείʔυͰ΋ಈ࡞͢ΔΑ͏ʹɺ
    ڞ௨ΤϥʔϝοηʔδΛදࣔ͢ΔͳͲɺద੾ʹΤϥʔॲཧ͓͖ͯ͠·͠ΐ͏ɻ

    View Slide

  23. खॱᶅΫϥΠΞϯτଆͷϨεϙϯεύʔεॲཧΛ֬ೝ͢Δ
    0,ͳͲɺҰݟਖ਼͍͠εςʔλείʔυͰϨεϙϯε͕ฦͬͯདྷ͍ͯΔͷʹ
    ҙਤͨ͠௨Γʹಈ͔ͳ͍ɻ
    ͜Μͳ৔߹ɺΫϥΠΞϯτଆͰਖ਼͘͠ύʔε͕Ͱ͖͍ͯΔ͔Λ͍ٙ·͢ɻ
    ɾ࣮ࡍʹ"1*͔Βฦ͖͍ͬͯͯΔϨεϙϯε͕"1*࢓༷ॻ௨Γ͔ʁ
    ɾΫϥΠΞϯτଆͰϨεϙϯεͷॻࣜΛ"1*࢓༷Ͳ͓Γʹ࣮૷Ͱ͖͍ͯΔ͔ʁ
    Λ֬ೝͯ͠Έ·͠ΐ͏ɻ

    View Slide

  24. Ϩεϙϯεσʔλܗ͕ࣜ+40/ͷ৔߹ͷνΣοΫྫ
    ɾ࢓༷ͱ֊૚͕ҧΘͳ͍͔ʁ-JTUͳͷʹ.BQʹͳ͍ͬͯͳ͍͔ʁ
    ɾҙਤ͠ͳ͍ܕʹͳ͍ͬͯͳ͍͔ʁ
    ɹɾͨͱ͑͹CPPMΛظ଴͍ͯ͠ΔͷʹUSVFͩͬͨΓɺͩͬͨΓɺۭจࣈྻ͕
    ೖ͍ͬͯΔͳͲɻ
    ɹɾ/VMMBCMFͰͳ͍ϓϩύςΟʹOVMM͕དྷ͍ͯͳ͍͔ʁ
    ɾϔομͷ$POUFOU5ZQF΍จࣈίʔυ͸ؒҧ͍ͬͯͳ͍͔ʁ
    ɾͨͱ͑͹+40/Ͱฦͬͯ͘Δͷʹ$POUFOU5ZQFUFYUIUNMʹͳ͍ͬͯͨΓ
    ͠ͳ͍͔ʁ

    View Slide

  25. ͜͜·Ͱ΍ͬͯ΋Θ͔Βͳ͍ɻ
    ΫϥΠΞϯτιʔε͔Βݟ͑ΔൣғͰ͸Ұݟ໰୊ͳͦ͞͏ͳͷʹɺ
    ظ଴௨Γಈ͔ͳ͍ࣄ΋͋Γ·͢ɻ

    View Slide

  26. ΑΓਖ਼֬ͳ֬ೝͷͨΊͷɺ
    ௨৴पΓͷσόοάʹ໾ཱͭ
    ಓ۩ͷ঺հ

    View Slide

  27. ʲ8FC7JFXͷ௨৴σόοάʹ࢖͑Δಓ۩ʳ
    1$൛(PPHMF$ISPNFͷ
    ϦϞʔτσόοάػೳ

    View Slide

  28. εϚϗϒϥ΢βɺ8FC7JFXͰͷ֬ೝํ๏
    8FC7JFXͷσόοάʹ͸ɺ1$ͷ$ISPNF։ൃίϯιʔϧͰͷσόοά͕Φεεϝɻ

    1$ϒϥ΢βͱ΄΅ಉ͡ײ֮Ͱ8FC7JFX಺ͷ)5.-ɺ+4ΛϦϞʔτσόοάͰ͖·͢ɻ
    ར༻ํ๏͸(PPHMFެࣜυΩϡϝϯτIUUQTHPPHMW[H8OΛࢀরɻ
    σόοάதͷΞϓϦ$IJJ2IUUQTHPPHM$)6$5'

    View Slide

  29. ʲ0L)UUQͷ"1*௨৴σόοάʹ࢖͑Δಓ۩ʳ
    "OESPJE4UVEJPͷ/FUXPSL1SPpMFS
    0L)UUQͷ)UUQ-PHHJOH*OUFSDFQUPS

    View Slide

  30. ωοτϫʔΫϓϩϑΝΠϥͷىಈํ๏
    "OESPJE4UVEJP͔Βͷ࣮ߦதɺ7JFXϝχϡʔ1SPpMFSͷ/&5803,ཝ͔Β
    ΞϓϦͷ௨৴Λৄࡉʹ֬ೝ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    "OESPJE4UVEJPݱࡏɺ0L)UUQͱ)UUQ63-$POOFDUJPOΛ࢖ͬͨ઀ଓͷ
    ΈରԠ͍ͯ͠·͢ɻ
    0L)UUQΛ࢖ͬͯ։ൃ͍ͯ͠ΔͳΒͥͻ׆༻͠·͠ΐ͏ɻ
    ࢀߟαΠτɿ
    "OESPJE%FWFMPQFST/FUXPSL1SPpMFSΛ࢖༻ͯ͠ωοτϫʔΫτϥϑΟοΫΛݕࠪ͢Δ
    IUUQTEFWFMPQFSBOESPJEDPNTUVEJPQSPpMFOFUXPSLQSPpMFS
    ௨৴಺༰ؙ͕ݟ͑ʂεΰ͗͢Δ"OESPJE4UVEJPͷωοτϫʔΫϓϩϑΝΠϥʂ
    IUUQTSZVUBDPN

    View Slide

  31. "OESPJE4UVEJPͷωοτϫʔΫϓϩϑΝΠϥը໘

    View Slide

  32. 0L)UUQͷ*OUFSDFQUPS
    0L)UUQ͸*OUFSDFQUPSͱ͍͏ΠϯλʔϑΣΠεΛ

    ௨৴ͷಛఆλΠϛϯάʹࠩ͠ࠐΜͰɺͦͷ࣌఺ͷ3FRVFTU3FTQPOTFΦϒδΣΫ
    τΛऔಘͯ͠ɺϩάදࣔ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    ʲ*OUFSDFQUPSͷྫʳ
    ެࣜͰఏڙ͍ͯ͠ΔΫϥε)UUQ-PHHJOH*OUFSDFQUPS

    $VSMϩάॻࣜ൛$VSM)UUQ-PHHJOH*OUFSDFQUPSIUUQTHJUIVCDPNUFDIWFJOPLIUUQDVSMMPHHJOH
    ։ൃதιʔε ௨৴ϥΠϒϥϦ Πϯλʔωοτ
    .addNetworkInterceptor()
    .addInterceptor()
    Ωϟογϡ
    "OESPJE04
    ϑϨʔϜϫʔΫ

    View Slide

  33. ʲ"1*पΓͰ൚༻తʹ࢖͑Δ֬ೝ༻ͷಓ۩ʳ

    1$޲͚൚༻"1*ΫϥΠΞϯτπʔϧ
    DVSMίϚϯυ

    View Slide

  34. ൚༻"1*ΫϥΠΞϯτπʔϧʹ͍ͭͯ
    ɾ1PTUNBO
    IUUQTXXXHFUQPTUNBODPN
    ɾ .BD༻
    1BX
    IUUQTQBXDMPVE
    "1*͕࢓༷Ͳ͓Γಈ͍͍ͯΔ͔Λखܰʹ1$͔Β֬ೝ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    "1*ΫϥΠΞϯτπʔϧͰϦΫΤετ಺༰Λอଘ͓ͯ͘͠ͱɺ"1*୯ମ͕ਖ਼͘͠ಈ
    ͔͘Λ؆୯ʹ֬ೝͰ͖·͢ɻ

    View Slide

  35. 1PTUNBOͷը໘

    View Slide

  36. DVSMίϚϯυʹ͍ͭͯ
    ൚༻ͷίϚϯυϥΠϯ)551ΫϥΠΞϯτɻ
    ଟ͘ͷ04Ͱར༻Ͱ͖ɺػೳ΋ॆ࣮͍ͯ͠ΔͷͰɺϦΫΤετ಺༰ͷ֬ೝ΍ڞ༗ʹ
    ศརɻ

    (&5ϦΫΤετ
    DVSMIUUQHPPHMFDPKQTFBSDI RIPHF
    1045ϦΫΤετ
    DVSM91045ERIPHFIUUQHPPHMFDPKQTFBSDI

    View Slide

  37. ʲ௨৴σόοάʹ࢖͑Δ൚༻తͳಓ۩ʳ
    ϓϩΩγܕͷ௨৴؂ࢹπʔϧ

    View Slide

  38. ϓϩΩγܕͷ௨৴؂ࢹπʔϧ
    ϥΠϒϥϦ΍ΫϥΠΞϯτ؀ڥʹറΒΕͣɺ
    ΄ͱΜͲͷ)551)5514௨৴ΛಡΉ͜ͱ͕Ͱ͖Δɺ
    ΑΓ൚༻తͰศརͳ௨৴σόοάπʔϧͰ͢ɻ

    View Slide

  39. ϓϩΩγܕͷ௨৴؂ࢹπʔϧͷϝϦοτ
    ɾར༻ϥΠϒϥϦʹറΒΕͳ͍ɻ
    ɹˠ0L)UUQ΍)UUQ63-$POOFDUJPOΛ࢖͍ͬͯͳ͍௨৴΋ಡΊΔɻ7PMMFZͰ΋ԿͰ΋0,ɻ
    ɾ8FC7JFXͷ௨৴ͱ"1*ͷ௨৴Λෳ߹తʹ֬ೝͰ͖Δɻ
    ɾطଘίʔυͷ௨৴࢓༷͕Θ͔Βͳ͍࣌Ͱ΋ɺݟಀ͠ແ͘௨৴ΛΩϟονͰ͖Δɻ
    ɹˠϨΨγʔίʔυͷϝϯςφϯε΍ɺ֎෦ϥΠϒϥϦͷ௨৴͕Өڹ͢Δ৔߹ʹ΋࢖͑Δɻ
    ɾࢀর͚ͩͰͳ͘ฤू΋Ͱ͖ΔͳͲɺػೳ͕ॆ࣮͍ͯ͠Δɻ
    ɾ"OESPJEͷ֎Ͱͷ௨৴Λ௫·͑ΔͷͰɺ"OESPJEʹґଘ͠ͳ͍ɻ
    ɹˠ1$Ͱ΋J04Ͱ΋શ͘ಉ༷ʹར༻Ͱ͖Δɻ௒൚༻తɻ

    View Slide

  40. "OESPJEͷ֎Ͱ؂ࢹ͢Δ͜ͱͷϝϦοτ
    ʮ8FCଆ͕ਖ਼͍͠ಈ͖Λ͍ͯ͠Δ͔Ͳ͏͔ʁʯΛ֬ೝ͢Δͱ͖͸
    ΑΓ"1*ʹ͍ۙϦΫΤετɾϨεϙϯεΛݟΔ΄͏͕ɺ
    ΑΓಧ͘σʔλʹۙ͘ͳΔͷͰɺΑΓؒҧ͍͕ى͜Γʹ͘͘ͳΓ·͢ɻ
    ։ൃதιʔε ௨৴ϥΠϒϥϦ
    Πϯλʔωοτ
    "OESPJE04
    ϑϨʔϜϫʔΫ 8FCαʔό
    αʔόଆωοτϫʔΫ

    ͜͜ͰมԽ͍ͯ͠Δ͔΋
    Ωϟογϡɺ04ͷόάͳͲ

    !
    ͜͜ͰมԽ͍ͯ͠Δ͔΋
    Ωϟογϡɺϔομ௥ՃͳͲ

    !
    "1*͕ड͚औΔσʔλʹ͍ۙ
    "

    View Slide

  41. ϓϩΩγܕ௨৴؂ࢹπʔϧͷྫ
    IUUQTXXXDIBSMFTQSPYZDPN IUUQTNJUNQSPYZPSH
    $IBSMFT NJUNQSPYZ

    View Slide

  42. ஌͓͔ͬͯͳ͍ͱ͍͚ͳ͍ɺ҉߸Խ͍ͯ͠Δ44-௨৴͕ಡΊΔ࢓૊Έ
    44- )5514
    ௨৴ʹ࢖͏ೝূہ $"
    ͱͯ͠ϓϩΩγαʔόΛొ࿥ͯ͠ɺ
    αʔόɾΫϥΠΞϯτͷؒͰ҉߸ԽΛҰ౓ղআ͢Δ͜ͱͰ࣮ݱ͍ͯ͠·͢ɻ
    ᶆຊαʔόͷ
    ຊ෺ͷ44-ূ໌ॻͰ҉߸Խ
    ᶆϓϩΩγαʔό͕࡞ͬͨ
    Ծͷ44-ূ໌ॻͰ҉߸Խ
    ᶅೝূہΠϯετʔϧ
    ᶃೝূہ $"
    ʹͳΔ͔Β
    ࡞ͬͨূ໌ॻड͚ೖΕͯΑ
    ᶄΦοέʔ

    View Slide

  43. ؓ࿩ٳ୊
    ͍Ζ͍Ζͳಓ۩Λ঺հ͠·͕ͨ͠ɺ
    Ұ൪൚༻త͔ͭߴػೳͳͷ͕$IBSMFTͰ͢ͷͰɺ
    ͔͜͜Β͸۩ମྫͱͯ͠ɺجຊతʹ$IBSMFTΛલఏʹઆ໌Λଓ͚·͢ɻ
    .*5.1SPYZ
    "OESPJE4UVEJPͷωοτϫʔΫϓϩϑΝΠϥ
    $ISPNFͷ։ൃίϯιʔϧ
    ͳͲଞͷπʔϧͰ΋ಉ༷ͷ͜ͱ͕Ͱ͖Δ͜ͱ΋͋Γ·͢͠ɺ
    ࢖͍෼͚Δ΄͏͕ศརͳ͜ͱ΋͋ΔͷͰ͕͢ɺઆ໌͕௕͘ͳͬͯ͠·͍·͢ͷͰׂѪ͠·͢ɻ
    ͦΕͧΕͷπʔϧͷ࢖͍ํ͸ɺࠓճͷεϥΠυΛώϯτʹͭͭ͠ɺެࣜυΩϡϝϯτ΍RJJUB
    ͳͲΛ͋ͨͬͯΈͯԼ͍͞ɻ

    View Slide

  44. $IBSMFTಋೖखॱ
    $IBSMFTͷαΠτͷखॱʹै͏͔ɺRJJUBͳͲͷهࣄΛࢀߟʹͯ͠Լ͍͞ɻ
    IUUQTXXXDIBSMFTQSPYZDPN
    ʲ͓͓·͔ͳखॱʳ
    ɾ<"OESPJE>XJpઃఆৄࡉϓϩΩγϗετɾϙʔτઃఆ
    ɾ<"OESPJE>DIMTQSPTTMʹΞΫηεͯ͠ೝূہొ࿥
    ɾ<1$>"OESPJE͔Βͷ઀ଓΛڐՄ
    ɾ<1$>44-1SPYZJOH4FUUJOHTͷϗετʹ ΞελϦεΫ
    Λ௥Ճ
    ɾ<1$>͜ΕͰ"OESPJEͷ௨৴͕1$Ͱݟ͑ΔΑ͏ʹͳΔɻ

    View Slide

  45. ʲิ଍ʳ"OESPJEҎ߱ͷ௥Ճઃఆ
    "OESPJEҎ߱ɺηΩϡϦςΟ্ͷཧ༝͔ΒɺϢʔβ͕௥Ճͨ͠ೝূہΛ
    σϑΥϧτͰແࢹ͢ΔΑ͏ʹͳΓ·ͨ͠ɻ
    "OESPJEҎ߱Ͱ$IBSMFTͳͲΛ࢖͍͍ͨ৔߹͸ɺର৅ΞϓϦ͝ͱʹҎԼͷΑ͏
    ͳઃఆ͕ඞཁͰ͢ɻ
    ᶃSFTYNMOFUXPSL@TFDVSJUZ@DPOpHYNM
    ɹσόοάத͚ͩϢʔβೝূہΛڐ༰͢ΔઃఆΛ௥Ճ͢Δɻ
    ᶄ"OESPJE.BOJGFTUYNMͷBQQMJDBUJPOʹ
    ɹOFUXPSL4FDVSJUZ$POpHଐੑΛ௥Ճ
    ʲઃఆྫʳ

    View Slide

  46. ʲิ଍̎ʳ"OESPJEͷূ໌ॻِ૷ରࡦͷӨڹ
    ˞ͳΜ͔͍Ζ͍Ζॻ͍ͯ·͕͢ɺΑ͘෼͔Βͳ͚Ε͹ಡ·ͳͯ͘େৎ෉Ͱ͢ɻ
    ΞϓϦଆͰِ૷ূ໌ॻʹΑΔ౪ௌ .*5.߈ܸ
    Λ๷ࢭ͢ΔͨΊʹ
    $FSUJpDBUF1JOOJOHͳͲͷํ๏͕͋Γ·͢ɻ
    ࢀߟϖʔδɿ)5514͓Αͼ44-ʹΑΔηΩϡϦςΟ"OESPJE%FWFMPQFST
    IUUQTEFWFMPQFSBOESPJEDPNUSBJOJOHBSUJDMFTTFDVSJUZTTM IMKB
    ͜ΕΒΛ࣮૷͍ͯ͠Δͱ$IBSMFTɺ.*5.1SPYZͳͲͷϓϩΩγܕ؂ࢹπʔϧ͔Β
    44-௨৴͕ಡΊͳ͘ͳΓ·͢ͷͰɺඞཁʹԠͯ͡ ηΩϡϦςΟͱ૬ஊͰ
    ։ൃதͷ
    ΈॲཧΛແޮԽ͢ΔͳͲͷճආରԠΛߦͬͯԼ͍͞ɻ

    View Slide

  47. $IBSMFTͰ"OESPJEͷ௨৴ΛಡΉ
    ᶃεϚϗͰ௨৴
    ։ൃதΞϓϦɺϒϥ΢βͳͲ

    ᶄ1$ $IBSMFT
    ͰϩάνΣοΫ

    View Slide

  48. $IBSMFTͰϦΫΤετɾϨεϙϯεͷৄࡉΛݟΔ
    ૹड৴ͨ͋͠ΒΏΔσʔλ ϔομɾΫοΩʔɾ$POUFOU#PEZ
    Λ
    ޷͖ͳॻࣜͰ֬ೝͯ͠ɺίϐʔ͢Δ͜ͱ͕Ͱ͖·͢ɻ

    View Slide

  49. DVSMίϚϯυͱͯ͠ίϐʔͯ͠࠶ݱ͢Δ
    εϚʔτϑΥϯͷ௨৴ΛDVSMίϚϯυͱͯ͠ίϐʔͰ͖ɺ
    λʔϛφϧͰ࣮ߦ͢Ε͹ಉ݁͡ՌΛ࠶ݱ͢Δ͜ͱ͕Ͱ͖·͢ɻ

    ϦΫΤετ಺༰͕໌നͳͷͰɺ"1*୲౰ऀ΁ͷෆ۩߹ใࠂ࣌ʹศརͰ͢ɻ
    DVSM))PTUXXXHPPHMFDPN)$PPLJF)
    VTFSBHFOU.P[JMMB -JOVY"OESPJE"

    "QQMF8FC,JU)BDDFQUUFYUIUNM BQQMJDBUJPO
    YIUNMYNM BQQMJDBUJPOYNMR JNBHFXFCQ JNBHF
    BQOH R BQQMJDBUJPOTJHOFEFYDIBOHFWC)
    BDDFQUMBOHVBHFKB+1 KBR FO64R FOR
    DPNQSFTTFEIUUQTXXXHPPHMFDPNTFBSDI
    RIPHFPRIPHFBRT

    View Slide

  50. ͦͷଞ$IBSMFTͰωοτϫʔΫσόοά࣌ʹ࢖͑Δػೳ
    ɾ৚݅ʹҰக͢ΔϨεϙϯεΛ޷͖ͳ஋ʹஔ͖׵͑Δ
    ɹˠ8FC7JFX "1*ͳͲͷ݁ՌΛࣗ༝ʹม͑ΒΕΔ
    ɾϦΫΤετɾϨεϙϯεͷϒϨʔΫϙΠϯτ
    ɹˠ௨৴Մ൱Λ౎౓ܾΊͨΓɺσʔλΛखಈͰվมͰ͖Δ
    ɾϛϥʔϦϯά
    ɹˠαʔόͷϨεϙϯεͷ୅ΘΓʹ1$಺ͷσʔλΛฦ͢

    View Slide

  51. ɾ%/4εϓʔϑΟϯά
    ɹˠ%/4ʹհೖͯ͠ຊ൪υϝΠϯΛ։ൃαʔό*1ʹ޲͚ΔɺͳͲ
    ɾϦΫΤετͷ࠶࣮ߦ
    ɹˠϨεϙϯε͕ฦͬͯ͜ͳ͔ͬͨ΋ͷΛϦτϥΠͯ͠ΈΔɺͳͲ

    ɾ௨৴ྔ੍ݶɺ஗Ԇ࣌ؒઃఆ
    ɹˠ͠ΐ΅͍؀ڥΛγϛϡϨʔτ͢Δ
    ɾͦͷଞ͍Ζ͍Ζ
    ɹˠDIBSMFTެࣜαΠτࢀর

    View Slide

  52. ௨৴ܥσόοάπʔϧΛ
    ׆༻ͯ͠ݪҼڀ໌͠Α͏

    View Slide

  53. ௨৴Ͱ໰୊͕ى͖ͨͱ͖ͷ֬ೝखॱʢվగ൛ʣ
    ᶃྫ֎ͷৄࡉΛϩάʹग़͢ࣄ͔Β࢝ΊΔɻ
    ᶄ)551Ϩεϙϯε͕ಧ͍͍ͯΔͳΒɺ
    ɹϨεϙϯεͷ)551εςʔλείʔυΛ֬ೝ͢Δɻ
    ᶅಉ༷ʹɺΫϥΠΞϯτଆͷϨεϙϯεύʔεॲཧΛ֬ೝ͢Δɻ
    ᶆϦΫΤετ௨৴͕ਖ਼͘͠ඈΜͰ͍Δ͜ͱΛ௨৴σόοάπʔϧͰΑΓਖ਼֬ʹ֬ೝ͢Δɻ
    ᶇϨεϙϯε͕ਖ਼͘͠ඈΜͰ͘Δ͔Λ௨৴σόοάπʔϧͰΑΓਖ਼֬ʹ֬ೝ͢Δɻ

    View Slide

  54. खॱᶆΑΓਖ਼֬ʹ୺຤͔ΒϦΫΤετ௨৴͕ඈΜͰ͍Δ͜ͱΛ֬ೝ͢Δ
    ௨৴σόοάπʔϧΛ࢖ͬͯ௨৴ϩάΛऔΕ͹ɺ
    ΑΓਖ਼֬ʹϦΫΤετ಺༰ͱૹ৴λΠϛϯάɺϨεϙϯεड৴ঢ়گΛ஌Δ͜ͱ͕Ͱ
    ͖·͢ɻ

    View Slide

  55. ྫɿϦΫΤετૹ৴ঢ়گΛ$IBSMFTͰ֬ೝ͢Δ
    ϦΫΤετ͕ૹ৴Ͱ͖͍ͯΕ͹ɺ$IBSMFTͷϩάʹྲྀΕ·͢ɻ
    ߦ໨ͷόπϚʔΫɹ͸௨৴ϦΫΤετૹ৴ޙɺड৴લʹࣦഊͨ͠ঢ়ଶͰ͢ɻ
    ࠷ޙͷߦͷ࣌ܭϚʔΫ͸ϦΫΤετૹ৴ޙɺϨεϙϯε͕དྷ͍ͯͳ͍ঢ়ଶͰ͢ɻ

    View Slide

  56. ྫɿϦΫΤετͷৄࡉΛ$IBSMFTͰݟΔ
    දࣔ಺༰ɺදࣔॻࣜΛ͜͜Ͱม͑ΒΕΔɻ
    ϦΫΤετຊจɺΫοΩʔɺੜͷ)551ϦΫΤετςΩετσʔλͳͲ

    View Slide

  57. ϦΫΤετ͕ྲྀΕͯ͜ͳ͍৔߹ɺૹ৴ଆʹ໰୊͕͋Δ͔΋
    ΋͠ϦΫΤετ͕ྲྀΕͯͳ͍ͳΒɺ
    ͓ͦΒ͘ϦΫΤετ࣮ߦ·ΘΓͷ࣮૷Ͱ໰୊͕ى͖͍ͯ·͢ɻ
    ϦΫΤετ಺༰ɺͱ͘ʹѼઌɺϙʔτ͕ؒҧ͍ͬͯͳ͍͔Λ֬ೝ͠·͠ΐ͏ɻ

    View Slide

  58. ิ଍ɿয͍ͬͯΔͱ͖΄ͲɺϦϥοΫεΛ৺͕͚Α͏
    ϦΫΤετ͕Կ΋ྲྀΕͯ͜ͳ͍࣌͸೦ͷҝʹϩάͷͱΓํ͸ؒҧͬͯͳ͍͔
    ΋֬ೝ͓͖ͯ͠·͠ΐ͏ɻ
    ಉҰΞϓϦͰಈ࡞ͯ͠Δ"1*Λୟ͍ͯΈΔɺͳ͚Ε͹ϒϥ΢βͰΞΫηεͳͲɺ
    ໰୊ͳ͍ϦΫΤετΛࢼͯ͠ɺϦΫΤετɾϨεϙϯε͕ྲྀΕ͍ͯΕ͹ϩάઃఆ͕
    ਖ਼͍͜͠ͱΛ֬ೝͰ͖·͢ɻ
    ਓ͸য͍ͬͯΔͱؒҧ͑Δ΋ͷͰ͢ɻ

    View Slide

  59. खॱᶇϨεϙϯε͕ਖ਼͘͠ඈΜͰ͘Δ͔ΛΑΓਖ਼֬ʹ֬ೝ͢Δ
    ϦΫΤετͱಉ༷ʹɺ௨৴σόοάπʔϧΛ࢖ͬͯ
    ϨεϙϯεΛ֬ೝͯ͠Έ·͠ΐ͏ɻ

    View Slide

  60. ௨৴ϩά͸ྲྀΕΔͷʹɺΞϓϦଆͰ௨৴݁ՌΛड͚औΕͳ͍৔߹ɺ
    ΞϓϦଆͷϨεϙϯεड͚औΓ࣮૷पΓͰ໰୊͕ى͖͍ͯΔՄೳੑ͕͋Γ·͢ɻ
    ίʔϧόοΫ࣮૷࿙ΕͳͲΛ͍ٙ·͠ΐ͏ɻ
    ਖ਼͍͠ϦΫΤετ͕ඈΜͰ͍ΔͷʹϨεϙϯεϩά͕ྲྀΕͯ͜ͳ͍৔߹ɺ
    ͍͍ͩͨͷݪҼ͸௨৴؀ڥͷ໰୊͔ɺαʔόଆͰͷॲཧ͕ॏ͍͔ͷͲͪΒ͔Ͱ͢ɻ

    View Slide

  61. αʔόͷ໰୊͔ɺ௨৴ͷ໰୊͔Λ੾Γ෼͚Δํ๏
    ܞଳճઢʹͯ͠ΈΔɺ8J'Jʹͯ͠ΈΔͳͲճઢΛ੾Γସ͑ͯಈ࡞֬ೝ͢Δͱɺ
    ϩʔΧϧͷ௨৴؀ڥͷ໰୊͔Ͳ͏͔Λ੾Γ෼͚ΒΕ·͢ɻ
    σόοάπʔϧͰϦΫΤετ಺༰ΛDVSMͱͯ͠ίϐʔ͢ΔͳͲͯ͠ɺ
    1$ͳͲ͔ΒಉҰ"1*ϦΫΤετΛ࠶ݱͯ͠ΈΔͷ΋੾Γ෼͚ʹ໾ཱͪ·͢ɻ
    ܞଳճઢ͸ܨ͕ΔͷͰɺ
    8J'J͕ॏ͍ͷ͕ݪҼͷΑ͏ͩɻ

    View Slide

  62. ͦΕͰ΋೰Ή࣌͸
    ࣗ෼ͷ୺຤ઃఆɺ௨৴؀ڥ͕ݪҼͷ৔߹ʮԶͷ؀ڥ͚ͩಈ͔ͳ͍ʯύλʔϯ΋ׂͱ
    ͋Γ·͢ɻ
    ߦ͖٧·ͬͨΒ8FC։ൃνʔϜ΍ଞͷϝϯόʔʹDVSMίϚϯυΛڞ༗ͯ͠Ұॹʹ֬
    ೝͯ͠΋Β͍·͠ΐ͏ɻ
    ΋͠΋αʔόϩάΛݟΔ͜ͱ͕Ͱ͖ΔͳΒɺ
    αʔόϩάͰΞΫηεܗ੻Λௐ΂Δͷ΋੾Γ෼͚ʹ໾ཱͪ·͢ɻ

    View Slide

  63. "1*ͷϞοΫσʔλ͕͋ΔͱɺΫϥΠΞϯτଆͷ໰୊ʹߜΓࠐΊΔ
    8FC"1*ͷ৔߹ɺ

    ϦΫΤετʹର͢ΔϨεϙϯεͷϞοΫσʔλ͕͋Ε͹ɺ
    ͦͷϦΫΤετʹ͍ͭͯɺ"1*ىҼͷ໰୊΍௨৴ো֐Ͱಈ͔ͳ͍ͷ͔ɺ
    ΞϓϦଆͷෆ۩߹͔Λ۠ผ͢Δॿ͚ʹͳΓ·͢ɻ
    ʲϞοΫΛΫϥΠΞϯτͰར༻͢Δํ๏ྫʳ
    ɾ"1*ΫϥΠΞϯτͷϞοΫ)551αʔόػೳΛ࢖͏ɻ
    ɹ0L)UUQͷ.PDL8FC4FSWFS΍

    ɹ,UPS)UUQ$MJFOUͷ.PDL&OHJOFͳͲɻ
    ɾ$IBSMFTͷϛϥʔϦϯά౳ͷػೳͰϞοΫσʔλΛฦ͢Α͏ʹ͢Δɻ

    View Slide

  64. ϞοΫσʔλͷ༻ҙํ๏
    "1*࢓༷ͷϨεϙϯεྫΛ࢖ͬͯ΋͍͍ͷͰ͕͢
    ͢Ͱʹಈ࡞͢Δ"1*؀ڥ͕͋ΔͷͰ͋Ε͹ͦͷϨεϙϯεΛ࢖͏ͷ͕؆୯Ͱ͢ɻ
    Ϩεϙϯεͷ+40/ͳͲΛϦΫΤετͱ߹Θͤͯอଘ͓ͯ͘͠ͱ
    ύϥϝʔλ͝ͱͷόϦΤʔγϣϯΛ؆୯ʹ༻ҙ͢Δ͜ͱ͕Ͱ͖·͢ɻ
    "1*ʹ͓͍ͯϞοΫσʔλ͸ɺಛʹϨΞέʔεͳϨεϙϯεΛ֬ೝ͢Δࡍͷ
    ڧྗͳख๏ʹͳΓ·͢ɻ

    View Slide

  65. ·ͱΊ
    ɾ௨৴पΓͰҙਤ͠ͳ͍ڍಈΛ͢Δͱ͖͸ɺམͪண͍ͯݪҼΛ੾Γ෼͚Α͏ɻ
    ɾҰݟؔ܎ͳ͍Τϥʔʹݟ͑ͯ΋ɺࣗ෼ʹԿ͔Ͱ͖Δ͜ͱ͸ͳ͍͔ߟ͑Α͏ɻ
    ɾ௨৴ܥͷσόοάπʔϧΛϑϧ׆༻ͯ͠ɺϦΫΤετͱϨεϙϯεΛௐ΂Α͏ɻ
    ɾϞοΫσʔλΛ࢖͏ͱɺ໰୊੾Γ෼͚ʹ໾ཱͪɺϨΞέʔεͳڍಈͷςετ΋Մ
    ೳʹͳΔɻ
    ɾࣗ෼ͷ୺຤؀ڥ͕ѱ͍৔߹ͳͲҰਓ͡ΌղܾͰ͖ͳ͍໰୊΋͋Δɻ

    ɹଞͷ։ൃϝϯόʔʹڞ༗ͯ͠Ұॹʹ֬ೝͯ͠ΈΑ͏ɻ

    View Slide

  66. ʲ͓·͚ʳ໨తผɺ͜͏͍͏࣌ͷ֬ೝσόοάʹ͸͜ͷಓ۩Λ࢖͓͏Ϧετ
    ɾ8FC7JFXͷಈ͖͕ո͍͠ɻ
    ɹˠԿ͸ͱ΋͋Ε$ISPNF։ൃίϯιʔϧɻ+4ͷϒϨʔΫϙΠϯτσόοάͭͭ͠ɺωοτϫʔΫϩάΛݟΔɻ

    ɹˠ8FC7JFX֎ͷ"1*ͳͲͷӨڹΛड͚͍ͯͦ͏ͳΒɺ$IBSMFTΛซ༻͢Δɻ
    ɾࣗ෼Ͱ࣮૷ͨ͠"1*ͷಈ͖͕ո͍͠ɻ
    ɹˠ0L)551ͳΒɺ*OUFSDFQUPSͰϩάΛྲྀͭͭ͠ɺ"OESPJE4UVEJPͷωοτϫʔΫϓϩϑΝΠϥͰσόοά͢
    Δɻ
    ɹˠଞͷӨڹ͕͋Γͦ͏ͩͬͨΓɺDVSMͰίϐʔͨ͘͠ͳͬͨΓɺ$IBSMFTͷػೳ͕ඞཁͳΒ$IBSMFTΛ࢖͏ɻ
    ɹˠ"1*ͷෆ۩߹Λٙ͏લʹɺ"1*ΫϥΠΞϯτπʔϧ΍DVSMΛ࢖ͬͯɺਖ਼͍͠ϦΫΤετΛૹͬͯ֬ೝ͢Δ
    ɾո͍͠ͱ͜Ζ͕Θ͔Βͳ͍͚Ͳɺͱʹ͔͘௨৴पΓ͕͓͔͍͠ɻ
    ɹˠ"OESPJE4UVEJPͷϓϩϑΝΠϥʹ͔͚ͯܰ͘ݟͯΈΔɻ
    ɹˠΘ͔Βͳͦ͏ͳΒɺ͙͢੾Γ্͛ͯ$IBSMFTΛ࢖͏ɻ
    ͜ΕͰηογϣϯ͸ऴΘΓͰ͢ɻ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ
    IUUQTNJSVEFTJUF

    View Slide