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

カート刷新プロジェクトにおけるOpenAPIを活用したコード自動生成の今と明日 / astudy20190419

カート刷新プロジェクトにおけるOpenAPIを活用したコード自動生成の今と明日 / astudy20190419

アスクル社内勉強会で発表した資料です!

Akihito Nakano

April 19, 2019
Tweet

More Decks by Akihito Nakano

Other Decks in Programming

Transcript

  1. த໺ڿਓΞεΫϧגࣜձࣾ
    "4UVEZ ΞεΫϧࣾ಺ษڧձ

    Χʔτ࡮৽ϓϩδΣΫτʹ͓͚Δ
    0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ੒ͷ
    ࠓͱ໌೔
    ͋͢

    View full-size slide

  2. 8FCΞϓϦέʔγϣϯΤϯδχΞ
    த໺ڿਓ!/","/0@"LJIJUP
    IUUQTBDLJOUPTIHJUIVCJPBCPVU

    View full-size slide

  3. 044׆ಈ
    w0QFO"1*(FOFSBUPS
    wIUUQTHJUIVCDPN0QFO"1*5PPMTPQFOBQJHFOFSBUPS
    w(BOFTIB Ψωʔγϟ

    wIUUQTHJUIVCDPNBDLJOUPTIHBOFTIB
    w4OJEFM εφΠσϧ

    wIUUQTHJUIVCDPNBDLJOUPTITOJEFM

    View full-size slide

  4. 8%#13&447PM
    ಛू
    <ޮ཰ٸ্ঢ>εΩʔϚۦಈ8FC"1*։ൃ
    ষޙ൒ʙষΛࣥච͍͖ͤͯͨͩ͞·͠
    ͨ!ײँ
    IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM

    View full-size slide

  5. ΞεΫϧࣾ಺ษڧձ
    ฏ੒࠷ޙͷAStudy

    View full-size slide

  6. ໨࣍
    wͳͥίʔυΛࣗಈੜ੒͢Δͷ͔ʁ
    w0QFO"1*
    w υΩϡϝϯτϑΥʔϚοτ΍पลπʔϧͷ֓ཁ
    w εΩʔϚۦಈ։ൃ
    wΧʔτ࡮৽ϓϩδΣΫτ
    w 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ੒
    w 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱ࠷௿ݶͷςετ͕ࣗಈతʹ૸Δੈք
    ίʔυࣗಈੜ੒ͷ׆༻ঢ়گΛ੔ཧ
    ͨ͠͏͑Ͱɺ0QFO"1*Λ׆༻ͯ͠
    ΋ͬͱੜ࢈ੑΛߴΊΔͨΊʹɺ௚
    ۙͰ΍Γ͍ͨ͜ͱΛ͓࿩͠·͢ʂ

    View full-size slide

  7. ͳͥਓྨ͸
    ίʔυΛࣗಈੜ੒͢ΔͷͩΖ͏͔

    View full-size slide

  8. ࢈ۀֵ໋ʹΈΔਐԽͷྺ࢙
    ୈҰ࣍࢈ۀֵ໋
    ୈೋ࣍࢈ۀֵ໋
    ୈࡾ࣍࢈ۀֵ໋
    ୈ࢛࣍࢈ۀֵ໋

    View full-size slide

  9. ࢈ۀֵ໋ʹΈΔਐԽͷྺ࢙
    ୈҰ࣍࢈ۀֵ໋
    ୈೋ࣍࢈ۀֵ໋
    ୈࡾ࣍࢈ۀֵ໋
    ୈ࢛࣍࢈ۀֵ໋
    ػց΍ιϑτ΢ΣΞͰஔ͖׵͑ͯ
    ޮ཰Խ͍ͯ͘͠ਐԽͷྺ࢙

    View full-size slide

  10. ίʔυΛॻ͘ͱ͍͏ӦΈʹ͓͚ΔਐԽ
    wίʔυͷࣗಈੜ੒ʹΑͬͯ։ൃΛࢧԉ͢Δπʔϧͨͪ
    wఆܕతͳίʔυ͸πʔϧʹ೚ͤΔ͜ͱͰ։ൃऀ͸ੜ࢈ੑΛߴΊɺۀ຿ϩδοΫ
    ʹूதͰ͖Δ
    ϘΠϥʔϓϨʔτίʔυͷੜ੒
    पลπʔϧʹΑΔίʔυੜ੒ͷαϙʔτ
    ίʔυੜ੒Λ಺แͨ͠ύϥμΠϜ
    IUUQTQSPKFDUMPNCPLPSH
    IUUQTXXXKFUCSBJOTDPNJEFB
    IUUQTPQFOBQJHFOFSBUPSUFDI
    IUUQTXXXKIJQTUFSUFDI
    IUUQTHSBQIRMDPEFHFOFSBUPSDPN
    IUUQTHSQDJP

    View full-size slide

  11. ͭ·ΓɺਐԽͷͨΊ

    View full-size slide

  12. ໨࣍
    wͳͥίʔυΛࣗಈੜ੒͢Δͷ͔ʁ
    w0QFO"1*
    w υΩϡϝϯτϑΥʔϚοτ΍पลπʔϧͷ֓ཁ
    w εΩʔϚۦಈ։ൃ
    wΧʔτ࡮৽ϓϩδΣΫτ
    w 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ੒
    w 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱ࠷௿ݶͷςετ͕ࣗಈతʹ૸Δੈք
    ίʔυࣗಈੜ੒ͷ׆༻ঢ়گΛ੔ཧ
    ͨ͠͏͑Ͱɺ0QFO"1*Λ׆༻ͯ͠
    ΋ͬͱੜ࢈ੑΛߴΊΔͨΊʹɺ௚
    ۙͰ΍Γ͍ͨ͜ͱΛ͓࿩͠·͢ʂ

    View full-size slide

  13. 0QFO"1*֓ཁ
    IUUQTHJUIVCDPN0"*0QFO"1*4QFDJpDBUJPO
    The OpenAPI Specification
    w0QFO"1* 0QFO"1*TQFDJpDBUJPO

    wچ4XBHHFSTQFDJpDBUJPO
    w3&45"1*ͷ࢓༷Λهड़͢ΔϑΥʔϚοτ
    w0QFO"1**OJUJBUJWF
    w0QFO"1*ͷϑΥʔϚοτΛਪਐ͢Δஂମ
    w.JDSPTPGUɺ(PPHMFɺ*#.ɺ4NBSU#FBSͳͲ͕
    ࢀՃ

    View full-size slide

  14. w೥݄0QFO"1**OJUJBUJWF݁੒
    w೥݄4XBHHFSTQFDJpDBUJPO͕0QFO"1**OJUJBUJWFʹدଃ͞ΕΔ
    w4XBHHFSTQFDJpDBUJPO͕0QFO"1*TQFDJpDBUJPOʹϦωʔϜ͞
    ΕΔ
    w೥݄0QFO"1*TQFDJpDBUJPOϦϦʔε
    w೥݄ݱࡏͷόʔδϣϯ͸0QFO"1*TQFDJpDBUJPO
    0QFO"1*ྺ࢙
    4XBHHFSϓϩδΣΫτ 0QFO"1**OJUJBUJWF
    0QFO"1*TQFD
    4XBHHFSTQFD
    4XBHHFSUPPMT

    View full-size slide

  15. 0QFO"1*ϑΥʔϚοτ
    IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS

    View full-size slide

  16. 0QFO"1*ϑΥʔϚοτ ϝλ৘ใ

    IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS

    View full-size slide

  17. 0QFO"1*ϑΥʔϚοτ ΤϯυϙΠϯτ

    IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS

    View full-size slide

  18. 0QFO"1*ϑΥʔϚοτ ίϯϙʔωϯτ

    IUUQTCMPHSFBENFJPBOFYBNQMFpMMFEHVJEFUPTXBHHFS

    View full-size slide

  19. पลπʔϧ

    View full-size slide

  20. 0QFO"1*पลπʔϧ
    w 4XBHHFS&EJUPS
    w 0QFO"1*υΩϡϝϯτ εΩʔϚ
    ͷهड़Λࢧԉ
    w IUUQTFEJUPSTXBHHFSJP
    w 4XBHHFS6*
    w "1*࢓༷Λࢹ֮ԽɺΠϯλϥΫςΟϒͳ"1*ૢ࡞
    w IUUQTQFUTUPSFTXBHHFSJP
    w 0QFO"1*(FOFSBUPS
    w 0QFO"1*υΩϡϝϯτ͔ΒιʔείʔυΛࣗಈੜ੒
    w IUUQTPQFOBQJHFOFSBUPSUFDI
    IUUQTPQFOBQJUPPMT

    View full-size slide

  21. εΩʔϚۦಈ։ൃ

    View full-size slide

  22. εΩʔϚۦಈ։ൃ
    IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM
    ͸͡ΊʹΈΜͳͰ8FC"1*ͷ࢓༷Λ૬ஊܾͯ͠Ίͯ
    0QFO"1*υΩϡϝϯτΛهड़ͯ͠
    पลπʔϧΛ׆༻ͯ͠։ൃΛޮ཰Խ͢Δ
    ։ൃνʔϜશମͷϫʔΫϑϩʔ
    εΩʔϚͰ։ൃΛۦಈ͢Δ͜ͱ

    View full-size slide

  23. εΩʔϚۦಈ։ൃͱपลπʔϧ
    IUUQTCMPHPOLOJOKBTDIFNB@pSTU@EFWFMPQNFOU
    API هड़ݴޠҎޙͷੈք
    0QFO"1*υΩϡϝϯτͷهड़
    ࢓༷ͷڞ༗ɾ֬ೝ
    ελϒੜ੒ػೳΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά
    ੜ੒ͨ͠ελϒΛར༻ͨ͠ฏߦ։ൃ
    ੜ੒ͨ͠ΫϥΠΞϯτΛར༻ͨ͠޻਺࡟ݮ
    ςετίʔυͷࣗಈੜ੒
    Swagger Editor
    Swagger UI
    OpenAPI Generator

    View full-size slide

  24. 0QFO"1*υΩϡϝϯτͷهड़
    ࢓༷ͷڞ༗ɾ֬ೝ
    Swagger Editor
    Swagger UI
    ίʔυࣗಈੜ੒ͷԸܙ͸େ͖͍
    IUUQTCMPHPOLOJOKBTDIFNB@pSTU@EFWFMPQNFOU
    API هड़ݴޠҎޙͷੈք
    ελϒੜ੒ػೳΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά
    ςετίʔυͷࣗಈੜ੒
    OpenAPI Generator
    ੜ੒ͨ͠ελϒΛར༻ͨ͠ฏߦ։ൃ
    ੜ੒ͨ͠ΫϥΠΞϯτΛར༻ͨ͠޻਺࡟ݮ

    View full-size slide

  25. ໨࣍
    wͳͥίʔυΛࣗಈੜ੒͢Δͷ͔ʁ
    w0QFO"1*
    w υΩϡϝϯτϑΥʔϚοτ΍पลπʔϧͷ֓ཁ
    w εΩʔϚۦಈ։ൃ
    wΧʔτ࡮৽ϓϩδΣΫτ
    w 0QFO"1*Λ׆༻ͨ͠ίʔυࣗಈੜ੒
    w 0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱ࠷௿ݶͷςετ͕ࣗಈతʹ૸Δੈք
    ίʔυࣗಈੜ੒ͷ׆༻ঢ়گΛ੔ཧ
    ͨ͠͏͑Ͱɺ0QFO"1*Λ׆༻ͯ͠
    ΋ͬͱੜ࢈ੑΛߴΊΔͨΊʹɺ௚
    ۙͰ΍Γ͍ͨ͜ͱΛ͓࿩͠·͢ʂ

    View full-size slide

  26. Χʔτ࡮৽ϓϩδΣΫτ

    View full-size slide

  27. Χʔτ࡮৽ϓϩδΣΫτ
    w-0)"$0ͷچ0SEFSγεςϜΛ৽"1*ج൫γεςϜʹҠߦ͢Δ
    wϓϩδΣΫτ໊UJBNBU ςΟΞϚτ

    wϨΨγʔΛ୤٫͠ɺ։ൃޮ཰΍αʔϏεͷ඼࣭Λ޲্͢Δ
    wΧʔτɾϨδը໘Λര଎Խ͢Δ
    շదͳ͓ങ͍෺ମݧͷఏڙ

    View full-size slide

  28. Χʔτ࡮৽ϓϩδΣΫτͷͬ͘͟Γͨ͠ਤ
    #''
    ഑ૹ ঎඼
    Ϣʔβʔ
    ஫จ
    "1*ج൫
    ,PUMJO
    4QSJOH#PPU
    4QSJOH8FC'MVY
    ,PUMJO+BWB
    4QSJOH#PPU
    "QBDIF$BNFM
    5ZQF4DSJQU
    +2VFSZ
    0QFO"1*
    1SPUPDPM#V⒎FST
    "1*࢓༷ɾεΩʔϚఆٛ

    View full-size slide

  29. "1*࢓༷ɾεΩʔϚఆٛ
    ഑ૹ ঎඼
    Ϣʔβʔ
    ஫จ
    ,PUMJO
    4QSJOH#PPU
    4QSJOH8FC'MVY
    ,PUMJO+BWB
    4QSJOH#PPU
    "QBDIF$BNFM
    5ZQF4DSJQU
    +2VFSZ
    0QFO"1*Λ΋ͱʹͨ͠ίʔυੜ੒ͷ׆༻ঢ়گ
    "1*ج൫
    0QFO"1*
    1SPUPDPM#V⒎FST
    #''
    #''ͰͷϞσϧΫϥεੜ੒ͷΈ

    View full-size slide

  30. 0QFO"1*υΩϡϝϯτͷهड़
    ࢓༷ͷڞ༗ɾ֬ೝ
    Swagger Editor
    Swagger UI
    ίʔυࣗಈੜ੒׆༻ͷ༨஍͸͋Δ
    IUUQTCMPHPOLOJOKBTDIFNB@pSTU@EFWFMPQNFOU
    API هड़ݴޠҎޙͷੈք
    ελϒੜ੒ػೳΛར༻ͨ͠εΩϟϑΥʔϧσΟϯά
    ςετίʔυͷࣗಈੜ੒
    OpenAPI Generator
    ੜ੒ͨ͠ελϒΛར༻ͨ͠ฏߦ։ൃ
    ੜ੒ͨ͠ΫϥΠΞϯτΛར༻ͨ͠޻਺࡟ݮ

    View full-size slide

  31. "1*࢓༷ɾεΩʔϚఆٛ
    ഑ૹ ঎඼
    Ϣʔβʔ
    ஫จ
    ,PUMJO+BWB
    4QSJOH#PPU
    "QBDIF$BNFM
    5ZQF4DSJQU
    +2VFSZ
    ׆༻ͷ༨஍͸͋Δ"1*ΫϥΠΞϯτ
    "1*ج൫
    ,PUMJO
    4QSJOH#PPU
    4QSJOH8FC'MVY
    0QFO"1*
    1SPUPDPM#V⒎FST
    #''
    ίϧʔνϯͰ࢖͍΍͍͢Α͏ʹ
    8FC$MJFOUΛಠࣗʹϥοϓͨ͠Ϋϥε
    Λ࢖͍ͬͯΔͷͰɺ
    ࣗಈੜ੒ͷ׆༻͸೉͍͔͠΋
    "1*ΫϥΠΞϯτͷࣗಈੜ੒

    View full-size slide

  32. "1*࢓༷ɾεΩʔϚఆٛ
    ,PUMJO
    4QSJOH#PPU
    4QSJOH8FC'MVY
    5ZQF4DSJQU
    +2VFSZ
    ׆༻ͷ༨஍͸͋Δ"1*αʔόʔ
    #''
    ,PUMJO+BWB
    4QSJOH#PPU
    "QBDIF$BNFM
    ഑ૹ ঎඼
    Ϣʔβʔ
    ஫จ
    "1*ج൫
    0QFO"1*
    1SPUPDPM#V⒎FST
    ελϒੜ੒Λར༻ͨ͠εΩϟϑΥʔϧσΟϯά
    ࠾༻͍ͯ͠Δٕज़͕ɺ
    0QFO"1*(FOFSBUPS͕ੜ੒͢Δ
    ελϒͷίʔυͱҧ͏ͷͰ࢖͑ͳ͍͔΋

    View full-size slide

  33. ׆༻ͷ༨஍͸͋Δ΋ͷͷ
    #''
    ഑ૹ ঎඼
    Ϣʔβʔ
    ஫จ
    "1*ج൫
    ,PUMJO
    4QSJOH#PPU
    4QSJOH8FC'MVY
    ,PUMJO+BWB
    4QSJOH#PPU
    "QBDIF$BNFM
    5ZQF4DSJQU
    +2VFSZ
    0QFO"1*
    1SPUPDPM#V⒎FST
    "1*࢓༷ɾεΩʔϚఆٛ
    ಋೖͷखؒʹݟ߹͏͚ͩͷޮՌ͕ಘΒΕΔ͔Ͳ͏͔
    ඍົͳ͜ͱ͕ଟ͔ͬͨ
    ໨త͸ɺίʔυࣗಈੜ੒ͷ׆༻Ͱ͸ͳ͘։ൃͷੜ࢈ੑΛ্͛Δ͜ͱ

    ͦ͜Ͱ

    View full-size slide

  34. APIͷE2Eςετ(ͷҰ෦)Λ
    ࣗಈੜ੒͍ͨ͠

    View full-size slide

  35. εΩʔϚۦಈ։ൃ
    IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM
    ୈষ0QFO"1*ʹΑΔεΩʔϚۦಈ։ൃ
    ʮεΩʔϚΛ༻͍ͯ࢓༷ͱ࣮૷ͷҰகΛࣗಈςετ͢Δʯ
    3VCZPO3BJMTͰ࣮૷ͨ͠"1*αʔόͷϨεϙϯε
    ͕ɺ0QFO"1*υΩϡϝϯτͱဃ཭͍ͯ͠ͳ͍͔ࣗ
    ಈతʹνΣοΫ͢Δ࣮૷Λ঺հ͍ͯ͠Δɻ
    34QFD
    PBT@QBSTFS
    KTPO@TDIFNB
    $PNNJUUFF

    View full-size slide

  36. IUUQTHJIZPKQNBHB[JOFXEQSFTTBSDIJWFWPM
    εΩʔϚۦಈ։ൃ
    ୈষ0QFO"1*ʹΑΔεΩʔϚۦಈ։ൃ
    ʮεΩʔϚΛ༻͍ͯ࢓༷ͱ࣮૷ͷҰகΛࣗಈςετ͢Δʯ
    3VCZPO3BJMTͰ࣮૷ͨ͠"1*αʔόͷϨεϙϯε
    ͕ɺ0QFO"1*υΩϡϝϯτͱဃ཭͍ͯ͠ͳ͍͔ࣗ
    ಈతʹνΣοΫ͢Δ࣮૷Λ঺հ͍ͯ͠Δɻ
    34QFD
    PBT@QBSTFS
    KTPO@TDIFNB
    $PNNJUUFF
    Χʔτ࡮৽ϓϩδΣΫτ͕࠾༻͍ͯ͠Δٕज़Ͱ
    Ͳ͏࣮ݱ͢Δ͔

    View full-size slide

  37. Spring Cloud Contract
    (SCC)

    View full-size slide

  38. 4QSJOH$MPVE$POUSBDU 4$$

    w$POTVNFS%SJWFO$POUSBDUT $%$
    EFWFMPQNFOU
    w IUUQXXXTFSWJDFEFTJHOQBUUFSOTDPN8FC4FSWJDF&WPMVUJPO$POTVNFS%SJWFO$POUSBDUT
    w"1*ར༻ऀ͕ظ଴͢ΔڍಈΛυΩϡϝϯτԽ͢Δ $POUSBDU

    w"1*ར༻ऀఏڙऀͷ૒ํ͕$POUSBDUΛ΋ͱʹςετΛߦ͏͜ͱͰ඼࣭Λอ
    ͪͳ͕ΒχʔζΛຬͨ͢։ൃΛߦ͏
    w4QSJOH$MPVE$POUSBDU͸$%$ͷ࣮ફΛαϙʔτ͢Δπʔϧ
    w$POUSBDUͷهड़͸(SPPWZͱ:".-͕࢖͑Δ
    w$POUSBDU͔Βελϒαʔό΍ςετΛࣗಈੜ੒Ͱ͖Δ
    IUUQTHJUIVCDPNTQSJOHDMPVETQSJOHDMPVEDPOUSBDU

    View full-size slide

  39. 4QSJOH$MPVE$POUSBDU 4$$

    $POUSBDU (SPPWZ%4-
    ࣗಈੜ੒͞ΕΔςετίʔυ

    View full-size slide

  40. 4$$ͷ$POUSBDUͱ0QFO"1*υΩϡϝϯτͷҧ͍
    w4$$ͷ$POUSBDU
    wϦΫΤετ˓˓˓Λૹ৴ͨ͠ΒɺϨεϙϯº͕ฦͬͯ͘Δ

    ˠʮετʔϦʔʯ
    w0QFO"1*υΩϡϝϯτ
    wड෇͚ΔϦΫΤετύϥϝʔλ໊͸9ɺܕ͸99

    ฦ͢Ϩεϙϯεͷߏ଄͸:ɺܕ͸::

    ˠʮ࢓༷ʯ ߏ଄΍ܕΛఆٛ͢Δ͚ͩ

    View full-size slide

  41. $POUSBDUΛ0QFO"1*υΩϡϝϯτʹຒΊࠐΉͱ͍͏ൃ૝
    w0QFO"1*υΩϡϝϯτͷ֦ுྖҬʹ$POUSBDU :".-%4-

    ΛຒΊࠐΉ͜ͱͰɺఆٛ಺༰ͷॏෳΛഉআ͠ɺ୯ҰͷυΩϡ
    ϝϯτͰ࢓༷ͱετʔϦʔΛ؅ཧՄೳʹͳΔ
    w0QFO"1*$POUSBDUͷυΩϡϝϯτΛίϯόʔλʹ௨͢͜ͱ
    ͰɺετʔϦʔ෦෼Λݕূ͢ΔςετίʔυΛੜ੒͢Δ
    IUUQTHJUIVCDPNTQSJOHGSBNFXPSLHVSVTQSJOHDMPVEDPOUSBDUPB
    4QSJOH$MPVE$POUSBDU0QFO"1*$POUSBDU$POWFSUFS
    +PIO5IPNQTPO
    !TQSJOHGSBNFXPSLHVSV
    IUUQTTQSJOHGSBNFXPSLHVSVEFpOJOHTQSJOHDMPVEDPOUSBDUTJOPQFOBQJ

    View full-size slide

  42. $POUSBDUΛ0QFO"1*υΩϡϝϯτʹຒΊࠐΉͱ͍͏ൃ૝
    ϦΫΤετ Ϩεϙϯε

    View full-size slide

  43. ΍Γ͍ͨࣄͱͪΐͬͱҧ͏
    ͜Ε͸͜ΕͰૉఢ͚ͩͲ

    View full-size slide

  44. 0QFO"1*υΩϡϝϯτ͔ΒςετίʔυΛੜ੒͍ͨ͠
    w"1*αʔό͕ฦ͢Ϩεϙϯεͷߏ଄͕0QFO"1*υΩϡϝϯτͷͦΕͱဃ཭ͯ͠
    ͍ͳ͍͔ςετ͍ͨ͠
    w $POUSBDUͳͲ͸ॻ͔ͣʹૉͷ
    0QFO"1*υΩϡϝϯτΛॻ͚ͩ͘Ͱɺ࠷௿ݶ
    ͷςετ ˞
    ͕ࣗಈతʹ૸Δੈք
    w ˞
    0QFO"1*͸ʮ࢓༷ʯͷهड़͚ͩͳͷͰɺςετͰ͖Δ͜ͱ͸ݶΒΕΔ
    w͕ɺϨεϙϯεͷߏ଄͸ςετͰ͖Δ

    View full-size slide

  45. 4QSJOH$MPVE$POUSBDU0QFO"1*
    w0QFO"1*υΩϡϝϯτͷఆٛΛ4$$ͷ$POUSBDUʹ
    ม׵͢Δ(SBEMF.BWFOϓϥάΠϯ
    wϨεϙϯεͷߏ଄Λςετ͢Δ$POUSBDUʹม׵ͯ͠
    ςετίʔυΛੜ੒͢Δ
    IUUQTHJUIVCDPNBDLJOUPTITQSJOHDMPVEDPOUSBDUPQFOBQJ
    ແ͍ͳΒ࡞Ε͹͍͍

    View full-size slide

  46. 4QSJOH$MPVE$POUSBDU0QFO"1* ಈ࡞Πϝʔδ

    0QFO"1*υΩϡϝϯτ 4QSJOH$MPVE$POUSBDU0QFO"1*
    4$$Λར༻ͯ͠$POUSBDU͔Β
    ςετίʔυΛੜ੒
    0QFO"1*υΩϡϝϯτʹఆٛ͞Ε͍ͯΔ
    Ϩεϙϯεͷߏ଄Λ$POUSBDUΦϒδΣΫτʹม׵

    View full-size slide

  47. 4QSJOH$MPVE$POUSBDU0QFO"1*
    w·ͩ࡞Γ࢝Ίͨ͹͔Γ
    wͱΓ͋͑ͣςετ͕ੜ੒͞ΕΔ ಈ࡞͢Δ͔ෆ໌
    ͷϨϕϧ
    w࣮༻Ϩϕϧʹ࢓্࣮͛ͯࡍʹ׆༻͍͖͍ͯͨ͠
    wΞεΫϧͷ044ͱͯ͠ҭ͍͖͍ͯͯͨ

    View full-size slide

  48. ίʔυࣗಈੜ੒Λ׆༻ͯ͠
    ໌೔དྷΔΤϯδχΞϦϯάΛʂ
    ΞεΫϧ

    View full-size slide