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

テスト駆動開発の過去・現在・未来 / History of TDD - XPJUG 2018 Keynote

Takuto Wada
September 08, 2018

テスト駆動開発の過去・現在・未来 / History of TDD - XPJUG 2018 Keynote

テスト駆動開発の過去・現在・未来
XP祭り2018 基調講演
2018/09/08
http://xpjug.com/xp2018-session-keynote/

Takuto Wada

September 08, 2018
Tweet

More Decks by Takuto Wada

Other Decks in Programming

Transcript

  1. ςετۦಈ։ൃ
    ςετۦಈ։ൃ
    աڈɾݱࡏɾະདྷ
    ͷ
    ࿨ా୎ਓ
    4FQ !91ࡇΓجௐߨԋ

    View full-size slide

  2. ࿨ా୎ਓ
    UXBEB
    U@XBEB
    UXBEB

    View full-size slide

  3. ؂मɺ؂༁ɺ຋༁ͨ͠ຊͨͪ

    View full-size slide

  4. 最近の立ち位置
    ελϯυ໊ϫΠϧυɾαόϯφ

    View full-size slide

  5. assert(typeof item.id === 'strong')
    | | | |
    | | | false
    | | "foo"
    | Item{id:"foo",name:"bar"}
    "string"
    --- [string] 'strong'
    +++ [string] typeof item.id
    @@ -1,6 +1,6 @@
    str
    -o
    +i
    ng
    代表作は power-assert
    IUUQTHJUIVCDPNQPXFSBTTFSUKTQPXFSBTTFSU

    View full-size slide

  6. ΑΖ͓͘͠ئ͍͠·͢

    View full-size slide

  7. IUUQTUXJUUFSDPNYQKVHTUBUVT

    View full-size slide

  8. ʰ5FTU%SJWFO%FWFMPQNFOU#Z&YBNQMFʱͷग़൛
    ͔Β೥͕ܦͪɺͦͷؒʹ͸͞·͟·ͳ͜ͱ͕͋Γ·
    ͨ͠ɻ
    ςετۦಈ։ൃ΁ͷա৒ͳظ଴ɺޡղɺۂղ΍ɺ݈શ
    ͳൃలɺΞδϟΠϧϓϩηεԽ΁ͷ໺৺ɺڭ৚ओٛԽɺ
    ҙຯͷرബԽͳͲͰ͢ɻ
    ຊߨԋͰ͸ॻ੶ʰςετۦಈ։ൃʱͷʮ෇࿥$ʯΛഎܠ
    ʹͯ͠ɺςετۦಈ։ൃͷྺ࢙Λ၆ᛌ͠ɺϓϩάϥϛ
    ϯάٕज़ͱͯ͠ͷςετۦಈ։ൃͷݱ୅తͳҐஔΛ࠶
    ֬ೝ͠·͢ɻ

    View full-size slide

  9. Kent Beck
    IUUQTXXXBNB[PODPKQEQ

    View full-size slide


  10. 2003 2017
    ઈ൛ͱ৽༁ʹΑΔ෮ץ

    View full-size slide

  11. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯ࡭ͱਓ

    View full-size slide

  12. େաڈ
    5%%ͷ஀ੜ·Ͱ

    View full-size slide

  13. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯ5%%CZ&YBNQMF΁ͷಓͷΓ

    View full-size slide

  14. 5%%͕ੜ·ΕΔ·Ͱ
    ,FOU#FDL
    8BSE$VOOJOHIBN
    3PO+F⒎SJFT
    &SJDI(BNNB

    View full-size slide

  15. $ISJTUPQIFS(MBFTFSʹӨڹΛड͚Δ
    8Z$BTI
    46OJU։ൃ
    $8JLJɺΦϯϥΠϯͰٞ࿦࢝·Δ
    $1SPKFDUɺʰ4#11ʱग़൛
    0014-"΁ͷػ಺ϖΞϓϩͰ+6OJU஀ੜ
    +6OJU
    ʰ91&TUʱʰ3FGBDUPSJOHʱग़൛

    ʮ+6OJU"$PPLT5PVSʯ
    +6OJUαΠτެ։ɺʮ5FTU*OGFDUFEʯ
    ࣥච࣌ʹ5FTU'JSTU1SPHSBNNJOH͔Β

    5FTU%SJWFO%FWFMPQNFOU΁
    5%%͕ੜ·ΕΔ·Ͱ

    View full-size slide

  16. DXJLJ͸͡·Γͷ஍
    IUUQXJLJDDPN &YUSFNF1SPHSBNNJOH

    View full-size slide

  17. *O XIJMFMJWJOHJO;VSJDIXJUINZGBNJMZ *DBVHIUVQXJUI&SJDI
    (BNNB BGSJFOE*NFUXPSLJOHPOTPGUXBSFQBUUFSOT
    8FIBQQFOFEUPCFqZJOHUPHFUIFSHPJOHUP"UMBOUBUP0014-" UIF
    CJHPCKFDUPSJFOUFEQSPHSBNNJOHDPOGFSFODF*XBOUFEUPMFBSO+BWB
    )FXBOUFEUPTFFUIJTGSBNFXPSL*ECFFOUBMLJOHBCPVU
    8IBUDPVMECFNPSFOBUVSBMUPBDPVQMFPGHFFLTJODSBNQFE
    RVBSUFSTUIBOUPQVMMPVUBMBQUPQBOETUBSUDPEJOH
    5ISFFIPVSTMBUFS XFIBEUIFCBTJDTPG+6OJUEPOF BOE*IBE
    MFBSOFEUIFCBTJDTPG+BWB
    ػ಺ϖΞϓϩͰ+6OJU஀ੜ
    IUUQTIPQPSFJMMZDPNQSPEVDUEP

    View full-size slide

  18. աڈ
    5%%ͷ஀ੜޙ
    ͔Βݱࡏ·Ͱ

    View full-size slide

  19. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯY651

    View full-size slide

  20. ʰY6OJU5FTU1BUUFSOTʱʹΑΔ
    Ϣχοτςετपลͷޠኮͷ੔ཧ

    View full-size slide

  21. +#3BJOTCFSHFS
    (FSBSE.FT[BSPT
    .BSUJO'PXMFS
    ςετίʔυͷޠኮͷ੔ཧʹؔΘΔ5JNFMJOF

    View full-size slide

  22. ʮ"1BUUFSO-BOHVBHFGPS1BUUFSO8SJUJOHʯ
    ʮ*NQSPWJOHUIF&⒎FDUJWFOFTTPG"VUPNBUFE5FTUTʯ
    ʮ"HJMF3FHSFTTJPO5FTUJOH6TJOH

    3FDPSEBOE1MBZCBDLʯ
    ʮ.PDLTBSFOUTUVCTʯCZ.BSUJO'PXMFS 

    ʰ+6OJU3FDJQFTʱCZ+#3BJOTCFSHFS
    ʮ.PDLT 'BLFT 4UVCTBOE%VNNJFTʯ
    ʰY6OJU5FTU1BUUFSOTʱग़൛
    ςετίʔυͷޠኮͷ੔ཧʹؔΘΔ5JNFMJOF

    View full-size slide

  23. "1BUUFSO-BOHVBHFGPS1BUUFSO8SJUJOH
    IUUQTIJMMTJEFOFUJOEFYQIQBQBUUFSOMBOHVBHFGPSQBUUFSOXSJUJOH
    (FSBSE.FT[BSPT͕ͳͥϖʔδʹഭΔେஶY651Λ1BUUFSOͱ
    1BUUFSO-BOHVBHFͱͯ͠ߏ଄ԽͰ͖ͨͷ͔Λ૎Δͱɺ͜͜ʹͨͲΓண͘

    View full-size slide

  24. IUUQTXXXBNB[PODPKQEQ
    ʰ+6OJU3FDJQFT1SBDUJDBM.FUIPETGPS1SPHSBNNFS5FTUJOHʱग़൛
    +6OJUͷ׆༻ʹ͍ͭͯ໢ཏతʹ·ͱΊͨେஶ

    View full-size slide

  25. ʮ.PDLTBSO`U4UVCTʯ
    ॳ൛͕೥ɻ
    Y651ग़൛ޙ
    ʹվగ͞ΕΔ

    View full-size slide

  26. IUUQTXXXBNB[PODPKQY6OJU5FTU1BUUFSOT3FGBDUPSJOH"EEJTPO8FTMFZEQ
    ʰY6OJU5FTU1BUUFSOT3FGBDUPSJOH5FTU$PEFʱग़൛
    ˞lY651zͱ

    ུ͞ΕΔ

    View full-size slide

  27. Y651ύλϯϥϯήʔδͱͯ͠ͷςετ

    View full-size slide

  28. ʰY6OJU5FTU1BUUFSOTʱΑΓ
    ςετͷϝϯςφϯείετ
    ཧ૝
    ݱ࣮
    Y651ςετίʔυ΋ϝϯςφϯεର৅ͱ͍͏ݱ࣮Λ௚ࢹ

    View full-size slide

  29. Y6515FTU%PVCMFͷఆٛͱ෼ྨ

    View full-size slide

  30. Y6515FTU%PVCMFͷఆٛͱ෼ྨ

    View full-size slide

  31. Y651༻ޠͷ੔ཧʹΑΔࠞཚͷऩଋ

    View full-size slide

  32. Y651͸ɺςετࣗಈԽͷΰʔϧ΍໨తΛ໌֬Խ͠ɺ
    ʮςετίʔυͷෆ٢ͳष͍ʢ5FTU4NFMMʣʯΛϦε
    τΞοϓ͠ɺόϥόϥͩͬͨϢχοτςετͷޠኮΛ
    ఆٛ͠·ͨ͠ɻ
    ͳ͔Ͱ΋ɺಛʹޠኮͷࠞཚ͕ݦஶͩͬͨϞοΫΦϒ
    δΣΫτपΓͷޠኮΛఆٛ͠ɺࠞཚΛऩଋʹ޲͔Θͤ
    ͨͷ͸Y651ͷେ͖ͳޭ੷ͩͬͨͱݴ͑ΔͰ͠ΐ͏ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  33. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯ(004

    View full-size slide

  34. ϩϯυϯൃͷ
    ςετۦಈ։ൃͷ৽͍͠ைྲྀͱ
    ʰ(SPXJOH0CKFDU0SJFOUFE
    4PGUXBSF (VJEFECZ5FTUTʱ

    View full-size slide

  35. ϩϯυϯֶ೿ -POEPO4DIPPM
    ͷຄڵ

    View full-size slide

  36. /BU1SZDF
    4UFWF'SFFNBO
    .BSUJO'PXMFS
    5JN.BDLJOOPO
    l-POEPO4DIPPMzؔ܎ͷ5JNFMJOF
    ˞શһ5IPVHIU8PSLT

    View full-size slide

  37. l-POEPO4DIPPMzؔ܎ͷ5JNFMJOF
    l5FTUJOHXJUI/P(FUUFSTz!$POOFYUSB
    ʮ&OEP5FTUJOH6OJU5FTUJOHXJUI.PDL0CKFDUTʯ
    ʮ4UBUFWT*OUFSBDUJPO5FTUJOHʯ

    CZ.BSUJO'PXMFS
    ʮ.PDL3PMFT OPU0CKFDUTʯ

    ʮ.PDLTBSFOUTUVCTʯCZ.BSUJO'PXMFS
    ʮ&WPMWJOHBO&NCFEEFE%PNBJO4QFDJpD

    -BOHVBHFJO+BWBʯɺK.PDLϦϦʔε
    ʰ(SPXJOH0CKFDU0SJFOUFE4PGUXBSF (VJEFE

    CZ5FTUTʱग़൛

    View full-size slide

  38. l.PDLzͷ஀ੜ

    View full-size slide

  39. public void testUpdateEmployee() throws SQLException {
    MockStatement nameStatement = new MockStatement();
    MockStatement detailsStatement = new MockStatement();
    MockConnection connection = new MockConnection();
    nameStatement.setExpectedUpdate(NAME_SQL);
    detailsStatement.setExpectedUpdate(DETAILS_SQL);
    connection.setExpectedCommitCalls(1);
    myEmployee.updateNameAndDetails(connection, nameStatement,
    detailsStatement);
    connection.verify();
    nameStatement.verify();
    detailsStatement.verify();
    }
    l.PDLzͷ஀ੜ

    View full-size slide

  40. ෼཭ͱΠϯλϥΫγϣϯΛΑΓҙࣝͨ͠ઃܭ΁ͱಋ͔ΕΔ

    View full-size slide

  41. ෼཭ͱΠϯλϥΫγϣϯΛΑΓҙࣝͨ͠ઃܭ΁ͱಋ͔ΕΔ

    View full-size slide

  42. ෼཭ͱΠϯλϥΫγϣϯΛΑΓҙࣝͨ͠ઃܭ΁ͱಋ͔ΕΔ

    View full-size slide

  43. ʰ(SPXJOH0CKFDU0SJFOUFE4PGUXBSF (VJEFECZ5FTUTʱग़൛
    ˞l(004zͱݺ͹Εɺ

    5%%ͷ࡭໨ͷόΠϒϧͱͳΔ

    View full-size slide

  44. *OTJEF0VU͔Β0VUTJEF*O΁
    ࣌ؒͷྲྀΕ
    ࣌ؒͷྲྀΕ
    *OTJEF0VU
    0VUTJEF*O

    View full-size slide

  45. μϒϧϧʔϓͷߏங

    View full-size slide

  46. ಉ৺ԁঢ়ͷΞʔΩςΫνϟͷ໛ࡧ
    ಉ৺ԁঢ়ͷΞʔΩςΫνϟͷ໛ࡧ͸͜ͷͱ͖
    طʹ"MJTUBJS$PDLCVSO΍-POEPO4DIPPM
    ͷ໘ʑʹΑͬͯ࢝·͍ͬͯͨ

    View full-size slide

  47. ౰࣌ɺ·ͩະ։ൃͰະ஌ͷ෦෼ʹґଘͨ͠··Ͱ"5%%Λ
    ࣮ફ͢Δʹ͸ٕज़తͳ೉͕͋ͬͨ͠͞ͷͰ͕͢ɺ(004͸
    ϞοΫΦϒδΣΫτͷ׆༻Ͱͦ͜ʹಥഁޱΛݟ͍ͩͨ͠ܗ
    ʹͳΓ·ͨ͠ɻ
    (004͸5FTU%SJWFO%FWFMPQNFOUCZ&YBNQMFΑΓ
    ΋આ໌ͷεέʔϧΛ޿͛ɺ࣮ࡍͷΞϓϦέʔγϣϯ։ൃʹ
    ͓͍ͯ΋ςετۦಈ։ൃͷख๏͸༗ޮͰ͋Δ͜ͱΛࣔ͠ɺ
    ޙͷ#%%ʹͭͳ͕ΔྲྀΕΛܗ࡞Γ·ͨ͠ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  48. 5%%ͷ5͸
    ʮςετʯͳͷͩΖ͏͔

    View full-size slide

  49. ʮಈ࡞͢Δ͖Ε͍ͳίʔυʯɻ3PO+F⒎SJFT
    ͷ͜ͷ؆ܿͳݴ༿͕ɺςετۦಈ։ൃʢ5%%ʣ
    ͷΰʔϧͩɻಈ࡞͢Δ͖Ε͍ͳίʔυ͸͋Β
    ΏΔҙຯͰՁ஋͕͋Δɻ
    ᴷ,FOU#FDL
    ʰςετۦಈ։ൃʱ·͕͖͑

    View full-size slide

  50. ςετͱ͸ɼΤϥʔΛΈͭ
    ͚Δͭ΋ΓͰϓϩάϥϜΛ
    ࣮ߦ͢ΔաఔͰ͋Δɻ
    ᴷ(MFOGPSE+.ZFST
    ʰιϑτ΢ΣΞɾςετͷٕ๏ʱQ

    View full-size slide

  51. ςετۦಈ։ൃͷςετ͸ɺιϑτ΢ΣΞςετͷੈքͷʮςετʯ
    ͷதͰ͸Ұ෦Λ઎ΊΔ͚ͩʹա͗·ͤΜɻʹ΋͔͔ΘΒͣɺςετ
    ۦಈ։ൃΛաେධՁ͢Δਓ΍ɺ໊લ͔Βड͚ΔΠϝʔδΛͦͷ··
    ड͚औͬͯ͠·͏ਓͳͲ͔Βʮςετۦಈ։ൃΛߦ͏͔Βόά͸θ
    ϩʹͳΔʯʮςετۦಈ։ൃΛߦ͏͔ΒςετΤϯδχΞ͸ෆཁʯ
    ͱ͍ͬͨޡͬͨҙݟ͕ฉ͔ΕΔΑ͏ʹͳ͖ͬͯ·ͨ͠ɻ
    ςετۦಈ։ൃͷςετ͸ɺຊ౰ʹςετͩΖ͏͔ɻςετͰ͸ͳ
    ͍ͱͨ͠ΒɺͦΕ͸ԿͩΖ͏͔ɻͱ͍͏໰͍͕ݱ࣮ͷ໰୊ͱͯ͠ݱ
    Ε͖ͯ·ͨ͠ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  52. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯ"HJMF5FTUJOH

    View full-size slide

  53. 5%%ͷ5͸
    ʮςετʯͷҰ෦ʹ
    ա͗ͳ͍
    "HJMF5FTUJOH

    View full-size slide

  54. -JTB$SJTQJO
    +BOFU(SFHPSZ
    #SJBO.BSJDL
    &MJTBCFUI)FOESJDLTPO
    .JLF$PIO
    .JDIBFM#PMUPO
    +BNFT#BDI
    "HJMF5FTUJOH5JNFMJOF

    View full-size slide

  55. "HJMF5FTUJOH5JNFMJOF
    ʰ5FTUJOHF9USFNF1SPHSBNNJOHʱ
    5FTU.BUSJYBOElDIFDLFEFYBNQMFTz

    CZ#SJBO.BSJDL
    l"VUPNBUFE5FTU1ZSBNJEzCZ.JLF$PIO
    l5FTUJOHJOBHJMFUFBNJTBOBDUJWJUZ OPUBQIBTFz

    CZ&MJTBCFUI)FOESJDLTPO
    ʰ"HJMF5FTUJOHʱग़൛
    l5FTUJOHWT$IFDLJOHz

    CZ.JDIBFM#PMUPOBOE+BNFT#BDI

    View full-size slide

  56. 5FTUJOHF9USFNF1SPHSBNNJOH

    View full-size slide

  57. IUUQXXXFYBNQMFSDPNPMECMPHIUNMBHJMFUFTUJOHQSPKFDU
    #SJBO.BSJDLʹΑΔ৅ݶϞσϧ
    ಉ࣌ظʹʮUFTU͡Όͳͯ͘DIFDLFEFYBNQMFͱݺ΅͏ʯ

    ͱ΋ݴ͍ͬͯΔɻ#SJBO.BSJDL͸ੌ͍ɻ

    View full-size slide

  58. l"VUPNBUFE5FTU1ZSBNJEzCZ.JLF$PIO

    View full-size slide

  59. ݱࡏςετࣗಈԽϐϥϛουͱΞΠεΫϦʔϜίʔϯΞϯνύλʔϯ
    IUUQTXBUJSNFMPOCMPHJOUSPEVDJOHUIFTPGUXBSFUFTUJOHJDFDSFBNDPOF

    View full-size slide

  60. ʰ"HJMF5FTUJOHʱग़൛

    View full-size slide

  61. #SJBO.BSJDLͷϞσϧΛʮΞδϟΠϧςετͷ৅ݶʯͱͯ͠࠾༻
    IUUQTMJTBDSJTQJODPNVTJOHUIFBHJMFUFTUJOHRVBESBOUT

    View full-size slide

  62. IUUQXXXEFWFMPQTFOTFDPNCMPHUFTUJOHWTDIFDLJOH
    ʮ5FTUJOHWT$IFDLJOHʯCZ.JDIBFM#PMUPOBOE+BNFT#BDI

    View full-size slide

  63. 5%%ʹ͓͚Δςετͷߟ͑ํ͸࣮༻ओٛʹ
    ؏͔Ε͍ͯΔɻ5%%ʹ͓͍ͯςετ͸໨త
    Λୡ੒͢ΔͨΊͷखஈͰ͋Γɺͦͷ໨తͱ
    ͸ɺେ͍ͳΔࣗ৴Λ൐͏ίʔυͩɻ
    ͨͱ͑ςετແ͠Ͱ΋࣮૷ͷ஌ࣝʹΑΔࣗ৴
    ͕͋ΔͷͰ͋Ε͹ɺςετΛॻ͔ͳ͍ɻ
    ᴷ,FOU#FDL
    ʰςετۦಈ։ൃʱQ

    View full-size slide

  64. 5%%ͷ5͸ʮςετʯͷҰ෦ʹա͗ͳ͍
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯQΑΓ

    View full-size slide

  65. ͏·͘੔ཧ͞ΕͨΞδϟΠϧςετͷ৅ݶϞσϧ
    ͸ɺʮςετͱ͸ɺΤϥʔΛΈ͚ͭΔͭ΋ΓͰϓϩ
    άϥϜΛ࣮ߦ͢ΔաఔͰ͋Δʯͱ͍͏఻౷తͳఆ
    ٛʹΑΔʮςετʯ΋ɺ5%%Ҏ߱ͷ։ൃݱ৔ʹ
    ͓͚Δʮςετʯ΋ɺڞʹ޿ൣͳιϑτ΢ΣΞςε
    τͷੈքΛߏ੒͢ΔҰһͰ͋Δɺͱ͍͏৽ͨͳೝ
    ͕ࣝ޿·Δ͖͔͚ͬʹͳΓ·͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  66. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯ#%%

    View full-size slide

  67. ΑΓ;͞Θ໊͍͠લΛٻΊͯ
    5%%͔Β#%%΁

    View full-size slide

  68. #%%5JNFMJOF
    %BO/PSUI
    "TMBL)FMMFT”Z
    %BWF"TUFMT
    $ISJT4UFWFOTPO
    4UFWFO#BLFS
    %BWJE$IFMJNTLZ
    (PKLP"E[JD

    View full-size slide

  69. #%%5JNFMJOF
    '*5CZ8BSE$VOOJOHIBN 'JU/FTTFCZ#PC.BSUJOଞ
    ʮ4UPSZ%SJWFO%FWFMPQNFOUʯCZ*OEVTUSJBM-PHJDɺ"HJMF%PY։ൃɺ

    ʰ%PNBJO%SJWFO%FTJHOʱग़൛ɺ+#FIBWF։ൃ։࢝ɺzTIPVMEzͷൃݟ
    +#FIBWFϦϦʔεɺ%BO $ISJT.BUUTͱz(JWFO8IFO5IFOzΛൃݟ
    ʮ#%%"OFXMPPLBUUFTUESJWFOEFWFMPQNFOUʯɺ34QFD։ൃ։࢝
    ʮ*OUSPEVDJOH#%%ʯ
    34QFDϦϦʔε FBTZC (SPPWZ
    ϦϦʔε
    $VDVNCFS͕34QFD͔Βಠཱ͠ɺϦϦʔε
    ʰ#SJEHJOHUIF$PNNVOJDBUJPO(BQʱग़൛ɺ4QPDLϦϦʔε
    34QFDϦϦʔε
    ʰ5IF34QFD#PPLʱग़൛ɺ

    ʰ5IF$VDVNCFS#PPLʱग़൛ɺ

    ʰ4QFDJpDBUJPOCZ&YBNQMFʱग़൛

    View full-size slide

  70. public class FooTest extends TestCase {
    public void testIsASingleton() {}
    public void testAReallyLongNameIsAGoodThing() {}
    }
    Foo
    - is a singleton
    - a really long name is a good thing
    5FTU%PY"HJMF%PY CZ$ISJT4UFWFOTPO

    IUUQBHJMFEPYTPVSDFGPSHFOFU
    ςετίʔυ͔ΒυΩϡϝϯτੜ੒

    View full-size slide

  71. lʮUFTUʯͱ͍͏୯ޠ͕Ϋϥε໊͔Β΋ϝιου໊͔Β΋औΓআ
    ͔ΕɺΩϟϝϧॻࣜͷϝιου໊͕௨ৗͷςΩετʹม׵͞Ε
    ͍ͯ·͢ɻ΍͍ͬͯΔ͜ͱ͸ͦΕ͚ͩͰ͕͢ɺޮՌ͸ڻ͘΂͖
    ΋ͷͰ͢ɻ
    ։ൃऀͨͪ͸͜Ε͕ɺগͳ͘ͱ΋͍͔ͭ͘ͷυΩϡϝϯτʹ͸
    ໾ཱͭ͜ͱʹؾ͕͖ͭɺຊ౰ͷจষʹͳ͍ͬͯΔςετϝιο
    υΛॻ͖࢝Ί·ͨ͠ɻͦΕ͚ͩͰ͸ͳ͘ɺϏδωευϝΠϯͷ
    ݴޠͰϝιουΛॻ͘ͱɺੜ੒͞ΕͨυΩϡϝϯτ͕Ϗδωε
    Ϣʔβ΍ΞφϦετɺςελ΋ཧղͰ͖Δ΋ͷʹͳΔ͜ͱ΋෼
    ͔͖ͬͯͨͷͰ͢ɻz
    IUUQEIBUFOBOFKQEJHJUBMTPVM
    5FTU%PY"HJMF%PY CZ$ISJT4UFWFOTPO

    View full-size slide

  72. IUUQTKCFIBWFPSHIUUQEIBUFOBOFKQEJHJUBMTPVM
    public class StackBehavior {
    public void shouldPopValuesInReverseOrder() throws Exception {
    stStack.push("test 1");
    stStack.push("test 2");
    Ensure.that(stStack.pop(), m.is("test 2"));
    Ensure.that(stStack.pop(), m.is("test 1"));
    }
    public void shouldLeaveValueOnStackAfterPeek() throws Exception {
    stStack.push("test 1");
    stStack.push("test 2");
    Ensure.that(stStack.peek(), m.is("test 2"));
    Ensure.that(stStack.pop(), m.is("test 2"));
    }
    }
    +#FIBWF։ൃ։࢝ CZ%BO/PSUI

    ˞ཌ೥ϦϦʔε
    lςετϝιου͸ʮTIPVMEʯͱ͍͏୯ޠͰ࢝Ίͳ͚Ε͹ͳΒͳ͍ͱ͍͏
    ن໿͕ු͔ͼ·ͨ͠ɻ͜ͷจষςϯϓϨʔτɺ͢ͳΘͪͦͷΫϥε͕Կ
    ͔Λ͢Δ΂͖ͩͱ͍͏จষςϯϓϨʔτ͕ҙຯ͍ͯ͠Δͷ͸ɺݱࡏର৅ͱ
    ͳ͍ͬͯΔΫϥεʹର͢Δςετ͔͠ఆٛͰ͖ͳ͍ͱ͍͏͜ͱͰ͢z

    View full-size slide

  73. ࢲ͕5%%ʹର๊͍͍ͯͯ͠Δ໰୊ͱ͸ɺ5%%ͷϚΠϯυηοτ͕զʑΛຊདྷͱ
    ͸ҟͳΔํ޲ੑɺͭ·Γؒҧͬͨํ޲ੑ΁ͱಋ͍ͯ͠·͏ͱ͍͏͜ͱͩɻզʑ
    ͸ϏϔΠϏΞΛ࢓༷Խ͢Δ༻ޠΛ࢖ͬͯߟ͑࢝ΊΔඞཁ͕͋ΔɻςετʹΑΔݕ
    ূͷ༻ޠͰ͸ͳ͘ɻ
    ϏϔΠϏΞ࢓༷ͷ༻ޠͰߟ͑Δ͜ͱͰɺͦΕͧΕͷϏϔΠϏΞʹ͍ͭͯΑΓ໌֬
    ʹߟ͑ΔΑ͏ʹͳΔɻΫϥεຖ΍ϝιουຖͷςετͱ͍͏ߟ͑ํʹཔΒͳ͘
    ͳΓɺΑΓ༏Ε࣮ͨߦՄೳͳυΩϡϝϯτΛखʹ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɻ
    5%%͸5%%Ͱ͋Γɺ୭΋ͦͷ໊લͷҙຯΛม͑Α͏ͱ͸͠ͳ͍ ͦΕΛظ଴͢΂
    ͖Ͱ͸ͳ͍͠ɺͦ͏ͯ͠΋Β͍͍ͨΘ͚Ͱ΋ͳ͍
    ɻ৽͍͠΍Γํʹ͸৽໊͍͠
    લ͕ඞཁͩɻ͜Εʹ͸%BO/PSUI͕ߟ͑ͯ͘Ε໊ͨલ͕͋ΔʜʜͦΕ͕#%%ɺ
    ϏϔΠϏΞۦಈ։ൃͩɻ
    ʮ#%%"OFXMPPLBUUFTUESJWFOEFWFMPQNFOUʯ CZ%BWF"TUFMT

    IUUQHJBOUFDIKQQBHFTJLJUFNB#%%*OUSPIUNM

    View full-size slide

  74. describe Stack, " (empty)" do
    before(:each) do
    @stack = Stack.new
    end
    it { @stack.should be_empty }
    it { @stack.should_not be_full }
    it "should add to the top when sent #push" do
    @stack.push "newly added top item"
    @stack.peek.should == "newly added top item"
    end
    end
    34QFD։ൃ։࢝

    View full-size slide

  75. .-্Ͱͷ࿦ઓ 4UFWFO#BLFSͱ,FOU#FDL

    View full-size slide

  76. .-্Ͱͷ࿦ઓ 4UFWFO#BLFSͱ,FOU#FDL

    View full-size slide

  77. ʮ*OUSPEVDJOH#%%ʯ CZ%BO/PSUI

    IUUQEIBUFOBOFKQEJHJUBMTPVM

    View full-size slide

  78. IUUQTDVDVNCFSJP
    Feature:
    As a
    I want
    So that
    Scenario:
    Given
    And
    When
    And
    Then
    And
    $VDVNCFS͕34QFD͔Βಠཱ

    View full-size slide

  79. #language: ja
    フィーチャ: ログインしてユーザを識別できる
    ユーザとして、
    ログイン機能などで自分の情報を識別したい。
    なぜなら、メッセージなどを「自分のもの」として区別したいからだ。
    シナリオ: ユーザ登録してログインする
    前提"新規ユーザ登録"ページを表示している
    もし"ログイン名"に"moro"と入力する
    かつ"E メール"に"[email protected]"と入力する
    かつ"作成"ボタンをクリックする
    ならば"こんにちは moro さん"と表示されていること
    $VDVNCFS͕34QFD͔Βಠཱ
    IUUQTUBUTV[JOFDPNCPPLTDVLF

    View full-size slide

  80. ʰ#SJEHJOHUIF$PNNVOJDBUJPO(BQʱɺʰ4QFDJpDBUJPOCZ&YBNQMFʱग़൛

    View full-size slide

  81. ʰ5IF4QFD#PPLʱʰ5IF$VDVNCFS#PPLʱग़൛

    View full-size slide

  82. 34QFD͸ɺ౰࣌രൃతʹྲྀߦ͍ͯͨ͠΢ΣϒΞϓϦέʔγϣ
    ϯϑϨʔϜϫʔΫ3VCZPO3BJMTͷςετͷ࢓૊Έͱͯ͠σ
    ϑΝΫτελϯμʔυͷ஍ҐΛ֫ಘ͠ɺ3VCZͷςεςΟϯά
    ϑϨʔϜϫʔΫʹ͓͍ͯѹ౗తͳγΣΞΛ֫ಘ͠·ͨ͠ɻ
    ͜ͷ34QFDͷେ੒ޭʹΑͬͯY4QFDܥͷߏ଄ͱޠኮ͸ଞͷݴ
    ޠ΁Ҡ২͞Ε࢝Ί·͢ɻ͔͜͜Β਺೥͸34QFDͱ$VDVNCFS
    ͕ଞͷݴޠʹҠ২͞Εͭͭɺ5%%#%%ͷγʔϯΛϦʔυ͢Δ
    ͜ͱʹͳΓ·͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  83. ΞδϟΠϧ։ൃϓϩηεͷதʹ#%%ΛऔΓࠐΊΔ͜ͱ͕Θ͔ͬ
    ͨ#%%ߟҊऀͨͪ͸ɺ#%%Λ͞Βʹ֦େ͠ɺ#%%ࣗ਎ΛΞ
    δϟΠϧ։ൃٕ๏·ͰҭͯΑ͏ͱ͠·ͨ͠ɻʰ5IF34QFD
    #PPLʱʹ͸͜͏͋Γ·͢ʢQʣɻ
    l#%%͸ϑϧελοΫͷΞδϟΠϧ։ൃٕ๏Ͱ͢ɻ#%%͸
    "5%1ʢ"DDFQUBODF5FTU%SJWFO1MBOOJOHʣͱݺ͹ΕΔ
    "5%%ͷҰछΛؚΊɺΤΫετϦʔϜϓϩάϥϛϯά͔Βώϯ
    τΛಘ͍ͯ·͢z
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  84. ݱࡏ
    5%%ͷ͍·

    View full-size slide

  85. 2007 2008 2009 2010
    2002 2003 2004 2005 2006 2011 2012 2013 2014
    ෇࿥$ͷλΠϜϥΠϯ%))

    View full-size slide

  86. ຊॻʰςετۦಈ։ൃʱͰॻ͔Ε͍ͯΔΑ͏ͳຊདྷͷ5%%
    ͸ɺϓϩάϥϚ͕ࣗ෼ࣗ਎Ͱෆ҆Λ੍ޚ͢ΔͨΊͷิॿ
    ྠͷΑ͏ͳ໾ׂΛՌͨ͢খ͞ͳϓϥΫςΟεͰͨ͠ɻ
    ͔͠͠5%%͕ࢧ࣋͞Εɺ࣮ફऀ͕૿͑ɺͦΕҎ্ʹ࣮ફ
    ͯ͠Έ͍ͨਓ͕૿͑ɺ5%%ࣗ਎͕(004΍#%%Λܦ֦ͯ
    େ͍ͯ͘͠ʹͭΕͯɺͦ͜ʹ͸ͭͷɺҟͳΔํ޲Λ޲͘
    มԽ͕๚Ε·ͨ͠ɻڭ৚ओٛԽͱɺҙຯͷرബԽͰ͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  87. ڭ৚ओٛԽ

    View full-size slide

  88. IUUQXXXCVUVODMFCPCDPN"SUJDMF46ODMF#PC5IF5ISFF3VMFT0G5EE
    :PVBSFOPUBMMPXFEUPXSJUFBOZQSPEVDUJPODPEFVOMFTTJUJTUP
    NBLFBGBJMJOHVOJUUFTUQBTT
    :PVBSFOPUBMMPXFEUPXSJUFBOZNPSFPGBVOJUUFTUUIBOJT
    TV⒏DJFOUUPGBJMBOEDPNQJMBUJPOGBJMVSFTBSFGBJMVSFT
    :PVBSFOPUBMMPXFEUPXSJUFBOZNPSFQSPEVDUJPODPEFUIBOJT
    TV⒏DJFOUUPQBTTUIFPOFGBJMJOHVOJUUFTU
    ࣦഊ͢ΔϢχοτςετΛ੒ޭͤ͞ΔͨΊʹ͔͠ɺϓϩμΫτίʔυΛॻ
    ͍ͯ͸ͳΒͳ͍ɻ
    ࣦഊͤ͞ΔͨΊʹ͔͠ɺϢχοτςετΛॻ͍ͯ͸ͳΒͳ͍ɻίϯύΠϧ
    Τϥʔ͸ࣦഊʹ਺͑Δɻ
    ϢχοτςετΛ͚ͭͩ੒ޭͤ͞ΔҎ্ʹɺϓϩμΫτίʔυΛॻ͍ͯ͸
    ͳΒͳ͍ɻ
    ˞5%%ͷܒ໤ීٴʹਚྗ͠ɺඇৗʹେ͖ͳޭ੷ͷ͋Δ6ODMF#PCΛ
    ͜ͷΑ͏ͳจ຺Ͱొ৔ͤ͞Δ͜ͱʹ͸ɺͱͯ΋ෳࡶͳࢥ͍͕͋Γ·͢

    View full-size slide

  89. IUUQEBWJEIFJOFNFJFSIBOTTPODPNUEEJTEFBEMPOHMJWFUFTUJOHIUNM

    View full-size slide

  90. lςετϑΝʔετݪཧओٛ͸ېཉͷΈΛএ͑ͨੑڭҭͷΑ͏ͳ΋ͷͩɻ
    ࠷ॳ͔Β͜͏ͩͬͨΘ͚Ͱ͸ͳ͍ɻࢲ͕ॳΊͯ5%%ʹग़ձͬͨͱ͖ʹ͸ɺΑΓΑ͍ιϑτ
    ΢ΣΞ։ൃͷੈք΁ஸॏʹট଴͞ΕͨΑ͏ʹײͨ͡ɻςεςΟϯά͕ଘࡏ͠ͳ͍ੈք͔Β
    ςεςΟϯάͷϓϥΫςΟε΁ͷϚΠϯυϋοΫͩɻे෼ʹςετ͞Ε͍ͯΔίʔυϕʔε
    ʹײ͡Δམͪண͖ɺιϑτ΢ΣΞΛมߋ͢Δͱ͖ͷ҆৺ײΛڭ͑ͯ͘Εͨɻ
    ݄೔͕ա͕͗ͨɺ͔͠͠ςετϑΝʔετͷϨτϦοΫ͸ΑΓ૽ʑ͘͠ɺౖΓͬΆ͍΋ͷͱ
    ͳ͖ͬͯͨɻΑΓڱྔʹͳ͖ͬͯͨɻ
    ౰ॳ͸ɺςετϑΝʔετΛʮ௚ײʹ൓͢ΔഁյṀʯͱͯ͠ɺࣗಈԽͨ͠ϦάϨογϣϯς
    εςΟϯά͕ଘࡏ͠ͳ͍ͱ͍͏࢒೦ͳۀքͷݱঢ়Λଧഁ͢Δඞཁ͕͔͋ͬͨ΋͠Εͳ͍ɻ
    ͔ͦ͠͠͏ͯ࢝͠·ͬͨͱͯ͠΋ɺ͍·Ͱ͸ତམͯ͠͠·ͬͨͷͩɻෆ৴৺ऀΛଧͪਾ͑Δ
    ϋϯϚʔͱͳΓɺϓϩϑΣογϣφϧʹ΋ͱΔιϑτ΢ΣΞ։ൃʹ޲͔ͳ͍ਓͩͱܾΊͭ
    ͚ΔɻϦτϚεࢼݧࢴͩɻz
    IUUQEIBUFOBOFKQZBDIQ

    View full-size slide

  91. ͜ͷը૾͕ಠΓา͖ͯ͠͠·ͬͨײ͸൱Ί·ͤΜ
    ͜ͷϥΠΦϯ΋ಉࡑ͔

    View full-size slide

  92. ৽ͨʹςετΛॻ͖࢝Ίͨਓͷ೤ҙʹ͸஫ҙ
    ͠Α͏ɻ5%%ͷڧཁ΄Ͳɺ5%%ͷීٴΛ๦
    ͛Δ΋ͷ͸ͳ͍ɻ
    ͋ͳ͕ͨ؅ཧऀ΍ϦʔμʔͰ͋ͬͯ΋ɺ୭͔
    ͷಇ͖ํΛڧ੍తʹม͑Δ͜ͱ͸Ͱ͖ͳ͍ɻ
    ᴷ,FOU#FDL
    ʰςετۦಈ։ൃʱQ
    ݪయͰఝΛࢗ͞Ε͍ͯͨͷʹʜʜ

    View full-size slide

  93. ҙຯͷرബԽ

    View full-size slide

  94. ਖ਼ղͷͳ͍࣭໰
    IUUQTUXJUUFSDPNIQFP@BQTUBUVT

    View full-size slide

  95. ςετϑΝʔετͱͷࠞಉ
    IUUQTUXJUUFSDPNU@XBEBTUBUVT

    View full-size slide

  96. l࿨ాϞοΫΦϒδΣΫτ͸ɺΠϯλϥΫγϣϯϕʔεͷઃܭ
    Λߦ͏ͨΊͷಓ۩Ͱ͋ΓɺϞοΫΦϒδΣΫτ͕ॻ͖ʹ͍͘ͳ
    ͱ͍͏ͷ͸ɺઃܭ͕ྑ͘ͳ͍͔ΒઃܭΛྑ͍ͯ͘͘͠ͱ͍͏ݪ
    ಈྗʹͳΔ͸ͣͩͬͨɻ
    ͔͠͠ɺϞοΫΦϒδΣΫτΛ࡞ΔͨΊͷϞοΫϥΠϒϥϦʔ
    ͷػೳڝ૪͕ى͖ͨ݁ՌɺϞοΫϥΠϒϥϦʔ͸ͲΜͲΜͲΜ
    ػೳ͕ଟػೳԽ͞Ε͍͖ͯɺͰ͖Δ͜ͱ͕૿͑ɺڧྗʹͳΕ͹
    ͳΔ΄ͲɺઃܭվળޮՌ͕ͲΜͲΜബΕ͍ͯͬͯ͠·ͬͨɻ
    ͱʹ͔͘ڧྗͳػೳΛ࢖ͬͯɺطଘͷػೳΛແཧ΍Γςετ͢
    ΔͨΊɺΧόϨοδΛ্͛ΔͨΊͷಓ۩ʹ੒ΓԼ͕ͬͯ͠·ͬ
    ͨɻͦΕͬͯݱঢ়ͷ௥ೝ͡Όͳ͍Ͱ͔͢z
    ϞοΫϥΠϒϥϦͷڧԽͱͦͷൽ೑ͳ݁຤
    IUUQTUXPQBHJMFFTNDPKQXIBUEPXFOFFEGPSHSPXUIPGGVUVSFDCBGF

    View full-size slide

  97. ݱ࣌఺ʹ͓͚Δଟ͘ͷਓͷೝࣝ͸࣍ͷΑ͏Ͱ͋Δͱචऀ͸ଊ
    ͍͑ͯ·͢ɻ
    w5%%ςετΛઌʹॻ͘ίʔυͷॻ͖ํͷ͜ͱ
    wϞοΫΦϒδΣΫτςετΛॻ͘ͷ͕೉͍͠ର৅ʹର
    ͯ͠ແཧ΍ΓςετΛॻ͘ࡍʹ࢖͏πʔϧ
    w#%%TUZMFY4QFDܥͷޠኮͰςετίʔυΛॻ͘͜ͱ
    w#%%$VDVNCFSͷΑ͏ͳ(IFSLJOܥπʔϧΛ࢖ͬͯ
    ड͚ೖΕςετΛࣗಈԽ͢Δ͜ͱ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ
    ҙຯͷرബԽͷ݁Ռ

    View full-size slide

  98. #%%ͷࠞཚ4QFD#%%ͱ4DFOBSJP#%%
    IUUQTXXXTMJEFTIBSFOFUFWFS[FUCEEJOTZNGPOZ

    View full-size slide

  99. 5%%͸ςετͩͱ͍͏ޡղΛղͨ͘Ίʹ%BO/PSUIʹΑΓ
    ൃ໌͞Εͨ#%%͕ɺ೥ܦ͍ͬͨ·ɺਓʑʹςετͩͱ
    ޡղ͞Ε͍ͯΔͷ͸ൽ೑ͳ͜ͱͩɻ
    IUUQTUXJUUFSDPNBTMBL@IFMMFTPZTUBUVT

    View full-size slide

  100. l8IFOJUTUJNFUPXSJUFDPEF #%%JTOPEJ⒎FSFOUGSPN5%%8SJUF
    BGBJMJOHUFTU8BUDIJUGBJM8SJUFFOPVHIDPEFUPNBLFJUQBTT
    $MFBOVQZPVSNFTT SFGBDUPS

    4PIPXJT#%%T5%%EJ⒎FSFOU *OBDPVQMFPGBSFBT
    #%%HJWFTZPVBXFMMEFpOFETUBSUJOHQPJOU5IFFYBNQMFT
    DSFBUFECZUIFEFMJCFSBUFEJTDPWFSZQSPDFTT
    5FTUTUIBUSFTVMUGSPN#%%BSFOPUVOJUUFTUT CVUIJHIMFWFMUFTUT
    UIBUJOUFSBDUXJUIUIFTZTUFNBUBNVDINPSFHSBOVMBSMFWFM
    *EPOUDPOTJEFSUPPMTMJLF34QFDUPCFB#%%UPPM*UIJOLPGJU
    NPSFBTBVOJUUFTUJOHUPPMUIBUJTHSFBUGPS5%%JOUIFTQJSJUPG
    #%%z
    IUUQTDVDVNCFSJPCMPHBTMBLTWJFXPGCEE
    ݁ہ5%%ͱ#%%͸Ͳ͏ҧ͏ͷ

    View full-size slide

  101. Ͳ͏ͯ͜͠͏ͳͬͨʁ
    ߟ͑ͯΈΔ

    View full-size slide

  102. #%%͸ɺ·ͣ3BJMT΍34QFDͷོ੝ͱಉ࣌ظʹग़͖ͯͨ֓೦ͩͬͨͨΊɺ
    3BJMT΍34QFDͷར༻֦େʹ߹Θͤͯར༻ऀ͕૿͑·ͨ͠ɻͦͷޙɺϦʔϯɾε
    λʔτΞοϓɺܧଓతσϦόϦʔɺ%FW0QT౳ͷ୆಄ʹΑͬͯɺΑΓେ͖ͳมԽ
    ͷதͷॏཁͳٕज़తཁૉʹͳΓ·͢ɻ
    #%%͕໨ࢦͨ͠൒ܘͷҟͳΔϑΟʔυόοΫϧʔϓͱސ٬ࢀՃΛॏࢹͯ͠։ൃΛ
    ߦ͏ख๏͸ɺϦʔϯܥͷࢥ૝ͷதͰϏδωεͱڧ݁͘ͼ͖ͭɺΑΓચ࿅͞Εͨܗ΁
    ͱมԽ͠·ͨ͠ɻड͚ೖΕςετΛؚΊͨࣗಈςετΛॻ͍ͯӡ༻͢Δٕज़͸ͦͷ
    ॏཁ౓͸͞Βʹ૿͠·͕ͨ͠ɺ5%%#%%ࣗ਎͸։ൃํ๏࿦ͷτϨϯυͷத৺͔
    Β཭ΕɺܧଓతσϦόϦʔɺ%FW0QTΛߏ੒͢Δٕज़ͷͻͱͭʹऩ·Γ·ͨ͠ɻ
    πʔϧར༻ऀ͸૿͑ͨ΋ͷͷɺҙຯͷرബԽ΋͞ΒʹਐΈɺΞδϟΠϧ։ൃϓϩη
    εͱͯ͠ͷ#%%͸ഇΕɺπʔϧͱํݴ͚͕ͩ࢒ͬͨɺͱ͍͏ͷ͕೥ݱࡏͷ
    5%%#%%Ͱ͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  103. ະདྷ
    5%%ͷ͜Ε͔Β

    View full-size slide

  104. 5%%͸֦େ͠ɺաେධՁ͞ΕɺઌӶԽͱҙຯͷ
    رബԽ͕ى͜ΓɺͦͷධՁ͸΍΍աখͳͱ͜Ζ
    ʹམ͖ͪͯ·ͨ͠ɻ
    աେධՁ͕ऩ·ͬͨͷ͸ྑ͍΋ͷͷɺ࣮૾͕ࣦ
    ΘΕͨͷͰࠓ౓͸աখධՁʹͳ͍ͬͯ·͢ɻʰς
    ετۦಈ։ൃʱ͕ඳ͍࣮ͨ૾ΑΓ΋ɺഎܠ͕ࣦ
    ΘΕͨ෼͚ͩաখධՁͰ͢ɻ
    lಉ͡ͱ͜ΖʹͱͲ·Δʹ͸୾ྗ͕͍ΔzCZ
    ,FOU#FDL

    View full-size slide

  105. ҙຯ͕رബԽࣦͯ͠ΘΕɺπʔϧ͚͕ͩ࢒͍ͬͯΔͷ
    ͕ݱ୅ͷςετͷݱঢ়Ͱ͢ɻ
    ͳͥ͋Δਓ͸ʮUFTUʯͱݴ͍ɺ·ͨ͋Δਓ͸ʮTQFDʯ
    ΍ʮFYBNQMFʯͱ͍͏໊લΛ޷Ήͷ͔ɻ
    աఔ΍ҙຯ෇͚͕શ෦ࣦΘΕɺςετ͸ʮॻ͔͞ΕΔʯ
    ΋ͷͰ͋ͬͯɺ͜ͷݴޠͷ͜ͷςετϥΠϒϥϦ͸͜͏
    ࢖͏ͱ͍ͬͨ৘ใ͹͔Γ͕ݟ͔ͭΓ·͢ɻ
    ಓ۩͔͠࢒͍ͬͯͳ͍ͷͰɺഎܠ΍ࢥ૝ɺจ຺Λ෮׆
    ͤ͞Δඞཁ͕͋Γ·ͨ͠ɻͦΕ͕ʮ෇࿥̘ʯͰ͢ɻ

    View full-size slide

  106. ʰςετۦಈ։ൃʱ෮ץ΁ͷಓ
    IUUQUXBEBIBUFOBCMPHKQFOUSZUEECPPL

    View full-size slide

  107. ͜ͷ೥Ͱ೔ຊʹ͓͍ͯ΋ςετࣗಈԽ͕޿͘ߦΘΕΔΑ͏ʹͳ͕ͬͨɺ
    ςετۦಈ։ൃΛ࣮ફ͍ͯ͠Δਓؒ͸·ͩগͳ͘ɺཧղ͕ਐΜͰ͍Δͱ
    ͸͍͑ͳ͍ɻ
    ͔͠͠ɺʮςετۦಈ։ൃʯͱ͍͏໊લ͚ͩ͸े෼ʹ޿·ͬͨɻ
    ͦͷ݁Ռɺͦͷ໊લ͔Β૝ى͞ΕΔ಺༰ͱ࣮ࡍͷϓϥΫςΟεͱͷဃ཭
    ʹجͮ͘ޡղ΍㒷ᨱɺςετۦಈ։ൃͷޮՌ΍ద༻ൣғʹର͢Δաେධ
    Ձ΍աখධՁ͕සൟʹൃੜ͍ͯ͠ΔɻͦͷҰํͰɺݪཧओٛతͳ܏޲΋
    ͋ΔɻݪయͨΔຊॻʰςετۦಈ։ൃʱʹ͸ͦ͜·Ͱڭ৚ओٛతʹॻ͔
    Ε͍ͯͳ͍ʹ΋ؔΘΒͣɺฉ͖͔ͬͨ͡ςετۦಈ։ൃͷखॱʹ४ڌ͢
    Δ͜ͱࣗମ͕໨తԽͯ͠͠·͍ͬͯΔΤϯδχΞ΋ݟΒΕΔɻ
    ͭ·Γɺ໊લ͚͕ͩҰਓา͖͍ͯ͠Δɻςετۦಈ։ൃʹؔ͢Δٞ࿦͸
    ࣠Λ࣋ͨͣɺৗʹൃࢄ͢Δ܏޲ʹ͋Δɻ
    ຊॻΛ೔ຊͷಡऀʹ঺հ͢΂͖ཧ༝
    IUUQUXBEBIBUFOBCMPHKQFOUSZUEECPPL

    View full-size slide

  108. ະͩʹςετۦಈ։ൃʹର͢Δਖ਼֬ͳཧղ͕ਐ·ͳ͍ݪҼͷͻͱͭ
    ͸ɺ༷ʑͳࣄ৘΋͋Γɺଟ͘ͷΤϯδχΞʹϐΞιϯ൛ʰςετۦ
    ಈ։ൃೖ໳ʱ͕ಡ·Εͳ͔ͬͨ͜ͱͰ͋Ζ͏ɻʮςετۦಈ։ൃʯ
    ͱ͍͏໊લΛ஌͍ͬͯΔΤϯδχΞͷதͰɺϐΞιϯ൛ʰςετۦ
    ಈ։ൃೖ໳ʱΛಡΜͩਓͷׂ߹͕গͳ͗͢Δɻ͜ͷຊ͕޿·͍ͬͯ
    Ε͹ɺ࣮ྫΛ൐ͬͨ಺༰ʹΑͬͯΤϯδχΞͷཧղ΋ਐΈɺ೔ຊʹ
    ͓͚Δςετۦಈ։ൃͷීٴ͸ਐΜͩͱߟ͑ΒΕΔɻ
    ೔ຊʹ͓͚Δςετۦಈ։ൃͷਖ਼͍͠ཧղΛਐΊɺ։ൃͷݱ৔ʹΑ
    Γਂ͍ࣗ৴ͱվળͷػձΛ༩͑ΔͨΊʹ΋ɺ͍·ͦ͜ݪయͨΔʰς
    ετۦಈ։ൃʱ͕ٻΊ΍͍͢Ձ֨ͱ಺༰Ͱ෮ץ͠ɺଟ͘ͷΤϯδχ
    Ξʹಡ·Εͳ͚Ε͹ͳΒͳ͍ɻ
    ຊॻΛ೔ຊͷಡऀʹ঺հ͢΂͖ཧ༝
    IUUQUXBEBIBUFOBCMPHKQFOUSZUEECPPL

    View full-size slide

  109. ʰςετۦಈ։ൃʱ͸ɺࣗ෼ͨͪͷίʔυʹࣗ৴Λ
    ࣋ͬͯ։ൃΛଓ͚͍ͨϓϩάϥϚɺνʔϜϦʔμʔ޲
    ͚ͷॻ੶Ͱ͋Δɻ
    ͜Ε͸ςετۦಈ։ൃͷߟҊऀࣗ਎ʹΑͬͯॻ͔Εͨ
    ݪయͰ͋Γɺςετۦಈ։ൃͱ͸୯ʹςετࣗಈԽΛ
    ߦ͏͜ͱͰ͸ͳ͘ɺϢχοτςετͱϦϑΝΫλϦϯ
    άΛ྆ྠͱͨ͠খ͍͞αΠΫϧΛճ͢͜ͱͰෆ࣮֬ੑ
    Λ੍ޚ͠ɺෆஅͷઃܭਐԽΛՄೳʹ͢Δख๏Ͱ͋Δ͜
    ͱΛɺಡऀ͸࣮ྫΛ௨ֶͯ͠Ϳ͜ͱ͕Ͱ͖Δɻ
    ΤϨϕʔλʔϐον
    IUUQUXBEBIBUFOBCMPHKQFOUSZUEECPPL

    View full-size slide

  110. %))ͷݴ͏ͱ͓Γɺ5%%#%%ͷจ຺΍എܠ͸
    ͋Δఔ౓ࣦΘΕ·ͨ͠ɻ
    ͔͠͠ɺࣗಈςετΛॻ͘ϓϥΫςΟε͸ੈͷத
    ʹཱ೿ʹࠜ෇͖ɺࣗ෼ͨͪͰࣗಈςετΛॻ͘ͷ
    ͕ʮ;ͭ͏ʯͳੈͷதʹͳΓ·ͨ͠ɻ͜Ε͸େ͖
    ͳલਐͰ͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  111. wͻͱΓ͔Β࢝ΊΒΕ·͢
    wςετ΍5%%͸εΩϧͰ͢ɻͭ·Γʜ
    w࠽ೳͰ͸ͳ͘ɺशಘՄೳͰ͢
    wྔ͸࣭ʹసԽ͠·͢
    wʮࣸܦʯ͕͓͢͢Ί
    5%%͸εΩϧͰ͢

    View full-size slide

  112. IUUQUXJUUFSDPNU@XBEBTUBUVTFT

    View full-size slide

  113. ຊॻ΋ɺಡΜ͚ͩͩͰ͸ਂ͍ಘ৺ʹ͸ࢸΒͳ͍Ͱ͠ΐ
    ͏ɻ͔͠͠ɺςετۦಈ։ൃͷྑ͞ɺڧΈ͸खΛಈ
    ͔ͤ͹Θ͔Γ·͢ɻ
    ͳͥͳΒɺ5%%ͷຊ࣭͸ਫ਼ਆঢ়ଶͷίϯτϩʔ
    ϧɺෆ҆ͱࣗ৴ͷ੍ޚʹ͋Δ͔ΒͰ͢ɻ݁Ռʢॻ͔
    ΕͨίʔυͱςετίʔυʣͰ͸ͳ͘ɺաఔʢࢥߟ
    ϓϩηεͱϦϑΝΫλϦϯάʣʹຊ࣭͕͋Γ·͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  114. IUUQTXXXqJDLSDPNQIPUPTUPNQBHFOFU
    ςετ͸඼࣭Λ্͛ͳ͍

    View full-size slide

  115. w ඼࣭͕ʮΘ͔ΔʯΑ͏ʹͳΔ
    w Θ͔Δ͜ͱͦ͜େࣄ
    w ςετΛॻ͚ͩ͘Ͱ͸ɺྑ͘͸ͳΒͳ͍
    w ମॏܭʹ৐Δ͚ͩͰ͸૫ͤͳ͍
    w ඼࣭Λ্͛Δͷ͸ઃܭͱϓϩάϥϛϯά
    w ࠶ઃܭͱϦϑΝΫλϦϯάΛςετͰࢧ͑Δ
    ςετ͸඼࣭Λ্͛ͳ͍

    View full-size slide

  116. lςετͰ͸඼࣭͸্͕Βͳ͍
    Ͱ͢Αɻςετ͸͋͘·Ͱ΋඼
    ࣭Λ͋͛Δ͖͔͚ͬɻ඼࣭Λ͋
    ͛Δͷ͸ϓϩάϥϛϯάͰ͢ɻ
    ͜Ε͸େੲ͔Βͦ͏ɻz

    View full-size slide

  117. ςετΛॻ͍ͯ΋ઃܭΛվળ͠ͳ͍ͷͰ͋Ε͹ɺ
    ͦΕ͸ͨͩͷճؼςετͰ͋Γɺݱঢ়ͷ௥ೝͰ͠
    ͔͋Γ·ͤΜɻ
    ςετۦಈ։ൃʹ͓͚Δ࣭ͷ޲্ͷखஈ͸ɺϦ
    ϑΝΫλϦϯάʹΑΔܧଓతͰΠϯΫϦϝϯλϧ
    ͳઃܭͰ͋Γɺʮ୯ͳΔςετϑΝʔετʯͱ
    ʮςετۦಈ։ൃʯͷҧ͍͸ͦ͜ʹ͋Γ·͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  118. ςετۦಈ։ൃ͸ɺಡऀͷօ͞Μͷϓϩάϥϛϯ
    άελΠϧʹগͳ͔ΒͣӨڹΛ༩͑ΔͰ͠ΐ͏ɻ
    ຊॻΛಡΜͩ͏͑Ͱɺ࠷ऴతʹ͸ςετۦಈ։ൃ
    Λ࢖Θͳ͘ͱ΋ɺશ͘໰୊͸͋Γ·ͤΜɻ
    ࣗ෼͕׆༻Ͱ͖ΔςΫχοΫͷͻͱͭͱͯ͠ςε
    τۦಈ։ൃ͕ՃΘΕ͹ɺͦΕͰे෼Ͱ͢ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  119. ܦݧΛੵΜͩ։ൃऀ͸ɺςετίʔυͷॻ͖ํ΍ྔɺ
    ॻ͘λΠϛϯάʹؔͯ͠ɺࣗ෼ͷؒ߹͍Λ͍࣋ͬͯ·
    ͢ɻ
    ͞·͟·ͳύϥμΠϜɺςΫχοΫΛܦݧͯ͠໭ͬͯ
    ͖ͨͱ͜Ζ͕ɺ།Ұແೋͷࣗ෼ͷϓϩάϥϛϯάελ
    ΠϧͰ͢ɻ͞·͟·ͳੈքΛܦݧ͠ɺࣗ෼ͷελΠϧ
    Λݟ͚͍ͭͯͩ͘͞ɻ
    ᴷ࿨ా୎ਓ
    ʰςετۦಈ։ൃʱʮ෇࿥$ʯ

    View full-size slide

  120. །Ұແೋͷࣗ෼ͷϓϩάϥϛϯάελΠϧΛҭΜͰ͍ͩ͘͞
    ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View full-size slide