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

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

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. ழມɹॆԝ (͍ͷ·ͨɹΈͭͻΖ) Twitter: @ino2222 גࣜձࣾ tech vein ୅ද ݉ σϕϩούʔ

    େࡕͷAndroid/iOS/Web։ൃ͕ಘҙͳडୗγεςϜ։ൃձࣾͰ͢ɻ https://www.tech-vein.com/ ɹɹࣗݾ঺հ
  2. ɹɹݸਓͷུྺ 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~ݱࡏ)
  3. 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~ݱࡏ) ɹɹݸਓͷུྺ ྘ɿαʔόܦݧ ੺ɿΫϥΠΞϯτ
  4. ௨৴पΓ͸ؔ܎͢Δ΋ͷ͕ଟ͍ͷͰʜ Webαʔό DNSαʔό ϩʔυόϥϯαʔ ܞଳి೾໢ ج஍ہ ܞଳి࿩໢ Πϯλʔωοτ υϝΠϯϨδετϥ *41

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

    8J'JϧʔλͳͲ ܞଳճઢͰͷ઀ଓ 8J'J઀ଓ αʔόଆωοτϫʔΫ "84 ($1ͳͲ Webαʔό DBαʔό ϑΝΠΞ΢Υʔϧ αʔό͕མͪͯΔͷ͔ʜ
  6. Webαʔό DNSαʔό ϩʔυόϥϯαʔ ܞଳి೾໢ ج஍ہ ܞଳి࿩໢ Πϯλʔωοτ υϝΠϯϨδετϥ *41 ωοτϫʔΫ

    8J'JϧʔλͳͲ ܞଳճઢͰͷ઀ଓ 8J'J઀ଓ αʔόଆωοτϫʔΫ "84 ($1ͳͲ Webαʔό DBαʔό ϑΝΠΞ΢Υʔϧ ௨৴؀ڥͷτϥϒϧൃੜʂ Ͳ͜Ͱো֐ɾ໰୊͕ى͖͍ͯΔ͔͕෼͔ΓͮΒ͍ɻා͍ɻ
  7. Webαʔό DNSαʔό ϩʔυόϥϯαʔ ܞଳి೾໢ ج஍ہ ܞଳి࿩໢ Πϯλʔωοτ υϝΠϯϨδετϥ *41 ωοτϫʔΫ

    8J'JϧʔλͳͲ ܞଳճઢͰͷ઀ଓ 8J'J઀ଓ αʔόଆωοτϫʔΫ "84 ($1ͳͲ Webαʔό DBαʔό ϑΝΠΞ΢Υʔϧ Ͱ΋େৎ෉ʂ ௨৴पΓ΋ɺ໰୊ͷ੾Γ෼͚Λ͢Ε͹ා͘ͳ͍ʂ google.co.jp ಉ͡ܞଳͰ GooglF͸ݟ͑ͯΔɻ ͱ͍͏͜ͱ͸αʔόো֐͔΋ ! !
  8. खॱᶃྫ֎ͷৄࡉΛϩάʹग़͢ࣄ͔Β࢝ΊΔ 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 ...