Pococha UIテストの運用をみすえた対応についての話

394576121c6b861048493988254160dd?s=47 tarappo
October 14, 2020

Pococha UIテストの運用をみすえた対応についての話

10/14(水)のiOS Test TeaTime #1の発表資料です。

394576121c6b861048493988254160dd?s=128

tarappo

October 14, 2020
Tweet

Transcript

  1. 6*ςετͷӡ༻ΛΈ͑ͨ͢ରԠ ʹ͍ͭͯͷ࿩  8FE  J045FTU5FB5JNF ฏాහ೭ UBSBQQP

  2. ࣗݾ঺հ ฏాහ೭ˏ%F/"48&5 4PGUXBSF&OHJOFFSJO5FTU  ϛογϣϯ w %F/"αʔϏεશൠͷ඼࣭޲্ w %F/"ΤϯδχΞͷ։ൃੜ࢈ੑ޲্ 48&5಺ͷॴଐνʔϜ

    wࣗಈςετʢJ04ʣ w$*$% 2
  3. ର৅αʔϏε ϥΠϒίϛϡχέʔγϣϯΞϓϦ

  4. ར༻͍ͯ͠Δςετͷछྨ w Ϣχοτςετ w εφοϓγϣοτςετ w 7JTVBM3FHSFTTJPO5FTU w ΧλϩάԽ w

    6*ςετʢࠓճ࿩͢ͱ͜Ζʣ w ύϑΥʔϚϯεܭଌ w IUUQTTQFBLFSEFDLDPNLBSJBEBQVSJGBMTFQBIVPNBOTVXPKJTPLEFOJKJDF TVSVʢJ04%$ʣ w खಈςετ $*$%αʔϏεͰܧଓతʹಈ͍͍ͯΔ 4
  5. ࠓ೔͸ͳ͢͜ͱ 6*ςετͷಋೖ࣌ͷ͸ͳ͠  6*ςετΛಋೖ͍ͯ͘͠தͰͲͷΑ͏ͳ͜ͱΛ͓͜ͳ͔ͬͨ  ಋೖ͢ΔࡍʹͲͷΑ͏ͳ՝୊͕͔͋ͬͨ  ͦͷ՝୊ʹରͯ͠ͲͷΑ͏ʹΞϓϩʔνΛ͔ͨ͠  ͦͷΞϓϩʔνͷ݁ՌɺͲ͏ͳ͔ͬͨ

    5
  6. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱʢҰ෦ʣ  ςετίʔυͷ࣮૷ίετͷ೺Ѳͱ࣮૷Օॴͷݕ౼  ςετίʔυͷ࣮૷  $*$%αʔϏεʹͷͤͯܧଓ࣮ߦ  ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ 

    ςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ ओʹ࿩͢ͷ͸ͪ͜Β ӡ༻ΛΈ͑ͨ͢ରԠ 6
  7. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̍ʣςετίʔυͷ࣮૷ίετͷ೺Ѳͱ࣮૷Օॴͷݕ౼ w ࣮૷ίετ͕Ͳͷఔ౓͔͔Γͦ͏͔ͷ൑அࢦඪʢͷྫʣ w ը໘਺͕Ͳͷఔ౓͋Δ͔ w 6*ཁૉ͕ಛఆ͠΍͍͔͢ w ૢ࡞͕ࠔ೉ͳߦҝ͕͋Δ͔Ͳ͏͔

    w มߋස౓͕Ͳͷఔ౓͋Γͦ͏ͳͷ͔ w ঢ়ଶʹΑͬͯը໘ͷදࣔͷ༗ແ͕Ͳͷఔ౓͋Γͦ͏͔ w ্هΛݩʹ࣮૷ՕॴΛݕ౼ 7
  8. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̎ʣςετίʔυͷ࣮૷ w ςετίʔυଆ w ར༻͢ΔςεςΟϯάϑϨʔϜϫʔΫɺϥΠϒϥϦͷબఆ w ϓϩμΫτίʔυଆͰར༻͍ͯ͠Δ΋ͷΛར༻ w 9$5FTUʢ9$6*5FTUʣ

    w 2VJDLɺ/JNCMF w ςετίʔυͷॻ͖ํ w 1BHF0CKFDU1BUUFSOΛ࠾༻ w ԦಓͰ͕͢Ϣʔβͷঢ়ଶ͕ଟ͍1PDPDIBͩͱେมʹͳΔ͜ͱ΋͋Γ͑ΔͷͰʮ·ͣʯ͸࠾༻ w ϓϩμΫτίʔυଆ w ૢ࡞ର৅ͷ6*ཁૉʹ"DDFTTJCJMJUZ*EFOUJpFSΛઃఆ 8
  9. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̏ʣɺʢ̐ʣɺʢ̑ʣ w ςετίʔυΛ༻ҙ͔ͯ͠Β͕ຊ൪ʢͱ͍ͬͯ΋ྑ͍ʣ w ӡ༻ΛͲͷΑ͏ʹ͍͔͕ͯ͘͠ॏཁʹͳͬͯ͘Δ w ٕज़໘ w ϓϩηε໘

    ࿩͢ͷ͸ͪ͜Β 9
  10. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̏ʣ$*$%αʔϏεʹͷͤͯܧଓ࣮ߦ w खݩͷ؀ڥʮ͚ͩʯͰಈͦ͘ͷਓͷ؀ڥґଘͷ͓ͦΕ w ࣮ػଆͷ؀ڥґଘ͕ى͖΍͍͢ w ୭Ͱ΋ಈ͔ͤΔ͜ͱ͕ॏཁ ࠷ॳͷ͏͔ͪΒ $*$%αʔϏεͰܧଓ࣮ߦͰ͖ΔΑ͏ʹ͢Δ

    10
  11. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̏ʣ$*$%αʔϏεʹͷͤͯܧଓ࣮ߦ w ·ܾͣΊΔ΂͖఺ w Ͳͷ$*$%αʔϏεͰ࣮ߦ͢Δ͔ w ςετͷ࣮ߦ؀ڥΛͲ͜ʹ͢Δ͔ w ࣮ߦλΠϛϯάΛͲ͏͢Δ͔

    11
  12. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̏ʣ$*$%αʔϏεʹͷͤͯܧଓ࣮ߦ w $*$%αʔϏεɿ#JUSJTF w ϓϩδΣΫτ಺ͰಉҰͷ΋ͷΛར༻ w ࣮ߦ؀ڥɿσόΠεϑΝʔϜ w 'JSFCBTF5FTU-BCɿ#JUSJTF͔Β͔ΜͨΜʹར༻Ͱ͖ΔͨΊ

    w ࣮ߦλΠϛϯάɿఆظ࣮ߦ໷ؒʢ೔ճʣ w 13NFSHF࣌λΠϛϯάͰಈ͔͢ʹ͸·ͩૣ͍ 12
  13. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̐ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝ w 6*ςετͰΑ͋͘Δ໰୊ w ҆ఆੑɿෆ҆ఆʹͳΓ͕ͪ w ࣮ߦ࣌ؒɿ௕͘ͳΓ͕ͪ ςετ͕େ͖͘ͳ͔ͬͯΒ՝୊Λݟ͚ͭΔͷ͸େม εϞʔϧελʔτͰ͸͡ΊΔ

    13
  14. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̐ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝ w গͳ͍6*ςετΛఆظ࣮ߦ͢ΔΑ͏ʹ͢Δ w ʢ̏ʣͰରԠࡁΈ w ࣮ߦ݁ՌΛ΋ͱʹ՝୊఺Λݟ͚ͭΔ w ҆ఆੑ͕ѱ͍Օॴ͸ͳ͍͔ʁ

    w ࣮ߦ͕͔͔͍࣌ؒͬͯΔՕॴ͸ͳ͍͔ʁ 14
  15. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̑ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w ςετ͸ৗʹ੒ޭ͢Δͱ͸ݶΒͳ͍ w ࣦഊͨ͠ͱ͖ʹݪҼ͕Θ͔Γ΍͘͢ͳ͍ͬͯͳ͍ͱमਖ਼ίετ্͕͕Δ w ࢀߟ w 5SJBHFUFTUGBJMVSFTXJUI9$5*TTVF

    w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED 15
  16. ಋೖ͢Δࡍʹ͓͜ͳͬͨ͜ͱ ʢ̑ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w 6*ςετͰͷ੒Ռ෺Λ׆༻ w σόΠεϑΝʔϜͷػೳɿಛʹରԠΛ͠ͳͯ͘0, w ಈըɺϩάʢ#JUSJTFͰ͸5FTU3FQPSUTͱ͍͏Օॴ͔ΒݟΔ͜ͱ͕Ͱ͖Δʣ w ςετίʔυଆͷରԠ

    w 9$5"UUBDINFOUΛ࢖ͬͯςετʹؔ͢ΔσʔλΛอଘ w ࠓճ͸ը૾ͱϩάΛར༻ w ৘ใ͸3FTVMU#VOEMFʹอଘ͞ΕΔ w 3FTVMU#VOEMFɿϏϧυͱςετͷ݁ՌΛؚΉ৽͍͠ϑΝΠϧܗࣜʢYDSFTVMUʣ9DPEFʙ w ࢀߟɿIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOYDUFTUYDUBUUBDINFOU 16 YDSFTVMUϑΝΠϧͷαϯϓϧ
  17. ݟ͑ͨ՝୊ 17

  18. ͓͜ͳͬͨ͜ͱ  $*$%αʔϏεʹͷͤͯܧଓ࣮ߦ  ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ  ςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ 18

  19. ݟ͑ͨ՝୊ ʢ̍ʣ$*$%αʔϏεʹͷͤͯܧଓ࣮ߦ w ؀ڥ৘ใʢ઀ଓઌɺϩάΠϯ৘ใʣΛͲͷΑ͏ʹઃఆ͢Δ ͔ w खݩͷ؀ڥͩͱ৘ใ͕อଘ͞Ε͍ͯͯҙࣝͯ͠ͳ͍͜ͱ ͕ଟ͍ ରԠࡦɿ֎෦͔Β؀ڥ৘ใΛ౉ͤΔΑ͏ʹ͢Δ 19

  20. ରԠࡦ ʢ̍ʣ$*$%αʔϏεʹͷͤͯܧଓ࣮ߦ w ςετίʔυଆͰ࣮૷ɿ w ؀ڥ৘ใ͸KTPOϑΝΠϧͰ؅ཧ w ͜ͷϑΝΠϧΛಡΈࠐΜͰςετίʔυ಺Ͱར༻ w #JUSJTF࣮ߦ࣌ʹKTPOϑΝΠϧΛ্ॻ͖͢Δ

    w #JUSJTFͷ؀ڥม਺Λ࢖্ͬͯॻ͖ w ϫʔΫϑϩʔ୯ҐͰઃఆՄೳ 20 ͜ΕʹΑΓฒྻ࣮ߦ࣌ͷʮϢʔβʯ͕Ϳ͔ͭΔ໰୊΋ճආͰ͖Δ
  21. ݟ͑ͨ՝୊ʢ͓·͚ʣ ʢ̍ʣ$*$%αʔϏεʹͷͤͯܧଓ࣮ߦ w ࣮ߦ୺຤ͷબఆ දࣔ͞Ε͍ͯΔ୺຤Ұཡ͸࠷৽Ͱ͸ͳ͍ͷͰखݩͰ֬ೝͯ͠બఆ HDMPVEpSFCBTFUFTUJPTNPEFMTMJTU 21

  22. ݟ͑ͨ՝୊ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w ಈ͔͠ଓ͚Δ͜ͱʹΑͬͯݟ͑ͨ՝୊ w ࣮ߦ؀ڥͷαʔόબ୒ w ιʔγϟϧϩάΠϯ 22

  23. ݟ͑ͨ՝୊ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w ࣮ߦ؀ڥͷαʔόબ୒ w खಈͷ৔߹ɿ w ΞϓϦͷػೳʢσόοάϝχϡʔʣ͔Βબ୒ w ιʔγϟϧϩάΠϯ

    w खಈͷ৔߹ɿ w ιʔγϟϧϩάΠϯʢ5XJUUFSɺ'BDFCPPLɺ-*/&ͳͲʣ 23
  24. ݟ͑ͨ՝୊ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w ࣮ߦ؀ڥͷαʔόબ୒ w ʣ"1*αʔόબ୒ w ʣ઀ଓ͍ͨ͠αʔόબ୒ w ʣબ୒͞Ε͍ͯΔ͔֬ೝ

    ࣮ߦ࣌ؒɿʣˠʣ·Ͱ͋Δఔ౓͕͔͔࣌ؒΔ ҆ఆੑɿݟ͍͑ͯͳ͍ൣғͰ΋উखʹ4DSPMMΛͯ͘͠ΕΔ͕ͨ·ʹࣦഊ͢Δ͜ͱ͕͋Δ ˠ҆ఆੑΛ͋͛ΔͨΊʹ̏ʣΛ༻ҙ࣮ߦ͕࣌ؒ૿͑Δ 24
  25. ݟ͑ͨ՝୊ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w ιʔγϟϧϩάΠϯ w ̍ʣΞϓϦͰͷιʔγϟϧϩάΠϯ w ̎ʣ4'4BGBSJ7JFX$POUSPMMFSͰදࣔ͞Εͨ8FCϖʔδͰͷϩάΠϯ w ̍ʣΞϓϦͰͷιʔγϟϧϩάΠϯ

    w ର৅ͷΞϓϦҎ֎΋ૢ࡞͸Մೳ w 9$6*"QQMJDBUJPO  w JOJU CVOEMF*EFOUJpFS4USJOH w ͔࣮͠͠ߦ؀ڥʹΑͬͯ͸ΞϓϦΛΠϯετʔϧ͢Δ͜ͱ͸ࠔ೉ w खݩʹ͋Δʮ୺຤ʯͰ͋Ε͹໰୊ͳ͍͕ɺσόΠεϑΝʔϜΛར༻͢Δ৔߹͸ࠔ೉ w ̎ʣ4'4BGBSJ7JFX$POUSPMMFSͰදࣔ͞Εͨ8FCϖʔδͰͷϩάΠϯʢࠓճ͸ͪ͜ΒΛબ୒ʣ 25
  26. ݟ͑ͨ՝୊ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w ιʔγϟϧϩάΠϯ w ࣮ߦ͕͔͔࣌ؒΔ w ʮϩάΠϯςετϩάΞ΢τʯͱ·Ͱ͍ͯ͠ΔͨΊ༨ܭʹ͔͔Δ w ҆ఆੑ͕Α͘ͳ͍

    w σόΠεϑΝʔϜͰ࣮ߦ͠ଓ͚Δෳ਺୺຤ͰϩάΠϯ͠ଓ͚Δˠ ΞΧ΢ϯτΛϩοΫ͞ΕΔ͜ͱ͕͋Δ w ͜ΕΒΛߟྀͨ͠ૢ࡞Λ૿΍͢ͷ͸େม 26
  27. ͜ΕΒͷૢ࡞͸ 6*ςετͰຊ౰ʹ͓͜ͳ͏ඞཁ͕͋Δ͔ ςετͰ୲อ͢Δ΂͖৔ॴͳͷ͔ 27

  28. ରԠࡦ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w 6*ςετͰ୲อ͢΂͖΋ͷͰͳ͚Ε͹ w 6*ςετͰؤுΒͳ͍ w ϓϩμΫτίʔυଆʹରԠΛೖΕΔ 28

  29. ରԠࡦ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ w ؀ڥม਺ͷར༻ w ର৅ͱͳΔ΋ͷ w ઀ଓઌʢ࣮ߦ؀ڥʣ w ϩάΠϯ͢ΔϢʔβʔ

    w ࢀߟɿ8SJUFUFTUTUPGBJM w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED ϓϩμΫτίʔυଆͷվम 29
  30. ରԠࡦ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ • ϓϩμΫτίʔυଆͰɺ؀ڥม਺ʹΑͬͯڍಈΛมߋ͢Δ let env = ProcessInfo.processInfo.environment guard let

    name = env["SERVER_NAME"], let host = env["SERVER_HOST"] else { return nil } ίʔυྫ ϓϩμΫτίʔυଆͷվम 30
  31. ରԠࡦ ʢ̎ʣ҆ఆੑɺ࣮ߦ࣌ؒͷ֬ೝͱରԠ • ςετίʔυଆͰ؀ڥม਺Λ౉͢ • ؀ڥ৘ใ͸jsonϑΝΠϧͰ؅ཧΛ͍ͯ͠ΔͷͰɺͦͷ஋Λ౉͚ͩ͢ ίʔυྫ self.launchEnvironment = ["SERVER_NAME":

    env.serverName, "SERVER_HOST": env.serverHost, "LOGIN_ID": env.loginID] ςετίʔυଆͷվम 31 ࢀߟɿIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOYDUFTUYDVJBQQMJDBUJPOMBVODIFOWJSPONFOU
  32. ݟ͑ͨ՝୊ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w ςετͷ੒Ռ෺ w ̍ʣ2VJDLͷ9$5"UUBDINFOUରԠ w ୯७ʹݺΜͰ΋อଘ͞Εͳ͍ w ̎ʣ3FTVMU#VOEMFͷѻ͍ํ

    w ̏ʣ#JUSJTFʹৗʹݟʹߦ͘ͷ͸໘౗ w ˠରԠࡦɿ4MBDLͰ͋Δఔ౓৘ใΛ௨஌ 32
  33. ݟ͑ͨ՝୊ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w ̍ʣ2VJDLͰͷ9$5"UUBDINFOUରԠ w 9$5"UUBDIFNFOUΛ௚઀ݺΜͰ΋อଘ͞Ε ͳ͍ 33

  34. ରԠࡦ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w ̍ʣ2VJDLͰͷ9$5"UUBDINFOUରԠ extension QuickSpec { func takeScreenshot(name: String)

    { let screenshot = XCUIScreen.main.screenshot() let attachment = XCTAttachment(screenshot: screenshot) attachment.lifetime = .keepAlways attachment.name = name QuickSpec.current.add(attachment) } } ίʔυྫ 34
  35. ݟ͑ͨ՝୊ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w ̎ʣ3FTVMU#VOEMFͷѻ͍ํ w #JUSJTFY'JSFCBTF5FTU-BCͷςετ݁Ռ w ಈը͚ͩͰෆे෼ w ςετࣦഊՕॴΛݟ͚ͭΔͷʹ͕͔͔࣌ؒΔ

    w ςετࣦഊՕॴ͕෼͔ΓͮΒ͍ 35 ςετ݁ՌΛ੒ޭɺࣦഊͳͲͰݟΒΕΔ3FTVMU#VOEMF͸ॏཁ
  36. ݟ͑ͨ՝୊ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w 3FTVMU#VOEMF w ̍ʣ#JUSJTFͷ'JSFCBTF5FTU-BCͷεςοϓͰಘΒΕΔ੒Ռ෺ͷ3FTVMU#VOEMF ͕ٻΊΔܗͷߏ੒Λ͍ͯ͠ͳ͍3FTVMU#VOEMF͔Βͷσʔλநग़͕Ͱ͖ͳ͍ w ϑΝΠϧྫʣJQIPOFKB@+1 QPSUSBJU@$SBTI-PHT@&YD6TFS'BVMU@DPNBQQMFNPCJMFOPUFT4QPUMJHIU*OEFY&YUFOTJPO

    JQT w ˠٻΊΔܗʣJQIPOFKB+1QPSUSBJU$SBTI-PHT&YD6TFS'BVMU DPNBQQMFNPCJMFOPUFT4QPUMJHIU*OEFY&YUFOTJPOJQT w ̎ʣNBD04ϢʔβʔҎ֎͸ݟ͑ͳ͍ 36
  37. ରԠࡦ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w 3FTVMU#VOEMF w ̍ʣ#JUSJTFͷ'JSFCBTF5FTU-BCͷεςοϓͰಘΒΕΔ੒ Ռ෺ͷ3FTVMU#VOEMF͕ٻΊΔܗͷߏ੒Λ͍ͯ͠ͳ͍ w ˠผͷεςοϓͰ3FTVMU#VOEMFΛ࠶ੜ੒ w

    ̎ʣNBD04ϢʔβʔҎ֎͸ݟ͑ͳ͍ w ˠ̍ʣͰ࡞ͬͨ3FTVMU#VOEMF͔ΒσʔλΛநग़ 37
  38. ରԠࡦ ʢ̏ʣςετࣦഊ࣌ͷτϦΞʔδͷ͠΍͢͞ରԠ w 3FTVMU#VOEMF͔Βͷσʔλநग़ʹར༻ͨ͠΋ͷ w ̍ʣIUNMϑΝΠϧΛੜ੒ w IUUQTHJUIVCDPN5JUPVBO7BO#FMMF9$5FTU)5.-3FQPSU w ը૾૊ΈࠐΈͷIUNMϑΝΠϧ΋ੜ੒Մೳ

    w ̎ʣ֤छσʔλͷநग़ʢεΫϦʔϯγϣοτͳͲʣ w IUUQTHJUIVCDPN$IBSHF1PJOUYDQBSTF 38
  39. ͓͜ͳͬͨରԠͷ݁Ռ 39

  40. վमʹ൐͏վળ಺༰ ςετ݁Ռ w ੒Ռ෺ͷར༻ʢςετϨϙʔτʣ ੒Ռ෺͸̎छྨ ̍ʣ3FTVMU#VOEMFʢYDSFTVMUϑΝΠϧʣΛ֬ೝ ̎ʣ)5.-ϑΝΠϧΛ֬ೝ 40 ࣦഊ࣌

  41. վमʹ൐͏վળ಺༰ ςετ݁Ռ w 4MBDL௨஌ w ௨஌ʹ৘ใΛ௥Ճ ʢ̍ʣσόΠεϑΝʔϜ͔ΒಘΒΕΔKTPOϑΝΠϧ͔Βऔಘ ྫʣJQIPOFKBQPSUSBJUUFTUSFTVMUYNM ʢ̎ʣ༻ҙࡁΈ؀ڥ৘ใͷKTPOϑΝΠϧ͔Βऔಘ ʢ̍ʣ

    ʢ̎ʣ 5FTU3FQPSU΁ͷϦϯΫΛ௥Ճ 41
  42. վमʹ൐͏վળ಺༰ ҆ఆੑɾ࣮ߦ࣌ؒ w ҆ఆੑ޲্ w ֘౰ՕॴͰͷࣦഊ཰ڧˠ w ΞΧ΢ϯτϩοΫʹΑΔࣦഊؚΉ w σόΠεϑΝʔϜͰλΠϜΞ΢τʹͳͬͨճ਺ɿճ

    w ࣮ߦ࣌ؒͷ୹ॖ w ໿NJOˠ໿NJOʢ໿Ҏ্࡟ݮʣ w ͦͷଞ w ಈ࡞֬ೝͷ༰қ͞޲্ ҆ఆੑ޲্ɺ࣮ߦ࣌ؒͷ୹ॖʹΑΓ ࣮ߦλΠϛϯάΛ૿΍͢͜ͱ͕ग़དྷͨ 42
  43. ͓ΘΓʹ 6*ςετ͸ӡ༻पΓͰίετ͕͔͔Γ΍͍͢܏޲͕͋Γ·͢ ͦͷίετ΋ࣄલʹରԠ͢Δ͜ͱͰ͋Δఔ౓গͳ͘͢Δ͜ͱ͕ग़ དྷ·͢ దࡐదॴͰʮ6*ςετʯ΋׆༻͍͖ͯ͠·͠ΐ͏ 43

  44. ࠷ޙʹ "OESPJEςετશॻ J04ςετશॻ J04ΞϓϦ։ൃ ࣗಈςετͷڭՊॻ ςετͷ͜ͱ͕ؾʹͳͬͨΒ͜ΕΒͷຊ΋ࢀߟʹͲ͏ͧ 44