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

my new error

my new error

sadnessOjisan

March 19, 2023
Tweet

More Decks by sadnessOjisan

Other Decks in Programming

Transcript

  1. My New Error…
    It is my new era.
    1
    Nikkei Inc.
    Yuta Ide(@sadnessOjisan) YAPC::Kyoto 2023

    View Slide

  2. ࣗݾ঺հ
    {


    “໊લ”: “Yuta Ide”,


    “ॴଐ”: “೔ຊܦࡁ৽ฉࣾ”,


    “࢓ࣄ”: [“Frontend”, “CDN Edge”, “BFF Server”]


    }
    2

    View Slide

  3. 3

    View Slide

  4. 4

    View Slide

  5. ࢲͱ Try Catch
    • 2022/10/01 - 2022/12/31 ͷ̏ϲ݄ؒɺΞϥʔτ؂ࢹͷ࢓ࣄ
    ͚ͩΛ͢Δ


    • ࢲͷνʔϜ͸̏̌ݸ͍ۙϨϙδτϦ͕Քಇ͍ͯ͠ΔϚΠΫϩαʔϏε؀ڥͰɺ
    ֤αʔϏε͕ग़ྗ͢ΔΤϥʔϩά͕ Slack ʹ࿈ܞ͞ΕΔ


    • ΤϥʔϋϯυϦϯά͕ෆे෼ͳαʔϏε͔Βͷग़ྗʹ೰·͞ΕΔ
    5

    View Slide

  6. Nikkei Tech Talk Ͱͷ঺հ
    • Nikkei Tech Talk ͸೔ܦͷΤϯδχΞ૊৫
    ͷษڧձ


    • #3 ͷϑϩϯτΤϯυճͰΞϥʔτվળͷ
    औΓ૊ΈΛ঺հ
    6
    https://speakerdeck.com/sadnessojisan/jian-shi-
    senaakansi-wu-da-zhi-dakeniookamitutena

    View Slide

  7. Nikkei Tech Talk Ͱͷ঺հ
    • Nikkei Tech Talk ͸೔ܦͷΤϯδχΞ૊৫
    ͷษڧձ


    • #3 ͷϑϩϯτΤϯυճͰΞϥʔτվળͷ
    औΓ૊ΈΛ঺հ
    7
    https://speakerdeck.com/sadnessojisan/jian-shi-
    senaakansi-wu-da-zhi-dakeniookamitutena
    ΦΦΧϛ

    View Slide

  8. ΦΦΧϛগ೥໰୊΁ͷରॲΛ঺հͨ͠
    • લ೚ऀෆࡏͰՔಇதͷαʔϏε܈͕SlackͷΞϥʔτνϟϯωϧΛຒΊਚ͘͠
    ͍ͯͨ


    • ۓٸ౓ͷ௿͍Τϥʔ͕ଟ͘ɺʮͲ͏ͤۓٸ౓௿͍͔Βݟͳ͍͍ͯ͘΍ʯͱ͍
    ͏ΦΦΧϛগ೥໰୊͕ਂࠁͩͬͨ


    • ̏ϲ݄͔͚ͯमਖ਼ͨۤ͠ಆͷه࿥͕ઌͷεϥΠυ


    • Ξϥʔτͷऩू


    • Ξϥʔτϩά͕Ͳ͔͜Βൃ͍ͯ͠Δ͔ίʔυϨϕϧͰ௥͍͔͚Δ


    • ΞϥʔτͷઃఆΛݟ௚͢
    8

    View Slide

  9. ݸਓϒϩάͰͷ঺հ - My new error… -
    • ʮ͜͏͍͏ΤϥʔϋϯυϦϯάΛ͢Ε͹
    ؂ࢹ͠΍͍͢ʯͱ͍ͬͨςΫχοΫͷ঺
    հ


    • Result


    • Custom Error


    • Error Cause


    • Sentry
    9
    https://blog.ojisan.io/my-new-error/

    View Slide

  10. ݸਓϒϩάͰͷ঺հ - Sentry SDK ׬શཧղ -
    • Sentry SDKͷ࢓૊Έʹ͍ͭͯ


    • Sentry ͸ઃఆ߲໨͕ͱͯ΋ଟ͍͕ɺ
    Sentry ͷ࢓૊ΈΛ஌Ε͹ԿΛઃఆ͢΂͖
    ͔͢͜͠ݟ͑ͯ͘Δ
    10
    https://blog.ojisan.io/sentry-sdk-kanzen-rikai/

    View Slide

  11. ࠓ೔ͷొஃͰ࿩͍ͨ͜͠ͱ
    • Nikkei Tech Talk: ෛ࠴ฦࡁ׆ಈͰͷΞϥʔτվળͷటष͍औΓ૊ΈΛ঺հ


    • ϒϩά: ΤϥʔϋϯυϦϯάͷͨΊͷཧ૝࿦΍ٕज़తͳςΫχοΫΛ঺հ


    • YAPC: ཧ૝࿦Λݱ࣮ͷطଘͷΞϓϦέʔγϣϯʹద༻͢Δ࣮ફʹϑΥʔΧε
    11

    View Slide

  12. ೔ܦͰ͸Կ͕ى͖͍͔ͯͨ
    12

    View Slide

  13. զʑ͸ͳͥΞϓϦέʔγϣϯ؂ࢹΛ͍ͨ͠ͷ͔
    • ো֐ʹؾ͖͍ͮͨ


    • જࡏతͳো֐ʹؾ͖͍ͮͨ
    13

    View Slide

  14. Ͳ͏͍͏πʔϧΛ࢖͑͹͍͍ͷ͔
    • PagerDuty: Φϯίʔϧ
    14

    View Slide

  15. Ͳ͏͍͏πʔϧΛ࢖͑͹͍͍ͷ͔
    • PagerDuty: Φϯίʔϧ


    • StatusCake: ֓ܗ؂ࢹ
    15

    View Slide

  16. Ͳ͏͍͏πʔϧΛ࢖͑͹͍͍ͷ͔
    • PagerDuty: Φϯίʔϧ


    • StatusCake: ֓ܗ؂ࢹ


    • Sentry: ϩΪϯάɺΞϥʔτ
    16

    View Slide

  17. Ͳ͏͍͏πʔϧΛ࢖͑͹͍͍ͷ͔
    • PagerDuty: Φϯίʔϧ


    • StatusCake: ֓ܗ؂ࢹ


    • Sentry: ϩΪϯάɺΞϥʔτ


    • GCP / AWS: උ͑෇͚ͷϩάج൫
    17

    View Slide

  18. Ͳ͏͍͏πʔϧΛ࢖͑͹͍͍ͷ͔
    • PagerDuty: Φϯίʔϧ


    • StatusCake: ֓ܗ؂ࢹ


    • Sentry: ϩΪϯάɺΞϥʔτ


    • GCP / AWS: උ͑෇͚ͷϩάج൫


    • Datadog: ϩάج൫ɺαʔϏεލ͍ͩ౷߹ɺΫΤϦ͕͠΍͍͢
    18

    View Slide

  19. Ͳ͏͍͏πʔϧΛ࢖͑͹͍͍ͷ͔
    • PagerDuty: Φϯίʔϧ


    • StatusCake: ֓ܗ؂ࢹ


    • Sentry: ϩΪϯάɺΞϥʔτ


    • GCP / AWS: උ͑෇͚ͷϩάج൫


    • Datadog: ϩάج൫ɺαʔϏεލ͍ͩ౷߹ɺΫΤϦ͕͠΍͍͢


    • Kibana: ݕࡧɺϏδϡΞϥΠζ
    19

    View Slide

  20. πʔϧʹΑΔ৘ใ൙ཞ
    • πʔϧͷ໾ׂ͕ඃ͍ͬͯΔ


    • Datadog ΋ cloud monitoring ΋ΞϥʔτͰ͖Δ


    • ͱ͸͍͑ɺ໨తΛܾΊ͍ͯΔͷͰ͋Ε͹ݸผʹ͞·͟·ͳπʔϧΛಋೖ͢
    Δ͜ͱࣗମ͸ྑ͍ͱ͞Ε͍ͯΔ


    • ͔͠͠ɺͦͷલఏͷڞ༗͕ෆे෼ͩͱ৘ใ൙ཞ͕ൃੜ͢Δ


    • ʮ͜͏͍͏ো֐͕ى͖ͨͱ͖͸ԿΛݟΕ͹͍͍Ͱ͔͢ʁʯ
    20

    View Slide

  21. ೔ܦͰͷো֐؂ࢹ
    • Ξϥʔτͷߑਫ


    • ΦΦΧϛগ೥໰୊


    • ΞϥʔτΛಡΜͰ΋ԿͷΞϥʔτ͔෼͔Βͳ͍


    • ͰΔ΂͖ϩά΍Ξϥʔτ͕ग़͍ͯͳ͍


    πʔϧ͸ಋೖ͞Ε͍ͯΔ͕ޮՌ͕ൃش͞Ε͍ͯͳ͍
    21

    View Slide

  22. ͳͥ؂ࢹ্͕ख͍͔͘ͳ͍͔
    • ࣮૷ͷ໰୊: πʔϧͷྗΛൃشͰ͖͍ͯͳ͍


    • ૊৫ͷ໰୊: ӡ༻΍ϧʔςΟϯͷઃܭ͕Ͱ͖͍ͯͳ͍


    • ՔಇϦιʔεͷௐ੔


    • ผҊ݅ͱͷ༏ઌॱҐͷௐ੔
    22

    View Slide

  23. ͳͥ؂ࢹ্͕ख͍͔͘ͳ͍͔
    • ࣮૷ͷ໰୊: πʔϧͷྗΛൃشͰ͖͍ͯͳ͍


    • ૊৫ͷ໰୊: ӡ༻΍ϧʔςΟϯͷઃܭ͕Ͱ͖͍ͯͳ͍


    • ՔಇϦιʔεͷௐ੔


    • ผҊ݅ͱͷ༏ઌॱҐͷௐ੔
    23
    ·࣮ͣ૷ͷ໰୊ʹऔΓ૊Ή

    View Slide

  24. ΤϥʔϋϯυϦϯάΛ๨Εͳ͍ͨΊʹResultܕͷಋೖ
    • JS Ͱ͸ྫ֎ͷ؅ཧ͸ try catch Ͱߦ
    ͏


    • ͔͠͠Ͳͷؔ਺͕ྫ֎Λ౤͛Δ͔
    Λ஌Βͳ͍ͱ try Λ෇͚Εͳ͍


    • νʔϜ։ൃ΍ϥΠϒϥϦͷར༻ͳ
    Ͳɺࣗ෼͕࡞͍ͬͯͳ͍ίʔυΛ
    ݺͼग़͢ͱ͖ʹ͚ͭ๨Ε͕ൃੜ͢
    Δ
    24

    View Slide

  25. ΤϥʔϋϯυϦϯάΛ๨Εͳ͍ͨΊʹResultܕͷಋೖ
    • ੒ޭɾࣦഊΛ Result ͱ͍͏ܕͰද
    ݱ


    • type Result = { _tag:
    “success”, val: T} | {_tag: “err”, val:
    E }


    • TS ؀ڥͰ͸ݺͼग़͠ଆʹ੒ޭ͔ࣦ
    ഊ͔ͷ֬ೝΛڧ੍ͤ͞ΒΕΔͷ
    ͰɺΤϥʔϋϯυϦϯάͷ͠๨Ε
    Λ๷͛Δ
    25

    View Slide

  26. Result ܕʹৼΓ੾Δ͜ͱ͸ຊ౰ʹଥ౰ͳͷ͔
    • ΦϒδΣΫτͷੜ੒ͱݕূ͸ਖ਼ৗܥʹ͓͍ͯ͸ʢແࢹͰ͖Δ΄ͲʹඍʑͨΔ
    ΋ͷ͚ͩͲʣແବͳίετͰ͸ͳ͍͔


    • ഑ྻɺΦϒδΣΫτɺMapʹΞΫηεͨ͠ͱ͖ͷϋϯυϦϯάʹ΋ Result ͕
    ग़ͯ͘ΔͷͰ͸ͳ͍͔


    • const a = [1]; const b = a[0]; ઈରʹ஋͕ೖ͍ͬͯΔ b Λ number ͱͯ͠࢖͍
    ͨͯ͘΋ܕ্Ͱ͸ undefined, ྫ֎Λ౤͛ͨ͘ͳΒͳ͍Ͱ͔͢ʁ


    • ͦ΋ͦ΋ݴޠػೳͰͳ͍΋ͷʹཔΔͱຊདྷͷτϨʔε͕ෆਖ਼֬ʹͳΔͷͰ͸
    ͳ͍͔
    26

    View Slide

  27. ϝϦοτʹ໨Λ޲͚ͯ Resultܕ ͷಋೖ΁ͱ౿Έ੾Δ
    • ೔ܦͷಛੑ্SSR͕ඞਢͰɺ෦෼తͳࢴ໘ੜ੒ʹ
    ࣦഊͨ͠ͱ͖ʹରԠ͠΍͍͢


    • ৽ฉهࣄͷೖߘ͸ͱͯ΋ࣗ༝౓͕ߴ͘ɺΞϓϦ
    έʔγϣϯͷͲ͔͜Βྫ֎͕ඈΜͰ͘Δͷ͔༧ଌ
    Ͱ͖ͳ͍


    • ༗ࣝऀʢRustaceanʣʹΑΔϋϯζΦϯ΍߈ུΨΠ
    υͷڞ༗


    • Fastly C@E ͷಋೖͰ Rust ʹ׳Εͳ͍ͱ͍͚ͳ͍


    • ଞνʔϜʹScalaͱKotlinͷ೿ൊ͕͋ΓɺResultܕࣗ
    ମʹର͢Δ஌ݟ͸͋Δ
    27
    https://hack.nikkei.com/blog/advent20221201/

    View Slide

  28. ҰԠσϝϦοτʹ΋໨Λ޲͚Δͱ
    • ΦϒδΣΫτͷੜ੒ͱݕূ͸ਖ਼ৗܥʹ͓͍ͯ͸ʢແࢹͰ͖Δ΄ͲʹඍʑͨΔ΋ͷ͚ͩ
    ͲʣແବͳίετͰ͸ͳ͍͔

    => ແࢹɺύϑΥʔϚϯε͕໰୊ʹͳΔͳΒݦࡏԽ͔ͯ͠Βରࡦ͢Δ


    • ഑ྻɺΦϒδΣΫτɺMapʹΞΫηεͨ͠ͱ͖ͷϋϯυϦϯάʹ΋ Result ͕ग़ͯ͘Δͷ
    Ͱ͸ͳ͍͔

    => ։ൃऀ͕ઈରʹ҆શͱ஌͍ͬͯΔͷͰ͋Ε͹ྫ֎Λ౤͛Δɻ഑ྻʹ஋Λ٧Ίͨޙʹऔ
    Γग़ͯͦ͠ͷ஋ͷ࣮ࡏΛݕূʢܕݕࠪ௨ͨ͢Ίʹʣͨ͠ͱ͖ɺྫ֎্͕͕ΔΘ͚͕ͳ͍


    • ͦ΋ͦ΋ݴޠػೳͰͳ͍΋ͷʹཔΔͱຊདྷͷτϨʔε͕ෆਖ਼֬ʹͳΔͷͰ͸ͳ͍͔


    • ؆୯ͳίϯϏωʔλ͚ͩΛ࢖͏Α͏ʹ͠ɺ࠷ѱ࢖Θͣʹ۪௚ͳίʔυΛॻ͍ͯ΋ڐ༰


    • functional programming ʹد͍ͤͨΘ͚Ͱ͸ͳ͍
    28

    View Slide

  29. ResultܕΛಋೖ͢Δʹ͸ίϯϏωʔλ΋ඞཁ
    • Resultͷ஋Λ࢖͏ͨΊʹ͸ຖճ Result Λ֎͢ඞཁ͕͋ΔɻϝϯυΫαΠ


    • map: Result ͷ val ʹؔ਺Λద༻Ͱ͖Δɻmap(Result, T->U) ͸ Result, E> ͱͳΔɻmap(getUserResult, (user) => encUserId(user));


    • flatMap: Result ͷ val ʹ Result Λฦؔ͢਺Λద༻Ͱ͖ΔɻResultE>> ͕ Result ͱͳΔɻflatMap(getUserResult, (user) =>
    getBoughtItemsByUser(user));


    • Result Λฦؔ͢਺ಉ࢜ͷ߹੒͕༰қʹͳΓɺResultΛͨ͘͞Μ࢖ͬͯ΋Ϣʔ
    βʔͷॻ͖ຯ͸มΘΒͳ͍ɻ
    29

    View Slide

  30. ίϯϏωʔλͷ࣮૷ΛϥΠϒϥϦʹ೚ͤΔ
    • ίϯϏωʔλΛࣗ෼ୡͰ༻ҙ͢Δͷ͸େมͳͷͰ option-t ͱ͍͏ϥΠϒϥϦ
    Λ࠾༻


    • https://github.com/option-t/option-t


    • A toolkit of Nullable/Option/Result type implementation in ECMAScript. Their
    APIs are inspired by Rust's `Option` and `Result`.


    • Rust ͷυΩϡϝϯτͰֶ΂Δ͜ͱ͕େ͖ͳΞυόϯςʔδ
    30

    View Slide

  31. Τϥʔʹ໊લΛׂΓৼΔ
    • SentryͰ͸ Issue ͷλΠτϧ͕ҰཡͰදࣔͰ
    ͖ɺͦͷλΠτϧͰूܭͰ͖Δ


    • λΠτϧͷཻ౓΍ωʔϛϯά͕େࣄ


    • λΠτϧ͸ Error.prototype.name Ͱ੍ޚͰ͖Δ


    • new Error(‘msg’).name = “MyError”


    • ͱ͢Δͷ͸ΊΜͲ͍͘͞ͷͰɺͦͷ໊લΛ࣋ͬ
    ͨ Custom Error Λఆ͓ٛͯ͘͠ͷ͕ৗ౟
    31
    ԿͷΤϥʔ͔෼͔Βͳ͍ʂ

    View Slide

  32. σόοά͠΍͍͢ϝλ৘ใΛϝοηʔδʹೖΕΔ
    • SentryͰ͸ Error.prototype.message ͷ಺༰͕
    ϩάʹݱΕΔ


    • ΤϥʔΛ෼ੳ͢Δͱ͖ͷώϯτΛ message ʹ
    ೖΕ͓ͯ͘


    • ݺͼग़͞ΕΔؔ਺ͷҾ਺


    • ϢʔβʔτʔΫϯ΍ݸਓ৘ใͳͲ͸ग़ྗ͠ͳ
    ͍Α͏ʹ஫ҙ


    • SentryʹݶΒͣʮϩάʹग़ྗ͢΂͖͸Կ͔ʯ
    Λҙࣝ͢Δͱྑ͍
    32
    ԿͷΤϥʔ͔෼͔Βͳ͍ʂ

    View Slide

  33. ϩάϨϕϧΛ࢖͍෼͚Δ
    • Sentry͸ log, warn, error ͱ͍ͬͨϩάϨϕϧͷ࢖͍෼͚͕Ͱ͖ΔɻϑΟϧλͯ͠ݕࡧ͠
    ͨΓɺϨϕϧ͝ͱʹΞϥʔτΛઃఆͰ͖Δɻ


    • ͳΜͰ΋͔ΜͰ΋ΤϥʔʹͤͣɺϩάϨϕϧΛ࢖͍෼͚ΔͱΦΦΧϛগ೥໰୊ΛݮΒͤΔ


    • error: ҟৗ͕ى͖ͨͱ͖ʹ࢖͏


    • warn: ݺ͹Εͯخ͘͠ͳ͍ॲཧ͕ݺ͹Εͨͱ͖ʹ࢖͏ɻdeprecated ͳ API Λݺ͹Εͨ
    ࣌΍retryͷ࣮ߦͳͲ


    • Info: ϨεϙϯεͳͲͰ֬ೝͰ͖ͳͯ͘໨ʹݟ͑ΔܗͰ֬ೝͰ͖ͳ͍͕ɺ࣮ߦ͞Εͨܗ
    ੻Λ࢒͢ͱ͖ʹ࢖͏ɻಛघͳΤϯυϙΠϯτͷݺͼग़͠΍application cache͕miss͠
    ͨͱ͖ͳͲ
    33

    View Slide

  34. ϩΨʔͷϥούʔΛ࡞Δ
    • console.log, info, warn, error Λͦͷ··࢖Θ
    ͳ͍


    • Ϋϥ΢υ؀ڥͰ͸ sentry ΋Ұॹʹݺ͹ΕΔΑ
    ͏ͳϥούʔؔ਺Λ࡞Δ
    34

    View Slide

  35. ΫϥΠΞϯταΠυͷΤϥʔ΋ग़͢
    • ͜Ε·ͰΫϥΠΞϯταΠυͷΤϥʔ͸Ξϥʔτͯ͠ग़͍ͯ͠ͳ͔ͬͨ


    • ΫϥΠΞϯταΠυͷΤϥʔ͸ϊΠζʹͳΓ΍͍͢


    • Ϣʔβʔ͕ݍ֎ʹͳͬͨͱ͖


    • αϙʔτ֎ͷσόΠεɾOSΛ࢖͍ͬͯΔ৔߹ʢಛʹ WebView)


    • ࢓ํͳ͘ى͖Δ Hydration Error
    35

    View Slide

  36. ϊΠζͷ཈੍Λ͍ͨ͠
    • Ξϥʔτ͸UI͔Β ignore Ͱ͖Δ


    • ͔͠͠ҟͳΔURL͔Βಉ͡Τϥʔ͕ग़ͨ৔߹ɺҟͳΔΤϥʔͱͯ͠ѻΘΕͯ
    ignore ͯ͠΋৽͘͠ಉ͡Τϥʔ͕௨஌͞ΕΔ


    • ͦ΋ͦ΋ Sentry ʹૹΒͳ͍Α͏ʹ͍ͨ͠ɻinit ͷ option Ͱ͋Δఔ౓੍ޚͰ͖
    Δɻhttps://docs.sentry.io/platforms/javascript/configuration/filtering/


    • ignoreErrors: send ͠ͳ͍ΤϥʔΛએݴͰ͖Δ


    • denyUrls: ֎෦ϞδϡʔϧʹΑΔΤϥʔΛsend͠ͳ͍
    36

    View Slide

  37. ιʔεϚοϓΛग़ྗ͢Δ
    • SentryͰ͸ source map Λૹ৴͢Δ͜ͱͰ minify ͞ΕͨίʔυͷΤϥʔΛɺਓ
    ͕ؒಡΊΔܗʹͯ͘͠ΕΔ


    • Sentry͕Ϗϧυπʔϧ޲͚ϓϥάΠϯΛఏڙ͓ͯ͠ΓɺͦΕΛར༻͢Δ͜ͱͰ
    sourcemap Λૹ৴Ͱ͖Δ


    • webpack, nextjs


    • sentry-cli ͷઃఆ͕ඞཁ


    • Source map Λૹ৴ޙɺͭ·ΓϏϧυޙσϓϩΠલͷλΠϛϯάͰιʔε
    ίʔυ͔Β sourcemap Λফ͢͜ͱΛਪ঑
    37

    View Slide

  38. Error Cause Λ࢖͏
    • ྫ֎Λcatchͯ͠٧Ί௚͢ͱͦͷྫ֎
    ৘ใ͕ࣦΘΕͯ͠·͏


    • catch અͰΧελϜΤϥʔΛ࡞ͬͯ
    Result.Error Λ࡞Δͱ͖ʹɺݩͷΤ
    ϥʔ͕ࣦΘΕͯ͠·͏໰୊͕͋ͬͨ


    • Error.prototype.cause Λ࢖͏͜ͱ
    ͰɺݩͷΤϥʔΛ৽͍͠Τϥʔʹੵ
    ΊΔ
    38

    View Slide

  39. Node.js ΛΞοϓσʔτ͢Δ
    • Error Cause ͸ ES2022, Node.js 16.9 ͔Βͷػೳ


    • ౰࣌ฐࣾͷଟ͘ͷ Node.js ͷόʔδϣϯ͸ 16.9ະຬ


    • 16, 18 ΁ͷΞοϓσʔτ࡞ۀΛνʔϜϝΠτ͕Ξϥʔτվળͱฒߦͯ͠ߦ͏


    • gyp-error ͱᛀΊͬ͜͢Δຖ೔
    39

    View Slide

  40. ୭͕͜ͷ࡞ۀΛ࣮ߦ͔ͨ͠
    ʮஈ֊తʹߦ͑ͦ͏ͳ͜ͱ͸෼͔͚ͬͨͲɺ۩ମతʹͲ͏ਐΊͨͷ͔ʁʯ


    ʮ΍Βͳ͍ΑΓ΍ͬͨํ͕Ϛγͷਫ਼ਆͰɺͰ͖Δͱ͜Ζ͔Βίπίπͱɺ։ൃ
    Λ̏ϲ݄ࢭΊͯ༗ࢤ͕ؤுΓ·ͨ͠ɻ࡞ۀΛੵΈ্͛ΒΕΔ͜ͱ͕޾͍Ͱ͢ɻʯ


    ࠶ݱੑͳͯ͘͢Έ·ͤΜɾɾɾ
    40

    View Slide

  41. ʮ࠷ۙΞϓϦέʔγϣϯ։ൃͤͣʹͣͬͱSentryΛݟΔ࢓ࣄͯ͠ΔΜͩΑͶʯ


    ʮਏͦ͏ʯ
    41

    View Slide

  42. Ξϥʔτվળ͸ͱͯ΋ָ͍͠࢓ࣄͰ͢
    • ΞϥʔτͷൃੜݯΛḷ͍ͬͯ͘͜ͱͰͦͷΞϓϦέʔγϣϯ΁ͷཧղ͕ਂ·
    ΔɻΦϯϘʔσΟϯάλεΫͱͯ͠΋ྑ͍ ͱࢥ͏ɻ


    • ΞϓϦέʔγϣϯͱͯ͠ɺαʔϏεͱͯ͠ɺγεςϜͱͯ͠ɺ૊৫ͱͯ͠Ͳ͏
    ͋Δ΂͖͔Λߟ͑Δ͖͔͚ͬɻࣗ෼ͷࢹ࠲͕มΘͬͨΑ͍͖͔͚ͬɻͱͯ΋੒
    ௕Ͱ͖ͨͱࢥ͏
    42

    View Slide

  43. ΤϥʔվળɺΞϥʔτվળ͸ྑ͍ͧʂ


    ΍Ζ͏ʂʂʂʂʂʂʂʂʂ
    43

    View Slide