Save 37% off PRO during our Black Friday Sale! »

Railsの
システムテスト解剖学

6f411237444fb0f49c63baeb9c5f2a38?s=47 Yusuke Iwaki
October 22, 2021

 Railsの
システムテスト解剖学

Kaigi on Rails 2021 Day1 14:00-14:30 @YusukeIwaki
「Railsの
システムテスト解剖学」の発表資料です

6f411237444fb0f49c63baeb9c5f2a38?s=128

Yusuke Iwaki

October 22, 2021
Tweet

Transcript

  1. 3BJMTͷ 
 γεςϜςετղ๤ֶ !:VTVLF*XBLJ,BJHJPO3BJMT

  2. ࣗݾ঺հ !:VTVLF*XBLJ w ෱Ԭࡏॅɻ w 3BJMTΛ࢖ͬͨ8FCαʔϏε։ൃͷ͓࢓ࣄɻ w 3VCZ͔Βϒϥ΢βࣗಈૢ࡞͢ΔͨΊͷબ୒ࢶΛ૿΍͢׆ಈதɻ w ϒϥ΢βΛࣗಈૢ࡞͢Δ1VQQFUFFS΍1MBZXSJHIUʹυϋϚϦதɻ

  3. lγεςϜςετղ๤ֶz ຊ೔ͷ͓୊

  4. 🙋Έͳ͞Μ🙋 ςετॻ͍ͯ·͔͢ʁ

  5. 3BJMTͱςετ PEFM JFX POUSPMMFS . 7 $ .PEFMTQFD ϏδωεϩδοΫΛ٧ΊࠐΜͰɺ୯ମࢼݧ͠Α͏ ͳΔ΂͘ബ͘ɻ

    ϦμΠϨΫτͷڍಈͳͲ͸$POUSPMMFSTQFDͰɻ "1*Ͱ͋Ε͹3FRVFTUTQFDΛ࢖͓͏ɻ ʁʁʁ
  6. +BWB4DSJQUΛ;ΜͩΜʹ࢖ͬͨ7JFXͷςετ ˠʮԿ΋ͯ͠ͳ͍ͷʹյΕͨʂʂʯ ˠʮͳ͔ͥɺͱ͖Ͳ͖ɺΑ͘$*མͪΔʯ ˠ୯ମςετ͸͖͋ΒΊɻ ɹϒϥ΢βΛ࣮ࡍʹಈ͔͢γεςϜςετͰ୅༻ɻ ͋ʔɺ͜ΕམͪΔςετͳɻ ϦτϥΠɹΆͪͬ

  7. None
  8. None
  9. γεςϜςετʹର͢Δੈͷதͷঢ়گ ʮ˓˓ͨ͠΄͏͕͍͍Αʯ ʮ˓˓͠ͳ͍΄͏͕͍͍Αʯ (PPHMFݕࡧ͢Ε͹ɺ ৘ใ͸ͨ͘͞Μग़ͯ͘Δ 3BJMTͷγεςϜςετͷߏ੒ཁૉ͸ʁ ͲͷλΠϛϯάͰԿ͕ಈ͘ʁ ιʔεΛಡ·ͳ͍ͱΘ͔Βͳ͍ ͜ͱ͕ଟ͍ 3BJMTͷγεςϜςετΛɺϒϥοΫϘοΫεͳ··ٞ࿦Λ͍ͯ͠·ͤΜ͔ʁ

  10. lγεςϜςετղ๤ֶz

  11. ͜ͷϓϨθϯͷΰʔϧ ʮ˓˓ͨ͠΄͏͕͍͍Αʯ ʮ˓˓͠ͳ͍΄͏͕͍͍Αʯ 3BJMTͷγεςϜςετͷߏ੒ཁૉ͸ʁ ͲͷλΠϛϯάͰԿ͕ಈ͘ʁ ϕετϓϥΫςΟε ΛӏವΈʹͤͣʹ 3BJMTγεςϜςετͷதͷ࢓૊Έ Λཧղͯ͠ ՝୊෼ੳɾղܾΛ͠Α͏ɻ

    ෭࣍తͳޮՌͱͯ͠ 
 ͜ΕͰɺ$BQZCBSB͕͋Δ೔ಥવͳ͘ͳͬͯ΋ɺ͋ͳͨͷνʔϜͰ͸γεςϜςετΛଓ͚͍͚ͯΔʂ
  12. ղ๤։࢝ 3BJMTγεςϜςετ

  13. 3BJMTγεςϜςετͷੜཱ͍ͪ IUUQTHJUIVCDPNSBJMTSBJMTQVMM

  14. 3BJMTγεςϜςετͷཁૉᶃ ࡶʹҙ༁͢Δͱɾɾɾ γεςϜड͚ೖΕςετΛ3BJMTʹಋೖ͍͕ͨ͠ $BQZCBSB΍4FMFOJVN͸ηοτΞοϓ͕໘౗ɻ 3BJMTͱͯ͠σϑΥϧτઃఆΛ༻ҙͯ͠ɺ αοͱ࢖͍࢝ΊΒΕΔΑ͏ʹ͍ͨ͠ΑͶɻ

  15. 3BJMTγεςϜςετͷཁૉᶄ ࡶʹҙ༁͢Δͱɾɾɾ ςετϥϯφʔͱ8FCαʔόʔͷεϨου͕෼͔Ε͍ͯΔ͜ͱͰɺ 5SBOTBDUJPOBM'JYUVSFʢ'BDUPSZ#PUͷςετσʔλͳͲʣ ͕ظ଴௨Γʹಈ͔ͳ͍໰୊͋ͬͨΑͶɻ %BUBCBTF$MFBOFS͕͜Ε·Ͱ࢖ΘΕ͖͚ͯͨͲɺ 3BJMTͷ"DUJWF3FDPSEΛमਖ਼͢Δ͜ͱͰղܾ͠Α͏Αɻ

  16. 3BJMTγεςϜςετ 4IBSJOH%#DPOOFDUJPO ʴ $BQZCBSBJOUFHSBUJPO 'BDUPSZ#PUͳͲͰ࡞ͬͨςετσʔλΛɺ ಛผͳ(FNͳͲΛඞཁͱͤͣʹ ϒϥ΢β͔ΒݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͨ͠ $BQZCBSBΛॳظઃఆͳ͠Ͱ΋ ͋Δఔ౓͸࢖͑ΔΑ͏ʹͨ͠

  17. 4IBSJOH%#DPOOFDUJPO 3BJMT·Ͱى͖͍ͯͨ͜ͱ 'BDUPSZ#PUͳͲͰ࡞ͬͨςετσʔλΛɺ ϒϥ΢β͔ΒݟΔ͜ͱ͕Ͱ͖ͳ͍

  18. 4IBSJOH%#DPOOFDUJPO

  19. 4IBSJOH%#DPOOFDUJPO

  20. 4IBSJOH%#DPOOFDUJPO 3BJMT γεςϜςετಋೖ Ҏ߱͸ 'BDUPSZ#PUͳͲͰ࡞ͬͨςετσʔλΛɺ ϒϥ΢β͔ΒݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨ

  21. 4IBSJOH%#DPOOFDUJPO w "DUJWF3FDPSE5FTU'JYUVSFTʹमਖ਼͕ೖ͓ͬͯΓɺ 
 ҟͳΔεϨου͔ΒͷΞΫηεͰ΋%#ίωΫγϣϯΛڞ༗͢Δɻ w ʮϢʔβ͕ਓ͍Δঢ়ଶʯΛ'BDUPSZ#PUͰ࡞Ε͹ 
 ϒϥ΢β͔Β΋ͦΕΛഈΊΔΑ͏ʹͳͬͨʂ w

    τϥϯβΫγϣϯɾϩʔϧόοΫͳͷͰɺ 
 ʢ*/4&35536/$"5&ʹൺ΂Δͱʣಈ࡞͕ߴ଎ʂ w ҟͳΔzϓϩηεzͰ8FCαʔόʔ͕ىಈ͍ͯ͠Δ৔߹ʹ͸ 
 %#ίωΫγϣϯ͸ผͳͷͰɺ͜ͷػೳ͕࢖͑ͳ͍ɻ %BUBCBTF$MFBOFSͷUSVODBUJPOετϥςδ
  22. %&.0 ϩάΠϯϢʔβ໊ ͓͠ΒͤҰཡ "KBY ɾ'BDUPSZ#PUͰ࡞ͬͨσʔλΛϒϥ΢β͔ΒݟΕΔʁ ɾCVOEMFFYFDSBJMTDͰ'BDUPSZ#PUͷσʔλ͸ݟ͑Δʜʁ ɾ΋͠1VNBΛΫϥελϞʔυͰىಈ͢Δͱʜ 

  23. 3BJMTγεςϜςετ 4IBSJOH%#DPOOFDUJPO ʴ $BQZCBSBJOUFHSBUJPO 'BDUPSZ#PUͳͲͰ࡞ͬͨςετσʔλΛɺ ಛผͳ(FNͳͲΛඞཁͱͤͣʹ ϒϥ΢β͔ΒݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͨ͠ $BQZCBSBΛॳظઃఆͳ͠Ͱ΋ ͋Δఔ౓͸࢖͑ΔΑ͏ʹͨ͠

  24. 3BJMTγεςϜςετ 4IBSJOH%#DPOOFDUJPO ʴ $BQZCBSBJOUFHSBUJPO 'BDUPSZ#PUͳͲͰ࡞ͬͨςετσʔλΛɺ ಛผͳ(FNͳͲΛඞཁͱͤͣʹ ϒϥ΢β͔ΒݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͨ͠ $BQZCBSBΛॳظઃఆͳ͠Ͱ΋ ͋Δఔ౓͸࢖͑ΔΑ͏ʹͨ͠

  25. $BQZCBSB w ड͚ೖΕςετ༻ͷςετϑϨʔϜϫʔΫ w ֤ςετϥϯφʔ༻ͷΞαʔγϣϯɺTFUVQUFBSEPXO w 3BJMTαʔόʔΛඞཁʹԠͯ͡ىಈ w ϒϥ΢βࣗಈૢ࡞ͷͨΊͷ%4-

  26. $BQZCBSBίʔυྫ

  27. $BQZCBSBͷηοτΞοϓ

  28. $BQZCBSBͷηοτΞοϓ

  29. $BQZCBSBͷηοτΞοϓ

  30. $BQZCBSBͷηοτΞοϓ

  31. $BQZCBSBͷηοτΞοϓ

  32. $BQZCBSBͷηοτΞοϓ ηοτΞοϓ͕݁ߏͨ͘͞Μඞཁ

  33. 3BJMTʹΑΔ$BQZCBSBઃఆ ʢ$ISPNF%SJWFSΛΠϯετʔϧ͍ͯ͠Ε͹ʣ ͙͢ʹγεςϜςετΛॻ͘ಈ͔͢͜ͱ͕Ͱ͖ΔΑ͏ʹ͠Α͏ʂ

  34. 3BJMTʹΑΔ$BQZCBSBઃఆ

  35. 3BJMTʹΑΔ$BQZCBSBઃఆ

  36. 3BJMTʹΑΔ$BQZCBSBઃఆ

  37. 3BJMTʹΑΔ$BQZCBSBઃఆ

  38. 3BJMTʹΑΔ$BQZCBSBઃఆ ʢ$ISPNF%SJWFSΛΠϯετʔϧ͍ͯ͠Ε͹ʣ ͙͢ʹʢ͋Δఔ౓ͷʣγεςϜςετΛॻ͘ಈ͔͢͜ͱ͕Ͱ͖Δ

  39. 3BJMTγεςϜςετͷੜཱ͍ͪ 4IBSJOH%#DPOOFDUJPO ʴ $BQZCBSBJOUFHSBUJPO 'BDUPSZ#PUͳͲͰ࡞ͬͨςετσʔλΛɺ ಛผͳ(FNͳͲΛඞཁͱͤͣʹ ϒϥ΢β͔ΒݟΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͨ͠ $BQZCBSBΛॳظઃఆͳ͠Ͱ΋ ͋Δఔ౓͸࢖͑ΔΑ͏ʹͨ͠

  40. ͜ͷϓϨθϯͷΰʔϧʢ࠶ܝʣ ʮ˓˓ͨ͠΄͏͕͍͍Αʯ ʮ˓˓͠ͳ͍΄͏͕͍͍Αʯ 3BJMTͷγεςϜςετͷߏ੒ཁૉ͸ʁ ͲͷλΠϛϯάͰԿ͕ಈ͘ʁ ϕετϓϥΫςΟε ΛӏವΈʹͤͣʹ 3BJMTγεςϜςετͷதͷ࢓૊Έ Λཧղͯ͠ ՝୊෼ੳɾղܾΛ͠Α͏ɻ

  41. $BQZCBSB͸ʮηοτΞοϓ͕ϥΫʹͳͬͨΑʯ ͚ͩͰ͸ͳ͘ɺத਎ͷཧղΛਂΊΔඞཁ͕͋Δʁ $BQZCBSB*OUFHSBUJPO 4IBSJOH%#DPOOFDUJPO

  42. ղ๤։࢝ $BQZCBSB

  43. $BQZCBSBͷओͳ໾ׂ w ֤छςετϥϯφʔͷηοτΞοϓΛ͢Δ w DBQZCBSBSTQFD DBQZCBSBNJOJUFTU DBQZCBSBDVDVNCFS w )551αʔόʔΛىಈ͢Δ w

    DBQZCBSBSBJMT $BQZCBSB4FSWFS w ϒϥ΢βΛࣗಈૢ࡞͢Δ w $BQZCBSB%4- $BQZCBSB%SJWFS
  44. ςετϥϯφʔͷηοτΞοϓ

  45. ςετϥϯφʔͷηοτΞοϓ w ຊདྷͷґଘؔ܎͸ 
 ςετϥϯφʔ͕$BQZCBSBΛɹηοτΞοϓ

  46. ςετϥϯφʔͷηοτΞοϓ IUUQTHJUIVCDPNSTQFDSTQFDSBJMTCMPCWMJCSTQFDSBJMTWFOEPSDBQZCBSBSC STQFDSBJMTͷίʔυ ඍົʹґଘ ґଘ

  47. ςετϥϯφʔͷηοτΞοϓ DBQZCBSBSTQFD ༨ܭͳॲཧ BGUFS FBDI Ͱ $BQZCBSB಺෦ঢ়ଶΛϦηοτ

  48. ςετϥϯφʔͷηοτΞοϓ DBQZCBSBNJOJUFTU .JOJUFTU޲͚ʹ͸ηοτΞοϓϔϧύʔͳ͠ɻ Ϣʔβ͕खಈͰ ɾ%4-ͱ"TTFSUJPOTΛJODMVEFͨ͠Γ ɾUFBSEPXOͰঢ়ଶΛϦηοτͨ͠Γ ͕ඞཁ Ͱ΋3BJMTҎ߱͸ 4ZTUFN5FTU$BTF͕ ͥΜͿ΍ͬͯ͘ΕΔ

  49. ςετϥϯφʔͷηοτΞοϓ 34QFDͷ৔߹ UFBSEPXO࣌ͷ಺෦ঢ়ଶϦηοτʴЋΛ ςετϥϯφʔʹ΍ͬͯ΋Β͏ͨΊͷ ϔϧύʔϞδϡʔϧΛఏڙ .JOJ5FTUͷ৔߹ Ξαʔγϣϯͷϝιουఆ͚ٛͩఏڙ

  50. )551αʔόʔͷىಈ

  51. )551αʔόʔͷىಈ w $BQZCBSBBQQʹࢦఆ͞Εͨ3BDLΞϓϦέʔγϣϯΛ 
 $BQZCBSBTFSWFSʹࢦఆ͞Εͨ3BDLαʔόʔΛ࢖ͬͯىಈ͢Δ

  52. )551αʔόʔͷىಈ IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBTFSWFSSC SBDLVQʢ3BDL4FSWFSTUBSUʣʹࣅͨɺಠࣗͷϩδοΫͰαʔόʔΛىಈ͢Δ

  53. $BQZCBSB͕࢓ࠐΜͩϛυϧ΢ΣΞ IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBTFSWFSNJEEMFXBSFSC ىಈ֬ೝ༻ΤϯυϙΠϯτ ΞΫςΟϒͳϦΫΤετ਺ ͷ؅ཧ $BQZCBSB಺෦ঢ়ଶϦηοτ࣌ʹ HSFBDFGVMʹϦηοτ͢ΔͨΊ

  54. )551αʔόʔͷىಈλΠϛϯά IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBTFTTJPOSC $ bundle exec ruby run.rb [1] pry(main)> Capybara.current_sessio

    n Capybara starting Puma.. . * Version 5.5.0 , codename: Zawgy i * Min threads: 0, max threads: 4 * Listening on http://127.0.0.1:4918 9 => #<Capybara::Session> $BQZCBSB4FTTJPOJOJUJBMJ[F $BQZCBSBDVSSFOU@TFTTJPOͷॳճࢀর࣌ ʹ$BQZCBSB4FTTJPO͕࡞ΒΕͯɺ ͦ͜Ͱ)551αʔόʔ͕ىಈ͢Δ
  55. )551αʔόʔͷىಈ ɾSBDLVQʹࣅͨಠࣗͷϩδοΫͰ ɹ3BDLαʔόʔΛىಈ ɾ$BQZCBSBDVSSFOU@TFTTJPOॳճࢀর࣌ʹ ɹαʔόʔىಈϓϩηε͕૸Δ ɾ3BDLΞϓϦΛಠࣗͷϛυϧ΢ΣΞͰϥοϓͯ͠ ɹ)551ૄ௨֬ೝ଴ͪɺHSFBDFGVMͳϦηοτ ɹΛ࣮ݱ͍ͯ͠Δ

  56. ϒϥ΢βͷࣗಈૢ࡞

  57. ϒϥ΢βͷࣗಈૢ࡞ $BQZCBSB͕ఏڙ͢Δ%4-Λ࢖ͬͯ ϒϥ΢βΛࣗಈૢ࡞͢Δ

  58. ࣗಈૢ࡞ͷͨΊͷϝιου ϒϥ΢βυΩϡϝϯτશମ ʹର͢Δૢ࡞Λߦ͏ϝιου $BQZCBSB4FTTJPO  %0.ཁૉʹର͢Δɹʏ $BQZCBSB/PEF&MFNFOU BMM fi STUBUUBDI@

    fi MFUFYUDIFDLDIPPTFTDSPMM@UPTDSPMM@CZ DMJDL@MJOL@PS@CVUUPODMJDL@CVUUPODMJDL@MJOL fi MM@JO fi OE fi OE@BMM fi OE@CVUUPO fi OE@CZ@JE fi OE@ fi FME fi OE@MJOL UJUMFCPEZIUNMTPVSDF DVSSFOU@VSM DVSSFOU@IPTUDVSSFOU@QBUI FYFDVUF@TDSJQUFWBMVBUF@TDSJQU WJTJUSFGSFTI HP@CBDLHP@GPSXBSE TFOE@LFZTXJUIJOXJUIJO@FMFNFOUXJUIJO@ fi FMETFUXJUIJO@UBCMFXJUIJO@GSBNF TXJUDI@UP@GSBNFDVSSFOU@XJOEPXXJOEPXTPQFO@OFX@XJOEPX TXJUDI@UP@XJOEPXXJUIJO@XJOEPXXJOEPX@PQFOFE@CZTBWF@QBHFTBWF@BOE@PQFO@QBHF TBWF@TDSFFOTIPUTBWF@BOE@PQFO@TDSFFOTIPUSFTFU@TFTTJPO SFTQPOTF@IFBEFST TUBUVT@DPEFDVSSFOU@TDPQF <>BMMPX@SFMPBEDIFDLFE  DMJDLEJTBCMFE EPVCMF@DMJDL ESBH@UPESPQFWBMVBUF@BTZOD@TDSJQUFWBMVBUF@TDSJQU FYFDVUF@TDSJQU fl BTI IPWFSJOJUJBM@DBDIFJOTQFDUNVMUJQMF OBUJWF PCTDVSFE QBUISFBEPOMZ SFDUSFMPBESJHIU@DMJDLTDSPMM@UP TFMFDU@PQUJPOTFMFDUFE  TFOE@LFZTTFUTUZMFUBH@OBNFUFYU USJHHFSVOTFMFDU@PQUJPOWBMVF WJTJCMF
  59. $BQZCBSB%4-ͷ࣮ମ $BQZCBSBͷ%4-ͷϝιου͸શͯ $BQZCBSBDVSSFOU@TFTTJPOʹ εϧʔύε͢Δ͚ͩ IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBETMSC

  60. )551αʔόʔͷىಈλΠϛϯάʢ࠶ܝʣ IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBTFTTJPOSC $BQZCBSB4FTTJPOJOJUJBMJ[F $BQZCBSBDVSSFOU@TFTTJPOͷॳճࢀর࣌ ʹ$BQZCBSB4FTTJPO͕࡞ΒΕͯɺ ͦ͜Ͱ)551αʔόʔ͕ىಈ͢Δ ͋Δ͍͸ɺ $BQZCBSBͷ%4-ΛॳΊͯ࢖͏λΠϛϯά

  61. )551αʔόʔͷىಈλΠϛϯάʢ࠶ܝʣ ͜͜Ͱ)551αʔόʔ͕ىಈ͢Δ

  62. $BQZCBSB%4-ͱυϥΠό $BQZCBSB%4- WJTJU DMJDL ʜ XJUI@JOʜ ૢ࡞಺༰Λهड़͢Δ͚ͩɻ ϒϥ΢βͷૢ࡞ํ๏͸஌Βͳ͍ɻ

  63. $BQZCBSB%4-ͱυϥΠό $BQZCBSB%4- WJTJU DMJDL ʜ XJUI@JOʜ $BQZCBSBυϥΠό͕ ϒϥ΢βͷૢ࡞ํ๏Λఆٛ͢Δ

  64. $BQZCBSBυϥΠό ˞Ұ෦লུ͍ͯ͠Δ෦෼͕͋Γ·͢

  65. $BQZCBSBυϥΠόͷ༗໊Ͳ͜Ζ 4FMFOJVN w 4FMFOJVN8FC%SJWFSΛར༻ͯ͠ϒϥ΢βΛࣗಈૢ࡞ɻ 
 ར༻ϒϥ΢β͝ͱʹɺผ్8FCυϥΠόʔΛΠϯετʔϧ͢Δඞཁ͋Γɻ $VQSJUF w $ISPNF%FW5PPMT1SPUPDPMΛར༻ͨ͠'FSSVNͱ͍͏ϥΠϒϥϦΛར༻ͯ͠ 


    &EHF΍$ISPNFΛࣗಈૢ࡞ɻ 1PMUFSHFJTU DBQZCBSBXFCLJU w 1IBOUPN+4΍2U8FC,JUͳͲΛϕʔεʹࣗಈૢ࡞ɻ 
 ࠓ͸΋͏ϝϯς͞Ε͍ͯͳ͍
  66. $BQZCBSBυϥΠόͷ࣮૷ IUUQT[FOOEFWZVTVLFJXBLJTDSBQTBBCGBF ͢Έ·ͤΜɺ࿩͢ͱ͔ͳΓ௕͘ͳΔͷͰɺҎԼͷ[FOOͷهࣄΛಡΜͰ͍ͩ͘͞ɾɾɾʢ׼

  67. $BQZCBSBʹΑΔࣗಈૢ࡞ͷॲཧৄࡉ $BQZCBSB͕಺෦ͰͲ͏͍͏ॲཧΛ͍ͯ͠Δͷ͔ ۩ମతͳϢʔεέʔεΛྫʹɺιʔείʔυΛಡΜͰΈ·͠ΐ͏ʂ ɾ%0.ཁૉͷऔಘ ɾJOQVUϑΥʔϜ΁ͷจࣈೖྗ :VTVLF*XBLJ Ϣʔβʔ໊ ύεϫʔυ ର৅Ϣʔεέʔε %"4)#0"3%

    ͜Μʹͪ͸:VTVLF*XBLJ͞Μ HSFFUJOH
  68. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM

  69. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBTFTTJPOSC fi OE΍DMJDLͳͲ͸ɺ υΩϡϝϯτϧʔτ/PEFʹର͢Δ ϝιουݺͼग़͠

  70. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM ˠ$BQZCBSB/PEF#BTF fi OE ɹ$BQZCBSB/PEF#BTFBMM RVFSZ4FMFDUPS"MMతͳಈ࡞Λ͢Δ΋ͷ

    IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEF fi OEFSTSC
  71. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM ˠ$BQZCBSB/PEF#BTF fi OE ɹ$BQZCBSB/PEF#BTFBMM IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEF

    fi OEFSTSC RVFSZ4FMFDUPS"MMతͳΫΤϦΛ࣮ߦ ̎ݸҎ্ͩͬͨΓ̌ݸͩͬͨΓͨ͠ΒSBJTF ώοτͨ̍͜͠Λฦ͢
  72. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM ˠ$BQZCBSB/PEF#BTF fi OE ɹ$BQZCBSB/PEF#BTFBMM ࡉ͔͍Φϓγϣϯͷॲཧ

    RVFSZ4FMFDUPS"MMతͳಈ࡞Λ͢Δ΋ͷ IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEF fi OEFSTSC RVFSZ4FMFDUPS"MMతͳΫΤϦΛ࣮ߦ ࡉ͔͍Φϓγϣϯͷॲཧ ࡉ͔͍Φϓγϣϯͷॲཧ ݁ՌΛશ෦ฦ͢
  73. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM ˠ$BQZCBSB/PEF#BTF fi OE ɹ$BQZCBSB/PEF#BTFBMM IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEF

    fi OEFSTSC ˠTZODISPOJ[F\EPDVNFOURVFSZ4FMFDUPS"MMతͳ fi STU^ ɹTZODISPOJ[F\EPDVNFOURVFSZ4FMFDUPS"MMతͳBMM^
  74. %0.ཁૉͷऔಘ υϥΠό͕RVFSZ4FMFDUPS"MMతͳಈ࡞Λ࣮૷

  75. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM ˠ$BQZCBSB/PEF#BTF fi OE ɹ$BQZCBSB/PEF#BTFBMM IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEF

    fi OEFSTSC ˠTZODISPOJ[F\EPDVNFOURVFSZ4FMFDUPS"MMతͳ fi STU^ ɹTZODISPOJ[F\EPDVNFOURVFSZ4FMFDUPS"MMతͳBMM^ ͜Ε͸Կʁ
  76. TZODISPOJ[F ɾ+BWBͷΑ͏ʹεϨουഉଞॲཧΛ΍ΔΞϨͰ͸ͳ͍ ɾ໊લʹ൓ͯ͠ɺʮ৚݅Λຬͨ͢·Ͱ଴ͭʯ໾ׂΛ΋ͭϝιου ɾʮը໘ભҠ͙ͯͩ͢͠ͱɺͦ͜ʹ%0.ཁૉ͕ͳ͍͔΋͠Εͳ͍ʯ 
 ɹʮ͖ͬ͞·Ͱ͋ͬͨ%0.ཁૉ͕ͳ͘ͳͬͯΔ͔΋͠Εͳ͍ʯ 
 ɹͷΑ͏ͳέʔεΛɺڞ௨తʹέΞ͢Δ

  77. TZODISPOJ[F IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFCBTFSC

  78. TZODISPOJ[F IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFCBTFSC TZODISPOJ[F\ʜ^ϒϩοΫͷதʹTZODISPOJ[F͕͋Δ৔߹ʹ͸ɺ ωετ͍ͯ͠Δ৔߹ʹ͸ Ұ൪֎ଆͷTZODISPOJ[F͚ͩ༗ޮɻ

  79. TZODISPOJ[F IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFCBTFSC λΠϚʔʢσϑΥϧτ̎ඵɺΧελϚΠζՄʣΛ༻ҙ ༩͑ΒΕͨϒϩοΫͷॲཧΛ࣮ߦ ϦτϥΠʂ ྫ֎͕ൃੜͨ͠ͱͯ͠΋ɾɾɾ ඵ଴͔ͬͯΒ ࣍ϖʔδͰಡΈղ͘ ʢ࣍ϖʔδͰಡΈղ͘ʣ

  80. TZODISPOJ[F IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFCBTFSC αʔόʔىҼͷྫ֎͸ͦͷ··SBJTF λΠϚʔ੾ΕͩͬͨΒͦͷ··SBJTF ʮ%0.ཁૉ͕ݟ͔ͭΒͳ͍ʯҎ֎Ͱ͋Ε͹ͦͷ··SBJTF

  81. TZODISPOJ[F IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFCBTFSC λΠϚʔʢσϑΥϧτ̎ඵɺΧελϚΠζՄʣΛ༻ҙ ༩͑ΒΕͨϒϩοΫͷॲཧΛ࣮ߦ ϦτϥΠʂ ྫ֎͕ൃੜͨ͠ͱͯ͠΋ɾɾɾ ඵ଴͔ͬͯΒ ʮ%0.ཁૉ͕ݟ͔ͭΒͳ͍ʯ৔߹ʹ͸ λΠϚʔ͕੾Ε͍ͯͳ͚Ε͹

  82. %0.ཁૉͷऔಘ ˠ$BQZCBSB4FTTJPO fi OE ɹ$BQZCBSB4FTTJPOBMM ˠ$BQZCBSB/PEF#BTF fi OE ɹ$BQZCBSB/PEF#BTFBMM IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEF

    fi OEFSTSC ˠ࠷େ̎ඵ͸ϙʔϦϯά\EPDVNFOURVFSZ4FMFDUPS"MMతͳ fi STU^ ɹ࠷େ̎ඵ͸ϙʔϦϯά\EPDVNFOURVFSZ4FMFDUPS"MMతͳBMM^
  83. %0.ཁૉͷऔಘ %0.ཁૉ͕ݱΕΔ·Ͱ ϙʔϦϯά֬ೝ

  84. %0.ཁૉͷऔಘʹݟΔ$BQZCBSBͷऑ఺ $BQZCBSB͕ࣗલͰ υϥΠόͷछྨʹΑΒͣ ͘͝·ΕʹඵεϦʔϓͷؒʹح੻͕ى͖ͯɺ %0.มߋݕ஌Λಀͯ͠λΠϜΞ΢τΤϥʔʹͳΔ ͜ͱ͕͋Δʢ͔΋ʜܦݧଇͰɺཪ͸औΕ͍ͯͳ͍ʣ ࠷ۙͷࣗಈૢ࡞Τϯδϯʢ1MBZXSJHIUͳͲʣ͸ %0.ཁૉ͕ݱΕΔ·Ͱಈ͔ͳ͘ͳΔ·Ͱ ࣗಈͰ଴ͬͯ͘ΕΔ͕ɺͦͷಛੑΛ׆͔ͤͳ͍ʜ %0.ཁૉ͕ݱΕΔ·Ͱ

    ϙʔϦϯά֬ೝ
  85. จࣈೖྗ ˠ$BQZCBSB4FTTJPO fi MM@JO fill_in('name’, with: 'YusukeIwaki')

  86. จࣈೖྗ ˠ$BQZCBSB4FTTJPO fi MM@JO IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFBDUJPOTSC fill_in('name’, with: 'YusukeIwaki') ˠ$BQZCBSB/PEF#BTF fi

    MM@JO $BQZCBSBυϥΠόͷ/PEFTFUϝιουΛݺͿ͚ͩ %0.ཁૉΛ fi OEͰ୳ͯ͠
  87. จࣈೖྗ ˠ$BQZCBSB4FTTJPO fi MM@JO IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFBDUJPOTSC fill_in('name’, with: 'YusukeIwaki') ˠ$BQZCBSB/PEF#BTF fi

    MM@JO fi MMBCMF@ fi FMEͰbOBNF`ʹ֘౰͢Δ%0.ݕࡧ ˠ fi OE  fi MMBCMF@ fi FME bOBNF`  TFU b:VTVLF*XBLJ`
  88. จࣈೖྗ ˠ$BQZCBSB4FTTJPO fi MM@JO IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBTFMFDUPSEF fi OJUJPO fi MMBCMF@ fi

    FMESC fill_in('name’, with: 'YusukeIwaki') ˠ$BQZCBSB/PEF#BTF fi MM@JO ˠ fi OE@YQBUI lEFTDFOEBOU <TFMGJOQVUcTFMGUFYUBSFB><OPU !UZQFTVCNJU PS !UZQF JNBHF PS !UZQFSBEJP PS !UZQFDIFDLCPY PS !UZQFIJEEFO PS !UZQF  fi MF >< !JEOBNF PS !OBNFOBNF PS !QMBDFIPMEFSOBNF PS !JE MBCFM< OPSNBMJ[FTQBDF TUSJOH  OBNF >!GPS >cMBCFM< OPSNBMJ[FTQBDF TUSJOH   OBNF >EFTDFOEBOU <TFMGJOQVUcTFMGUFYUBSFB><OPU !UZQFTVCNJU PS !UZQF JNBHF PS !UZQFSBEJP PS !UZQFDIFDLCPY PS !UZQFIJEEFO PS !UZQF b fi MF` >z ˠ fi OE  fi MMBCMF@ fi FME bOBNF`  TFU b:VTVLF*XBLJ` Ϣʔβ͕໨ࢹՄೳͳ΋ͷΛฒ΂ͨɺ ΋ͷ͍͢͝91BUIΫΤϦʜʢۤসʣ
  89. จࣈೖྗ IUUQTHJUIVCDPNUFBNDBQZCBSBDBQZCBSBCMPCNBTUFSMJCDBQZCBSBOPEFBDUJPOTSC ΋ͷ͍͢͝91BUIΫΤϦ

  90. ϒϥ΢βͷࣗಈૢ࡞ ɾ$BQZCBSB%4-ʜૢ࡞ํ๏Λهड़͢Δ͚ͩ ɹ$BQZCBSBυϥΠόʜϒϥ΢βࣗಈૢ࡞ͷ࣮૷෦෼ ɾ$BQZCBSB%4-ͷϕʔε࣮૷Ͱɺ ɹʮඵͷεϦʔϓΛͭͭ͠࠷େ̎ඵ଴ͭʯ ɹͱ͍͏ಠࣗͷϙʔϦϯάϩδοΫ͕͋Δɻ ɾ fi MM@JOͳͲҰ෦ͷࣗಈૢ࡞Ͱ͸ɺ 


    ɹෳࡶոحͳ91BUIΫΤϦͰ%0.ݕࡧ͍ͯ͠Δɻ
  91. 3BJMTγεςϜςετ $BQZCBSB*OUFHSBUJPO 4IBSJOH%#DPOOFDUJPO

  92. ͜ͷϓϨθϯͷΰʔϧʢ࠶ܝʣ ʮ˓˓ͨ͠΄͏͕͍͍Αʯ ʮ˓˓͠ͳ͍΄͏͕͍͍Αʯ 3BJMTͷγεςϜςετͷߏ੒ཁૉ͸ʁ ͲͷλΠϛϯάͰԿ͕ಈ͘ʁ ϕετϓϥΫςΟε ΛӏವΈʹͤͣʹ 3BJMTγεςϜςετͷதͷ࢓૊Έ Λཧղͯ͠ ՝୊෼ੳɾղܾΛ͠Α͏ɻ

  93. த਎Λগ͠Θ͔ͬͨͱ͜ΖͰɺ 3BJMTͷγεςϜςετͷվળ͸Ͳ͏͢Ε͹ʜ $BQZCBSB*OUFHSBUJPO 4IBSJOH%#DPOOFDUJPO

  94. ࣏ྍ։࢝ 3BJMTγεςϜςετ

  95. ࣮ࡍͷςετӡ༻ͷ՝୊ w ࣗಈૢ࡞ͷӡ༻Ͱେมͳͷ͸ʮෆ҆ఆͳςετʯ w ͦ΋ͦ΋զʑ3BJMT։ൃऀ͕΍Γ͍ͨͷ͸ 
 2"؍఺ͷϒϥοΫϘοΫεςετͰ͸ͳ͘ 
 Ϗϡʔͷ୯ମ౷߹ࢼݧ ๯಄ͷεϥΠυˠ

  96. ϒϥοΫϘοΫεςετͱ։ൃऀͷςετ ؅ཧऀϩάΠϯͨ͠Βɺ μογϡϘʔυʹભҠ͠ɺ ͓஌Β͕ͤදࣔ͞ΕΔ͜ͱ ͨͱ͑͹ɾɾɾ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX

    ͓͠Β͕ͤ͋Γ·͢
  97. ϒϥοΫϘοΫεςετͱ։ൃऀͷςετ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ JOQVUUZQFUFYU OBNFVTFSOBNF ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ ΋͠ଞͷ৔ॴʹ ͓஌Β͕ͤग़͍ͯΔͱ͢Ε͹ ͦΕ͸ෆ۩߹
  98. ϒϥοΫϘοΫεςετͱ։ൃऀͷςετ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ JOQVUUZQFUFYU OBNFVTFSOBNF ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ ΋͠ଞͷ৔ॴʹ ͓஌Β͕ͤग़͍ͯΔͱ͢Ε͹ ͦΕ͸ෆ۩߹
  99. ੈͷதͷϕετϓϥΫςΟε͸୭ͷͨΊͷ΋ͷ͔ʁ w ͨͱ͑͹ 
 ʮ*%ࢦఆͷϩέʔλࢦఆ͸ྑ͘ͳ͍ʯ 
 ʮϢʔβ͕ݟ͑Δ΋ͷΛϕʔεʹࣗಈૢ࡞͢ΔΑ͏ʹ͠Α͏ʯ 
 
 ˢ͜ΕΒ͸ϒϥοΫϘοΫεςετͷϕετϓϥΫςΟε

    
 ɹʢ2"؍఺ͷςετࣗಈԽͰɺյΕʹ͍͘ςετΛॻͨ͘Ίͷʣ
  100. $BQZCBSB͸୭ͷͨΊͷ΋ͷ͔ʁ w $BQZCBSB͸"DDFQUBODFUFTUGSBNFXPSL ड͚ೖΕςετ'8 ࣮ࡍͷϢʔβͷΞΫγϣϯΛγϛϡϨʔτ $BQZCBSB͸ 2"؍఺ʢϒϥοΫϘοΫεςετʣͷ໾ʹཱͭπʔϧ

  101. $BQZCBSBͷςετ؍఺ࢥ૝ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ JOQVUUZQFUFYU OBNFVTFSOBNF ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ ΋͠ଞͷ৔ॴʹ ͓஌Β͕ͤग़͍ͯΔͱ͢Ε͹ ͦΕ͸ෆ۩߹ fill_in('name’, with: 'YusukeIwaki') $BQZCBSBΛ࢖ͬͨίʔυ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ ίϯτϩʔϥ΍ϑΥʔϜΦϒδΣΫτͷ࣮૷͕มΘΒͳ͍ݶΓ 
 OBNFଐੑ͸มΘΒͳ͍͠ɺ 
 OBNFଐੑ͕มΘΔͳΒผʹ$*͕མͪͯ͘Ε͍͍ͯ ແବʹDIFDLCPY΍SBEJPϘλϯΛ୳͠ʹߦͬͯ΄͘͠ͳ͍ɻ JOQVU<OBNFbVTFSOBNF`>Ͱඞཁे෼
  102. $BQZCBSBͷςετ؍఺ࢥ૝ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ JOQVUUZQFUFYU OBNFVTFSOBNF ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ ΋͠ଞͷ৔ॴʹ ͓஌Β͕ͤग़͍ͯΔͱ͢Ε͹ ͦΕ͸ෆ۩߹ fill_in('name’, with: 'YusukeIwaki') $BQZCBSBΛ࢖ͬͨίʔυ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ ίϯτϩʔϥ΍ϑΥʔϜΦϒδΣΫτͷ࣮૷͕มΘΒͳ͍ݶΓ 
 OBNFଐੑ͸มΘΒͳ͍͠ɺ 
 OBNFଐੑ͕มΘΔͳΒผʹ$*͕མͪͯ͘Ε͍͍ͯ ෳࡶͳ91BUIΫΤϦͰɺҙਤ͠ͳ͍΋ͷΛरͬͯ΄͘͠ͳ͍ɻ JOQVU<OBNFbVTFSOBNF`>Ͱඞཁे෼
  103. $BQZCBSBͷςετ؍఺ࢥ૝ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ JOQVUUZQFUFYU OBNFVTFSOBNF ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ ΋͠ଞͷ৔ॴʹ ͓஌Β͕ͤग़͍ͯΔͱ͢Ε͹ ͦΕ͸ෆ۩߹ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ click_button(‘Login') expect(page).to have_text('͓͠Βͤ) $BQZCBSBΛ࢖ͬͨίʔυ
  104. 3BJMT։ൃऀʹͱͬͯඞཁͳػೳ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ $BQZCBSBΛ࢖ͬͨίʔυ ݻఆͰ࠷େ˓ඵɺΈ͍ͨͳͷ͸ࠔΔɻ ௨৴ʹ·Εʹ͔͔࣌ؒΔ͔΋͠Εͳ͍ͷ͔ͩΒɺ ʮ˓˓͕׬ྃ͢Δ·Ͱ଴ͭʯͬͯॻ͖ํΛ͍ͨ͠ɻ
  105. 3BJMT։ൃऀʹͱͬͯඞཁͳػೳ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ %"4)#0"3% 8IBU`TOFX -PBEJOHʜ

    MPDBMIPTUEBTICPBSE 2"తͳ؍఺ MPDBMIPTUMPHJO :VTVLF*XBLJ -PHJO 63-ભҠ ॳظඳը͸-PBEJOH %"4)#0"3% 8IBU`TOFX ͓͠Β͕ͤ͋Γ·͢ (&5OFXT +40/ EJWOFXT@DPOUBJOFS ·Εʹඵ͘Β͍͔͔Δ ·Εʹඵ͘Β͍͔͔Δ ࡉ͔͍࣮૷͸ؾʹ͠ͳ͍ ௨ৗͰ͋Ε͹ඵ͘Β͍ͰऴΘΔ͸ͣɻ શମΛ௨ͯ͠ඵ΋͔͔ͬͨΒɺͳʹ͔͓͔͍͠ 3BJMT։ൃऀ͕஌͍ͬͯΔ͜ͱ $BQZCBSBΛ࢖ͬͨίʔυ ݻఆͰ࠷େ˓ඵɺΈ͍ͨͳͷ͸ࠔΔɻ ௨৴ʹ·Εʹ͔͔࣌ؒΔ͔΋͠Εͳ͍ͷ͔ͩΒɺ ʮ˓˓͕׬ྃ͢Δ·Ͱ଴ͭʯͬͯॻ͖ํΛ͍ͨ͠ɻ click_button(‘Login’) ը໘ભҠ͢Δ·Ͱ଴ͭ << GET /news ͷϨεϙϯε͕ऴΘΔ·Ͱ଴ͭ >> << div#news_container ͷLoading͕ফ͑Δ·Ͱ଴ͭ >> expect(<< div#news_container >>).to have_text('͓͠Βͤ) Ͱ΋$BQZCBSB%4-ʹ ͦͷػೳ͕ແ͍ΑͶʔ
  106. 3BJMTγεςϜςετ͸ϒϥοΫϘοΫεςετʹ޲͍͍ͯΔ w ࣗಈૢ࡞ͷӡ༻Ͱେมͳͷ͸ʮෆ҆ఆͳςετʯ w ͦ΋ͦ΋զʑ3BJMT։ൃऀ͕΍Γ͍ͨͷ͸ 
 2"؍఺ͷϒϥοΫϘοΫεςετͰ͸ͳ͘ 
 Ϗϡʔͷ୯ମ౷߹ࢼݧ ͦΕɺπʔϧͷબఆϛε͡ΌΜʁ

    3BJMTͷγεςϜςετͳΒ $BQZCBSB͕͙͢ʹ࢖͑ͯ ศརɺศརʙ̇
  107. $BQZCBSB%4-Λ࢖Θͣʹࣗಈૢ࡞ click_button(‘Login’) ը໘ભҠ͢Δ·Ͱ଴ͭ << GET /news ͷϨεϙϯε͕ऴΘΔ·Ͱ଴ͭ >> << div#news_container

    ͷLoading͕ফ͑Δ·Ͱ଴ͭ >> expect(<< div#news_container >>).to have_text('͓͠Βͤ) $BQZCBSB%4-࢖ΘͣʹͲ͏΍ͬͯϒϥ΢βΛಈ͔ͤ͹͍͍ͷʁ
  108. $BQZCBSB%4-Λ࢖Θͣʹࣗಈૢ࡞ click_button(‘Login’) ը໘ભҠ͢Δ·Ͱ଴ͭ << GET /news ͷϨεϙϯε͕ऴΘΔ·Ͱ଴ͭ >> << div#news_container

    ͷLoading͕ফ͑Δ·Ͱ଴ͭ >> expect(<< div#news_container >>).to have_text('͓͠Βͤ) 4FMFOJVNΛ௚઀࢖͑͹͍͍͡ΌΜɻ ͋ͱ͸ɺ1VQQFUFFS΍1MBZXSJHIUͳͲɺ ࠷ۙͷπʔϧͩͬͨΒ΋ͬͱ؆୯ʹॻ͚ΔΑɻ XBJU'PS/BWJHBUJPO XBJU'PS3FTQPOTF XBJU'PS4FMFDUPS
  109. $BQZCBSB%4-Λ࢖Θͣʹࣗಈૢ࡞ click_button(‘Login’) ը໘ભҠ͢Δ·Ͱ଴ͭ << GET /news ͷϨεϙϯε͕ऴΘΔ·Ͱ଴ͭ >> << div#news_container

    ͷLoading͕ফ͑Δ·Ͱ଴ͭ >> expect(<< div#news_container >>).to have_text('͓͠Βͤ) Ͱ΋ɺ͢ͰʹҎ্ͷςετ࡞ͬͪΌͬͯΔΑʁʁ ҰؾʹҠߦ͢Δͷ͠ΜͲ͍ʔʔ XBJU'PS/BWJHBUJPO XBJU'PS3FTQPOTF XBJU'PS4FMFDUPS
  110. $BQZCBSB%4-Λ࢖Θͣʹࣗಈૢ࡞ click_button(‘Login’) ը໘ભҠ͢Δ·Ͱ଴ͭ << GET /news ͷϨεϙϯε͕ऴΘΔ·Ͱ଴ͭ >> << div#news_container

    ͷLoading͕ফ͑Δ·Ͱ଴ͭ >> expect(<< div#news_container >>).to have_text('͓͠Βͤ) ҰؾʹҠߦ͢ΔඞཁͳΜͯແ͍ɻ ෆ҆ఆͳςετ͔Βॱʹɺஈ֊తʹҠߦ͠Α͏ XBJU'PS/BWJHBUJPO XBJU'PS3FTQPOTF XBJU'PS4FMFDUPS 4UFQෆ҆ఆͳςετͷෆ҆ఆͳ෦෼͚ͩิڧ͢Δ 4UFQෆ҆ఆͳςετ͚ͩɺ$BQZCBSB%4-Λ࢖Θͳ͘͢Δ 4UFQ׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ
  111. 4UFQɿऑ͍ͱ͜ΖΛϐϯϙΠϯτͰิڧ͢Δ 1VQQFUFFSΛ࢖ͬͯࣗಈૢ࡞ $BQZCBSBͰΞαʔγϣϯ 34QFDͰ͍͏ͱɺͭͷJUͷதʹ 1VQQFUFFSͱ$BQZCBSBͷ྆ํ͕ڞଘ IUUQTHJUIVCDPN:VTVLF*XBLJDBQZCBSBNJOJNVNFYBNQMFTUSFFNBJOYTJOBUSB@QVNB@TFMFOJVN@STQFD@XJUI@QVQQFUFFS

  112. 4UFQɿऑ͍ͱ͜ΖΛϐϯϙΠϯτͰิڧ͢Δ click_button(‘Login’) ը໘ભҠ͢Δ·Ͱ଴ͭ << GET /news ͷϨεϙϯε͕ऴΘΔ·Ͱ଴ͭ >> << div#news_container

    ͷLoading͕ফ͑Δ·Ͱ଴ͭ >> expect(<< div#news_container >>).to have_text('͓͠Βͤ) puppeteer_page.wait_for_navigation do end puppeteer_page.wait_for_request(‘/news.json’) puppeteer_page.wait_for_selector(‘div#news_container’) ෆ҆ఆͳςετͷෆ҆ఆͳ෦෼͚ͩิڧ͢Δ
  113. 4UFQɿऑ͍ͱ͜ΖΛϐϯϙΠϯτͰิڧ͢Δ w QVQQFUFFSSVCZΛ࢖͏ͱɺैདྷͷߏ੒Λ΄ͱΜͲม͑ͣʹ 
 ऑ͍෦෼ʹ͚ͩհೖ͢ΔܗͰࣗಈૢ࡞͕Ͱ͖Δ IUUQTTQFBLFSEFDLDPNZVTVLFJXBLJTFMFOJVNQMVTDBQZCBSBEFCVBOEJOHOBUFTVUPXPQVQQFUFFSEFCVRJBOHTJUFNJSV

  114. 4UFQɿऑ͍ͱ͜ΖΛϐϯϙΠϯτͰิڧ͢Δ 1VQQFUFFS͔Βͷ઀ଓ༻ʢ$%1ʣϙʔτ Λ։͚ͯ4FMFOJVN$ISPNFىಈ IUUQTHJUIVCDPN:VTVLF*XBLJDBQZCBSBNJOJNVNFYBNQMFTUSFFNBJOYTJOBUSB@QVNB@TFMFOJVN@STQFD@XJUI@QVQQFUFFS $BQZCBSBυϥΠόͷઃఆͰɺ

  115. 4UFQɿऑ͍ͱ͜ΖΛϐϯϙΠϯτͰิڧ͢Δ ิڧ͍ͨ͠ςετͷTFUVQUFBSEPXOͰ 1VQQFUFFS͔Βͷ઀ଓ༻ʢ$%1ʣϙʔτ ʹ઀ଓ੾அ IUUQTHJUIVCDPN:VTVLF*XBLJDBQZCBSBNJOJNVNFYBNQMFTUSFFNBJOYTJOBUSB@QVNB@TFMFOJVN@STQFD@XJUI@QVQQFUFFS

  116. 4UFQɿऑ͍ͱ͜ΖΛϐϯϙΠϯτͰิڧ͢Δ 1VQQFUFFSΛ࢖ͬͯࣗಈૢ࡞ $BQZCBSBͰΞαʔγϣϯ 1VQQFUFFSͷ1BHF"1*Λ࢖༻ͯ͠ ਫ਼౓ͷߴ͍ࣗಈૢ࡞ΛϐϯϙΠϯτʹߦ͏ IUUQTHJUIVCDPN:VTVLF*XBLJDBQZCBSBNJOJNVNFYBNQMFTUSFFNBJOYTJOBUSB@QVNB@TFMFOJVN@STQFD@XJUI@QVQQFUFFS

  117. 4UFQҰ෦ͷςετ߲໨͚ͩ$BQZCBSB%4-Λ࢖Θͳ͍ 1MBZXSJHIUΛ࢖༻͢Δ $BQZCBSB%4-Λ࢖༻͢Δ ෆ҆ఆͳςετ͚ͩɺ$BQZCBSB%4-Λ࢖Θͳ͘͢Δ 34QFDͰ͍͏ͱɺ JU͝ͱʹ$BQZCBSBΛ࢖͏ͷ͔ 
 1MBZXSJHIUΛ࢖͏ͷ͔Λม͑ΒΕΔ

  118. 4UFQҰ෦ͷςετ߲໨͚ͩ$BQZCBSB%4-Λ࢖Θͳ͍ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBECGB ࣗಈૢ࡞ܥͷ࣮૷ΛԿ΋࣋ͨͳ͍$BQZCBSBυϥΠό ʢԾশɿOVMMυϥΠόʣ

  119. 4UFQҰ෦ͷςετ߲໨͚ͩ$BQZCBSB%4-Λ࢖Θͳ͍ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBECGB ࣗಈૢ࡞ܥͷ࣮૷ΛԿ΋࣋ͨͳ͍$BQZCBSBυϥΠό ʢԾশɿOVMMυϥΠόʣ OFFET@TFSWFS ͕USVF͡Όͳ͍ͱ αʔόʔىಈͯ͘͠Εͳ͍

  120. 4UFQҰ෦ͷςετ߲໨͚ͩ$BQZCBSB%4-Λ࢖Θͳ͍ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBECGB ςετ߲໨ʹESJWFSOVMMࢦఆ͕͋Δ৔߹ʹ͸ɺ TFUVQUFBSEPXOͰɺ 1VQQFUFFS΍1MBZXSJHIUʹΑΔ ࣗಈૢ࡞Λ͢ΔΑ͏ʹઃఆ

  121. 4UFQҰ෦ͷςετ߲໨͚ͩ$BQZCBSB%4-Λ࢖Θͳ͍ w ESJWFSOVMMΛ͚ͭͨ΋ͷ͚ͩ1VQQFUFFSͰࢼݧ͕࣮ߦ͞ΕΔɻ w $BQZCBSB%4-Λ࢖Θͳ͍ঢ়ଶʹγʔϜϨεʹҠߦͰ͖Δɻ $BQZCBSB%4-Λ࢖༻͢Δ 1VQQFUFFSΛ࢖༻͢Δ

  122. 4UFQҰ෦ͷςετ߲໨͚ͩ$BQZCBSB%4-Λ࢖Θͳ͍ w 4UFQ̎ͰશͯͷςετέʔεʹESJWFSOVMM͕෇͚͹ɺ 
 $BQZCBSB͸αʔόʔΛىಈ͢Δ͚ͩͷ໾ׂʹͳΔɻ αʔόʔΛىಈ͢Δͱ͜Ζ͸ $BQZCBSBΛͦͷ··ར༻ ࣗಈૢ࡞ʹ͸1MBZXSJHIU ͳͲΛ௚઀࢖͏ͷͰɺ ۭ࣮૷ͷυϥΠόʹ͢Δɻ

    $BQZCBSB%4-͸࢖Θͳ͍
  123. 4UFQ̏׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ w ͢ͳΘͪʮ3BJMTγεςϜςετΛ࢖Θͳ͘͢Δʯ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBB

  124. 4UFQ̏׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBB $BQZCBSBΛ࢖Θͳ͍ͷͰෆཁ $BQZCBSBͷ୅ΘΓʹ 3BDL4FSWFSTUBSUͳͲͰ αʔόʔΛىಈ͢Δ ࣗಈૢ࡞ʹ͸1MBZXSJHIU ͳͲΛ௚઀࢖͏ ඞཁͳͷ͸ɺ3BJMTαʔόʔΛʢςετϥϯφʔͱผεϨουͰʣىಈ͢Δ͜ͱ͚ͩ

  125. 4UFQ̏׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ IUUQMPDBMIPTUͰىಈͤ͞Δ͚ͩͳΒɺ ࣮͸ͱͯ΋͔ΜͨΜ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBB

  126. 4UFQ̏׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBB TFUVQUFBSEPXOͰɺ 1VQQFUFFS΍1MBZXSJHIUʹΑΔ ࣗಈૢ࡞Λ͢ΔΑ͏ʹઃఆ

  127. 4UFQ̏ɿ׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ IUUQT[FOOEFWZVTVLFJXBLJBSUJDMFTBB 1MBZXSJHIUΛ௚઀࢖ͬͯࣗಈૢ࡞

  128. $BQZCBSB%4-Λ࢖Θͣʹࣗಈૢ࡞ ҰؾʹҠߦ͢ΔඞཁͳΜͯແ͍ɻ ݱ࣮తʹ͸ɺ4UFQ·Ͱ͍͚͍ͯΕ͹े෼ 4UFQෆ҆ఆͳςετͷෆ҆ఆͳ෦෼͚ͩิڧ͢Δ 4UFQෆ҆ఆͳςετ͚ͩɺ$BQZCBSB%4-Λ࢖Θͳ͘͢Δ 4UFQ׬શʹ$BQZCBSBΛ࢖Θͳ͘͢Δ

  129. ·ͱΊ w &&ςετಋೖΛΧϯλϯʹͯ͘͠ΕΔͷ͕3BJMTͷγεςϜςετ w "DUJWF3FDPSEͷ%#ίωΫγϣϯͷڞ༗ʹΑΔվળ΋૬·ͬͯ 
 ʮ+BWB4DSJQUΛ;ΜͩΜʹ࢖ͬͨϏϡʔʯ΋͋Δఔ౓ࢼݧͰ͖Δɻ 


  130. ·ͱΊ w ෆ҆ఆͳςετʹ೰·͞Ε࢝ΊͨΒɺ 
 ϕετϓϥΫςΟεΛӏವΈʹ͢Δલʹɺ 
 ʮͦ΋ͦ΋Ͳ͏͍͏؍఺ͷςετ͕͔ͨͬͨ͠ͷ͔ʯجຊʹཱͪฦΖ͏ʂ

  131. ·ͱΊ w $BQZCBSB%4-͸಺෦࣮૷ΛΈͯΈΔͱ 
 2"؍఺ʢϒϥοΫϘοΫεςετʣΛαϙʔτͯ͘͠ΕΔ܏޲͕ڧ͍ɻ w 3BJMT։ൃऀ؍఺ͷࢼݧΛ͍ͨ͠ͳΒɺ$BQZCBSB%4-ʹґଘͤͣ 
 ߴਫ਼౓ͳ1MBZXSJHIUͳͲΛ෦෼తஈ֊తʹಋೖͯ͠ΈΑ͏ʂ w

  132. ͍͞͝ʹ w 3VCZʹΑΔϒϥ΢βͷࣗಈૢ࡞ʹɺ4FMFOJVNҎ֎ͷબ୒ࢶΛ࡞Γ͍ͨ w 1VQQFUFFSͱ1MBZXSJHIUΛ3VCZ͔Β࢖͑ΔΑ͏ 
 (FN։ൃ͍ͯ͠·͢ɻ ͥͻ࢖ͬͯΈ͍ͯͩ͘͞ˍ࣮ӡ༻Ͱվળ఺͕͋Ε͹ͲΜͲΜཁ๬͍ͩ͘͞ʂ

  133. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠