DockerとJenkinsを使った開発速度と品質の向上 / docker and jenkins

DockerとJenkinsを使った開発速度と品質の向上 / docker and jenkins

【ヒカ☆ラボ】有名サービス開発エンジニア登壇のLT大会(https://hikalab-kansai.connpass.com/event/104702/) #ヒカラボ関西 に登壇しました。
WeblioでのDockerとJenkinsの開発実践例です。

5cf7e9533a457726cd51232e06c1da9a?s=128

Masashi Hirano

October 27, 2018
Tweet

Transcript

  1. DockerͱJenkins Λ࢖ͬͨ։ൃ଎౓ͱ඼࣭ͷ޲্ ώΧˑϥϘ 2018/10/27 ฏ໺ ণ࢜ @shisama ×

  2. ฏ໺ণ࢜.BTBTIJ)JSBOP ɹɹɹɹɹɹ,ZPUPP⒏DF !TIJTBNB@ !TIJTBNB ؔ੢/PEFֶԂओ࠵ऀ 044$POUSJCVUPS

  3. None
  4. None
  5. 8IBUJT

  6. ɹɹɹɹͷࣄۀͱٕज़ ࣙॻ
 ɾӳ࿨ɺࠃޠɺྨޠɺதࠃޠɺؖࠃޠɺݹޠɺख࿩FUD
 ɾ݄ؒΞΫςΟϒϢʔβʔ਺ઍສਓ
 ɾສޠҎ্ͷ୯ޠΛऩ࿥
 ɾ+BWB
 ɾ೥Ҏ্ଓ͘ϨΨγʔྺ࢙͋ΔγεςϜ

  7. ɹɹɹɹͷࣄۀͱٕज़ ΦϯϥΠϯӳձ࿩
 ɾӳޠͷतۀΛωΠςΟϒͷߨࢣͱ̍ର̍Ͱߦ͏͜ͱ͕Ͱ͖Δ
 ɾ8FC35$Λ࢖ͬͨϏσΦɾԻ੠ͷ௨৴
 ɾ/PEFKTɺ3FBDUɺ'JSFCBTFFUD

  8. ɹɹɹɹͷࣄۀͱٕज़ J04"OESPJEΞϓϦ
 ɾࣙॻɺ୯ޠாɺ຋༁ͳͲͷΞϓϦ
 ɾ4XJGUɺ+BWBɺ,PUMJO

  9. ɹɹɹɹͷࣄۀͱٕज़ "*ɺཹֶࢧԉFUD
 ɾ"*ͱӳձ࿩Ͱ͖ΔαʔϏε
 ɾཹֶɾཱྀߦɾւ֎ෝ೚ͷࢧԉ
 ɾ1ZUIPOɺ+BWBɺ8PSE1SFTTFUD

  10. ࠓ೔࿩͢͜ͱ ✤ୈҰ෦%PDLFSΛ࢖ͬͨ։ൃ࣮ફྫ ✤ୈೋ෦+FOLJOTΛ࢖ͬͨ։ൃ࣮ફྫ

  11. DockerΛ࢖ͬͨ։ൃ࣮ફྫ

  12. %PDLFSͱ͸

  13. IUUQTSBODIFSDPNQMBZJOHDBUDIEPDLFSDPOUBJOFST

  14. %PDLFSجຊ $MJFOU %PDLFS)PTU %PDLFS%BFNPO 3FHJTUSZ EPDLFSIVC $OUBJOFS *NBHF EPDLFSCVJME EPDLFSQVMM

    EPDLFSSVO
  15. %PDLFSجຊ %PDLFS)PTU %PDLFS%BFNPO 3FHJTUSZ EPDLFSIVC $OUBJOFS *NBHF $MJFOU EPDLFSCVJME EPDLFSQVMM

    EPDLFSSVO ։ൃऀ͕EPDLFSίϚϯυΛ࣮ߦ
  16. %PDLFSجຊ $MJFOU 3FHJTUSZ EPDLFSIVC EPDLFSCVJME EPDLFSQVMM EPDLFSSVO %PDLFS)PTU %PDLFS%BFNPO $OUBJOFS

    *NBHF ड͚औͬͨίϚϯυΛݩʹ EPDLFSΠϝʔδΛ࡞ͬͨΓɺ EPDLFSίϯςφΛىಈͨ͠Γɺ EPDLFSΠϝʔδΛऔಘͨ͠Γ
  17. %PDLFSجຊ $MJFOU %PDLFS)PTU %PDLFS%BFNPO $OUBJOFS *NBHF EPDLFSCVJME EPDLFSQVMM EPDLFSSVO 3FHJTUSZ

    EPDLFSIVC EPDLFSΠϝʔδͷ഑෍΍؅ཧΛ͢Δ Ұൠެ։޲͚ʹ͸%PDLFS)VC͕͋Δ
  18. %PDLFSجຊ $MJFOU %PDLFS)PTU %PDLFS%BFNPO 3FHJTUSZ EPDLFSIVC $OUBJOFS *NBHF EPDLFSCVJME EPDLFSQVMM

    EPDLFSSVO %PDLFSʹࢦࣔ͢Δਓɺ ΠϝʔδɺίϯςφΛ࡞Δਓɺ Πϝʔδͷ഑෍΍؅ཧΛ͢Δਓ͕͍Δ
  19. %PDLFS͕ແ͔ͬͨ͋ͷࠒ w ։ൃ؀ڥ͸खಈͰ͍͔ͪΒߏஙɻ؀ڥߏங͚ͩͰ̎೔͔͔Δ1+΋͋ͬͨ w ؀ڥߏஙͷखॱॻʹ͸ॻ͔Ε͍ͯͳ͍ઃఆ͕͋ͬͨΓ w खॱॻ͕8JOEPXTͷखॱ͔͠ͳ͔ͬͨΓ w खॱॻ௨Γ΍͚ͬͨͲಈ͔Μɾɾɾ w

    Ͳ͏΍ͬͯߏங͞Ε͔ͨΘ͔ΒΜɾɾɾ
  20. %PDLFSಋೖޙ w ։ൃ؀ڥ͸%PDLFSίϯςφΛىಈ͢Δ͚ͩͰߏங͞ΕΔͨΊޮ཰Խ w %PDLFS্Ͱ։ൃ͢ΔͨΊ֤։ൃऀͷ؀ڥΛ౷Ұ w %PDLFSpMF͕؀ڥߏஙͷखॱΛࣔͨ͢Ίखॱॻ࡞੒ͷखؒΛলུ w ։ൃ؀ڥʹมߋ͕ൃੜͯ͠΋Πϝʔδͷ࠶഑෍Λ͢Δ͚ͩ
 ɾΞϓϦέʔγϣϯΤϯδχΞ͸ΠϯϑϥϨΠϠʔΛؾʹ͠ͳͯ͘΋͍͍

  21. %PDLFSΛ࢖ͬͨ؀ڥߏங w ։ൃ؀ڥɺ+FOLJOTɺ3FEBTIͳͲʹ%PDLFSΛ࢖͍ͬͯΔ w %PDLFSίϯςφΛ্ཱͪ͛Δ͚ͩͰϩʔΧϧͰͷ։ൃ؀ڥ͕ߏங͞ΕΔ w EPDLFSDPNQPTFΛ࢖ͬͯΠϝʔδͷQVMM͔Βίϯςφىಈ·Ͱߦ͏ w ίϯςφىಈ࣌ʹOHJOY΍ΞϓϦέʔγϣϯ͕ىಈ͢Δ w

    %PDLFSΠϝʔδ͸ࣾ಺ͷϓϥΠϕʔτͳ%PDLFSϦϙδτϦ͔ΒQVMM
  22. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM
  23. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ
  24. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ ύοέʔδΠϯετʔϧʹඞཁͳॲཧ
  25. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ ඞཁͳύοέʔδΛΠϯετʔϧ ύοέʔδΠϯετʔϧʹඞཁͳॲཧ
  26. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ ඞཁͳύοέʔδΛΠϯετʔϧ ύοέʔδΛ࢖ͬͨޙॲཧ ύοέʔδΠϯετʔϧʹඞཁͳॲཧ
  27. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ ඞཁͳύοέʔδΛΠϯετʔϧ ύοέʔδΛ࢖ͬͨޙॲཧ αʔϏεىಈ ύοέʔδΠϯετʔϧʹඞཁͳॲཧ
  28. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ ඞཁͳύοέʔδΛΠϯετʔϧ ύοέʔδΛ࢖ͬͨޙॲཧ αʔϏεىಈ ύοέʔδͷϦϙδτϦͷొ࿥ͳͲ ߏஙखॱ͕໌֬ʹΘ͔Δ
  29. '30.VCVOUV $01:pMFT 36/USVFa  BQUVQEBUFpYNJTTJOHa  CBTIWBSTDSJQUTQSFJOTUBMMTIa  BQUJOTUBMMZa 

     NBOTDSFFODSPOTVEPCBTIDPNQMFUJPOa   OHJOYa  ͦͷଞॾʑ a  BQUDMFBOa  CBTIWBSTDSJQUTQPTUJOTUBMMTIa  USVF &/53:10*/5<CJOCBTI WBSTDSJQUTPOCPPUTI> %PDLFSpMFྫ 04ͷΠϝʔδΛQVMM ඞཁͳઃఆϑΝΠϧͳͲΛίϐʔ ඞཁͳύοέʔδΛΠϯετʔϧ ύοέʔδΛ࢖ͬͨޙॲཧ αʔϏεىಈ ύοέʔδͷϦϙδτϦͷొ࿥ͳͲ ͔͠͠Ϗϧυʹ͕͔͔࣌ؒΔ
  30. 1SJWBUFͳ%PDLFSϦϙδτϦͱ͸ w ࣾ಺ʹஔ͚Δ%PDLFS3FHJTUSZ w %PDLFS)VCͷΑ͏ʹ%PDLFSΠϝʔδͷ഑৴Λߦ͏ w %PDLFSpMF͔ΒϏϧυͨ͠ΠϝʔδΛQVTIͯ͠ϦϙδτϦ؅ཧ w %PDLFSެࣜͷ%PDLFS3FHJTUSZΛ࢖͏ͱ؆୯ʹߏஙͰ͖Δ w

    5-4 )5514 Λ࢖͏৔߹͸44-ূ໌ॻ͕ඞཁ w )551ͷ৔߹—insecure-registryΛ࢖Θͳ͍ͱ1VTI΍1VMM͕Ͱ͖ͳ͍
  31. 1VTI 1VMM 1VMM 1VMM ։ൃऀ" ։ൃऀ# ։ൃऀ$ ։ൃऀ%

  32. 1SJWBUFͳ%PDLFSϦϙδτϦΛ࢖͏ w ֤։ൃऀ͕։ൃ؀ڥΛϏϧυ͠ͳͯ͘΋Α͘ͳΔ w Ϗϧυ͞ΕͨΠϝʔδΛQVMM͢Δ͚ͩ w OHJOYͳͲ֤छઃఆϑΝΠϧ΍αʔόʔূ໌ॻ΋ΠϝʔδʹϏϧυ͢Δ
 ɾઃఆมߋ΍αʔόʔূ໌ॻͷҰݩ؅ཧ
 ɾ(JU؅ཧͨ͘͠ͳ͍΋ͷ΋Ϗϧυ͓ͯ͘͠

  33. version: "2" services: local_develop: hostname: “local_develop” container_name: "develop_container" image: “dockerrepo:5000/service_name“

    ports: - "80:80" - "443:443" volumes: - "./:/var/user/service" tty: true 1SJWBUFϦϙδτϦ͔Β1VMM EPDLFSDPNQPTFZNM಺Ͱ QSJWBUFϦϙδτϦʹ͋ΔΠϝʔδΛࢦఆ
  34. IUUQTEFWDMBTTNFUIPEKQDMPVEEPDLFSSFHJTUSZSFDJQFT

  35. IUUQTEPDTEPDLFSDPNSFHJTUSZ

  36. %PDLFSpMFͷ؅ཧ %PDLFSΠϝʔδΛ࡞Δ%PDLFSpMF͸(JU)VC Ͱ؅ཧ͍ͯ͠Δ

  37. %PDLFSpMFͷ؅ཧ ֤%PDLFSpMF͝ͱʹΠϝʔδͷϏϧυͱ 1VTI༻ͷTIFMMΛ༻ҙ

  38. #!/bin/bash IMAGE_NAME=“some_docker_image” REMOTE_IMAGE_NAME="dockerrepo:5000/$IMAGE_NAME" docker build --pull -t $IMAGE_NAME . docker

    tag $IMAGE_NAME $REMOTE_IMAGE_NAME docker push $REMOTE_IMAGE_NAME %PDLFSΠϝʔδͷϏϧυͱ1VTIΛߦ͏TIFMM
  39. ݸਓతʹ%PDLFSਏ͔ͬͨͱ͜Ζ w %PDLFSGPS.BD͕ͱʹ͔͘ॏ͍ w ϩʔΧϧʹ%PDLFSΠϝʔδίϯςφ͕ϩʔΧϧʹ૿͑͗͢Δ w ϗετͷϚγϯ࠶ىಈޙ%PDLFSίϯςφ͕ىಈ͞Εͳ͍

  40. %PDLFSGPS.BDॏ͍໰୊

  41. %PDLFSGPS.BDॏ͍໰୊ w WPMVNFͰϚ΢ϯτ͍ͯ͠ΔϗετϑΝΠϧ΁ͷΞΫηε͕ݪҼ w %PDLFS͕PTYGTͰ'JMF4ZTUFNΛ؂ࢹ͍ͯ͠Δͷ͕ݪҼ w ϑΝΠϧͷมߋ͕ଟ͍ͱ$16ෛՙ͕ΨϯΨϯ্͕͍ͬͯ͘

  42. %PDLFSGPS.BDॏ͘ͳͬͨͱ͖ͷղܾࡦ w %PDLFSGPS.BDΛ࠶ىಈ w 1SFGFSFODFT3FTFU3FTFUUPGBDUPSZEFGBVMUTΛ࣮ߦ w DBDIFEΦϓγϣϯΛ͚ͭΔ -v /hostdir:/mountdir:cached

  43. %PDLFSΠϝʔδίϯςφ͕૿͑͗͢Δ໰୊ w ෳ਺αʔϏεͷ։ൃΛ͍ͯ͠Δͱ࢖͍ͬͯͳ͍Πϝʔδ΍ίϯςφ͕ϩʔ Χϧʹ૿͑ͯ͘Δ w Ұͭͣͭফ͢ͷ͸खؒ w Ұؾʹ࡟আ͍ͨ͠ʂ

  44. %PDLFSΠϝʔδίϯςφҰׅ࡟আํ๏ docker stop $(docker ps -q) docker rm $(docker ps

    -q -a) docker rmi $(docker images -q) શίϯςφΛఀࢭ શίϯςφΛ࡟আ શΠϝʔδΛ࡟আ
  45. ϗετͷϚγϯ࠶ىಈޙίϯςφ͕ىಈ͞Εͳ͍ w ϗετͷϚγϯΛ࠶ىಈͨ͠ͱ͖ʹίϯςφ͸ىಈ͞Εͳ͍ w ىಈ͠๨Ε͍ͯͯ։ൃ؀ڥͱ͔KFOLJOT͕ಈ͔ͳ͍͜ͱ΋͠͹͠͹ w ҰͭͣͭखಈͰίϯςφىಈ͢Δͷ͕खؒ w ࣗಈͰىಈͯ͠΄͍͠

  46. version: "2" services: local_develop: hostname: “local_develop” container_name: "develop_container" image: “dockerrepo:5000/service_name“

    restart: “always“ ports: - "80:80" - "443:443" volumes: - "./:/var/user/service" tty: true ίϯςφͷࣗಈىಈํ๏ EPDLFSDPNQPTFʹ SFTUBSUlBMXBZTzΛ௥Ճ͢Δ
  47. ୈҰ෦·ͱΊ w ػցͰͰ͖Δ͜ͱ͸ػցʹ೚ͤΔ w ։ൃ؀ڥߏஙͷखؒΛল͍ͯ։ൃ଎౓Λ޲্ w ؀ڥߏஙͷखॱ͕ݟ͑ΔԽ͞ΕΔ w Ұ౓࡞Ε͹ָʹ͸ͳΔ͕ɺ͍Ζ͍Ζ޻෉͸ඞཁ

  48. JenkinsΛ࢖ͬͨ։ൃ࣮ફྫ

  49. $*ͱ͸

  50. IUUQTJOTJHIUTTFJDNVFEVTFJ@CMPHTFDVSJUZJODPOUJOVPVTJOUFHSBUJPOIUNM

  51. +FOLJOTͱ͸ w $*޲͚ͷࣗಈԽιϑτ w 044 w +BWB w ΦϯϓϨͰಈ͔͢͜ͱ͕Ͱ͖Δ w

    ։ൃऀ͸೔ຊਓɻ઒ޱߞհ͞Μ w ଞͷ$*αʔϏεʹ͸5SBWJT$*΍$JSDMF$*ͳͲ͕͋Δ
  52. +FOLJOT͓͡͞Μ͕͍ͳ͔ͬͨ͋ͷࠒ w ςετ͕ࣗಈͰ࣮ߦ͞Εͳ͔ͬͨɻखಈɻɻ w ίʔσΟϯάελΠϧΨΠυʹԊ͍ͬͯΔ͔໨ࢹͰϨϏϡʔ w ະ࢖༻ͷม਺΍ψϧϙ΍ܕνΣοΫ͸໨ࢹ΍σόοά͠ͳ͕ΒϨϏϡʔ w STZODͱ͔TDQͱ͔͸࢖͍͕ͬͯͨ։ൃऀ͕खಈͰσϓϩΠ

  53. $*ಋೖޙ w Ϗϧυ΍ςετ΍σϓϩΠ͸ࣗಈԽ w Ϣχοτςετ΍&&Λ࢖ͬͨࣗಈςετ w ੩తղੳΛ࢖ͬͯίʔυϨϏϡʔ࣌ͷϨϏϡΞʔෛ୲Λܰݮ w ޻਺࡟ݮʹ΋ܨ͕ΓϏδωεαΠυʹ΋޷ҹ৅ w

    ώϡʔϚϯΤϥʔ͕ݮͬͨ w ਓ͸ࣦഊ͢Δɾɾɾ
  54. $*ͷߏ੒ w +FOLJOT͸%PDLFS্Ͱಈ͍͍ͯΔ w +FOLJOTެࣜͷ%PDLFSΠϝʔδΛ࢖͍ͬͯΔ w +FOLJOTʹ͸.BTUFSͱ4MBWF͕͋Δ w .BTUFS͸δϣϒͷ࣮ߦΛड෇͚ɺ4MBWFʹ࣮ߦґཔΛ͢Δ w

    4MBWF͕Ϗϧυ΍ςετͳͲ࣮ࡍͷδϣϒΛ࣮ߦ w ΞϓϦέʔγϣϯ͝ͱʹٕज़͕ҧ͏ͨΊͦΕͧΕͷ4MBWF༻ίϯςφ͕͋Δ
  55. 3VO+PC 3VO .BTUFS 4MBWF 3VO+PC ɾUFTU
 ɾMJOU
 ɾCVJME 'FFECBDL 'FFECBDL

    'FFECBDL
  56. 3VO .BTUFS 4MBWF 3VO+PC ɾUFTU
 ɾMJOU
 ɾCVJME 'FFECBDL 'FFECBDL 'FFECBDL

    3VO+PC δϣϒΛΩοΫ͢Δਓ
  57. 3VO+PC 4MBWF 3VO+PC ɾUFTU
 ɾMJOU
 ɾCVJME 'FFECBDL 'FFECBDL 'FFECBDL 3VO

    .BTUFS δϣϒΛड͚෇͚Δਓ δϣϒΛ࣮ߦ͢Δਓ
  58. 3VO+PC 3VO .BTUFS 'FFECBDL 'FFECBDL 'FFECBDL 3VO+PC ɾUFTU
 ɾMJOU
 ɾCVJME

    4MBWF δϣϒͷ࣮ߦʹ࢖ΘΕΔਓ
  59. 'FFECBDL 'FFECBDL 'FFECBDL 3VO+PC ɾUFTU
 ɾMJOU
 ɾCVJME 4MBWF 3VO+PC 3VO

    .BTUFS $*ʹ͸δϣϒΛΩοΫ͢Δਓɺ δϣϒΛड͚෇͚Δਓɺ δϣϒΛ࣮ߦ͢Δਓɺ δϣϒͷ࣮ߦʹ࢖ΘΕΔਓ͕͍Δ
  60. .BTUFS 4MBWF 4MBWF 4MBWF ٕज़ʹ߹Θͤͯ4MBWFΛ࢖͍෼͚Δ

  61. 8FCMJPͷ։ൃϑϩʔ EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά NBTUFS ຊ൪؀ڥ CSBODI CSBODI

  62. ։ൃϑϩʔ TUBHJOH εςʔδϯά .BTUFS ຊ൪؀ڥ EFWFMPQ ։ൃ؀ڥ CSBODI CSBODI ։ൃऀ͸EFWFMPQϒϥϯν͔Β

    τϐοΫϒϥϯνΛ࡞ͬͯ࡞ۀ͢Δ
  63. ։ൃϑϩʔ .BTUFS ຊ൪؀ڥ CSBODI CSBODI EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά ։ൃ؀ڥͰಈ࡞֬ೝͨ͠΋ͷΛ

    TUBHJOHϒϥϯνʹϚʔδ εςʔδϯά؀ڥͰӦۀɾϚʔέɾ2"͕νΣοΫ
  64. ։ൃϑϩʔ CSBODI CSBODI EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά εςʔδϯάͷνΣοΫ͕׬ྃ͢Δͱ NBTUFSʹϚʔδͯ͠ຊ൪؀ڥʹ൓ө͢Δ .BTUFS

    ຊ൪؀ڥ
  65. ։ൃϑϩʔ EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά .BTUFS ຊ൪؀ڥ CSBODI CSBODI ͍ͭ࢖ΘΕ͍ͯΔͷʁ

  66. ։ൃϑϩʔ EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά .BTUFS ຊ൪؀ڥ CSBODI CSBODI ࢸΔͱ͜ΖͰ࢖ΘΕ͍ͯ·͢

  67. 1VMM3FRVFTU#VJMEFS Λ࢖ͬͨݕূ

  68. ։ൃϑϩʔ EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά .BTUFS ຊ൪؀ڥ CSBODI CSBODI 13͕࡞ΒΕͨΓ1VTIͨ͠ͱ͖

  69. 13࡞੒1VTI 13#VJMEFSΛ࢖ͬͨ IPPL 3VO ௨஌4VDDFTT'BJMVSF .BTUFS 4MBWF 1VMM 3VO+PC ɾUFTU


    ɾMJOU
 ɾCVJME 'FFECBDL
  70. ͳͥ1VMM3FRVFTU͝ͱʹݕূΛ͢Δͷ͔ w ϝΠϯϒϥϯνʹෆਖ਼ͳίʔυ͕ೖΒͳ͍ͨΊͷݕূ w 1VTI͞ΕΔ౓ʹϏϧυɾ੩తղੳɾࣗಈςετ͕௨Δ͔ݕূ w खಈ΍໨ࢹͰߦ͍ͬͯͨ࡞ۀΛࣗಈԽͯ͠ϨϏϡΞʔͷෛ୲ܰݮ

  71. Ϛʔδޙͷݕূ

  72. ։ൃϑϩʔ EFWFMPQ ։ൃ؀ڥ TUBHJOH εςʔδϯά .BTUFS ຊ൪؀ڥ CSBODI CSBODI

  73. .FSHF %FQMPZ 3VO+PC ɾUFTU
 ɾMJOU
 ɾCVJME ௨஌4VDDFTT'BJMVSF 4FSWJDF
 3FTUBSU 4MBWF

    4FSWFS .BTUFS )PPL 3VO 'FFECBDL ·ͩऴΘΒͳ͍ɻ࣍ͷϖʔδʹଓ͘ 1VMM
  74. υΩϡϝϯτੜ੒ ɾ"1*EPDVNFOU ɾ+4%PD+BWB%PD ɾ$PWFSBHF3FQPSU ࣦഊ࣌ͷΈ௨஌ 1VTIHIQBHFT EFWFMPQʹϚʔδޙ΋͏Ұͭδϣϒ͕ಈ͘

  75. ͳͥϚʔδޙʹ࣮ߦ͢Δ͔ w σάϨʔυ͕ൃੜ͍ͯ͠ͳ͍͔ͷݕূ w ֤؀ڥʹԠͨ͡Ϗϧυ΍ςετΛݕূ w ࠷৽ͷυΩϡϝϯτΛ͍ͭͰ΋ݟΕΔΑ͏ʹ͓ͯ͘͠
 ɾ(JU)VC1BHFTͰݟΕΔΑ͏ʹ͍ͯ͠Δ

  76. $*Ͱ޻෉ͨ͜͠ͱ w ࣦഊͨ͠ͱ͖ͷGBMMCBDL
 ɾΠϯλʔωοτͷෆௐͳͲ֎తཁҼͰࣦഊͨ͠ͱ͖ͷͨΊͷGBMMCBDLΛ༻
 ɹҙ͓ͯ͘͠
 ɾ1VMM3FRVFTUʹl3VO$*zͱίϝϯτ͢Δͱδϣϒ͕࠶࣮ߦ͞ΕΔ
 ɾ$*͕ͳͯ͘΋खಈͰ࣮ݱͰ͖ΔܗΛ࢒͓ͯ͘͠

  77. $*Ͱ޻෉ͨ͜͠ͱ w ඼࣭୲อ
 ɾ$*͕௨Βͳ͍ͱϚʔδͰ͖ͳ͍Α͏ʹ͓ͯ͘͠

  78. $*Ͱ޻෉ͨ͜͠ͱ w ௨஌
 ɾ1VMM3FRVFTU্Ͱ$*ͷ੒ޭࣦഊ͕Θ͔ΔΑ͏ʹ͓ͯ͘͠
 ɾ4MBDLʹ௨஌͢Δ͜ͱͰؾ͖ͮ΍͘͢͢Δ

  79. $*Ͱ޻෉ͨ͜͠ͱ w ӡ༻
 ɾ%PDLFSίϯςφΛىಈ͢Δ͚ͩͰݩ௨Γͷ+FOLJOT؀ڥΛ࠶ݱ
 ɾઃఆϑΝΠϧͳͲ͕ೖ͍ͬͯΔσΟϨΫτϦΛѹॖͯ͠όοΫΞοϓ

  80. ୈೋ෦·ͱΊ w ΍͸ΓػցͰͰ͖Δ͜ͱ͸ػցʹ೚ͤΔ w $*Ͱ֤ϑΣʔζ͝ͱʹ඼࣭Λ୲อ͢Δ w ࡞ۀΛػցʹͤ͞Δ͜ͱͰੜ࢈ੑΛ্͛Δ w $*पΓͷઃఆ͸Ұ౓΍ͬͯ͠·͏ͱޙָ͕

  81. ࠓ೔ͷ·ͱΊ w %PDLFS΋+FOLJOT΋खஈͷͻͱͭ
 ɾࣗ෼ͷϓϩδΣΫτʹ࠷దͳํ๏Λݟ͚ͭ·͠ΐ͏
 ɾखಈ͕࠷ળͰ͋Δ͜ͱ΋͋Δ w खॱԽͰ͖Δ΋ͷ͸ࣗಈԽͰ͖Δ w खॱ͕໌֬Խ͞Εଐਓੑͷഉআʹ΋ܨ͕Δ w

    ࣗಈԽ͸։ൃ଎౓΍඼࣭ͷ޲্ʹܨ͕Δ w ͨͩ͠ɾɾɾϞνϕʔγϣϯߴ͍ਓ͕ಋೖ΍ϝϯςΛ͢Δඞཁ͕͋Δ
  82. ʒʹୀ৬ͨ͠ଚܟ͢Δઌഐ͔Βύ Ϋͬͨड͚ܧ͍ͩ࿩Λʜ

  83. $*Λָ͠ΉͨΊͷ̑Օ৚

  84. 5IF+PZPG$* wࣗ෼͕௚઀ؔΘΔॴʹྗΛ͍ΕΔ w ଞͷϓϩδΣΫτͷ੹೚·ͰͱΒͳ͍ wࣗ෼ָ͕ʹͳΔࣄΛߟ͑Δ w ָʹϓϩδΣΫτϦεΫͱઓ͏ʹ͸Ͳ͏ͨ͠Β͍͍͔ wࣗ෼͕࢖͍͍ͨ෺Λಋೖ͢Δ w ͨͩ͠

    wࣗ෼͕ډͳͯ͘΋େৎ෉ͳঢ়ଶΛͭ͘Δɺͭ·ΓଐਓੑΛഉআ͢Δ w खಈͰ΍͍ͬͯΔखॱΛࣗಈԽ͢Δɺͭ·Γ$*͕ͳͯ͘΋࣮ݱͰ͖ΔܗΛ࢒͓ͯ͘͠ wશ෦ࣗಈԽ͠Α͏ͱߟ͑ͳ͍ w γϯϓϧͳํ๏Ͱɺੌָ͘ʹͳΔࣄʹूத͢Δ w ෳࡶͳํ๏ͰͪΐͬͱָʹͳΔҐͳΒखಈͰ΋Α͘ͳ͍ ͬͯߟ͑Λ࣋ͭ
  85. ָ͠Έͳ͕ΒࣗಈԽ΍͍͖ͬͯ·͠ΐ͏ʂ

  86. Thanks!