Slide 1

Slide 1 text

גࣜձࣾϠϓϦా࣮੣ ಠࣗϑϨʔϜϫʔΫ 1)1ΞϓϦέʔγϣϯͷվળઓུ

Slide 2

Slide 2 text

ࣗݾ঺հ w ా࣮੣!U[N@GSFFEPN w גࣜձࣾϠϓϦͷαʔόʔαΠυΤϯδχΞ w 1)1ྺ͸̏ʙ೥͘Β͍ w 1)1FS,BJHJͰ͸1)1Ͱ1)1Λ࣮૷ͯ͠·ͨ͠

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ wಠࣗϑϨʔϜϫʔΫ1)1ΞϓϦέʔγϣϯͷվળํ๏ wվળͷਐΊํɺઓུ ˞֤ٕज़ͷৄࡉ͸͋·Γ࿩͠·ͤΜ🙏

Slide 4

Slide 4 text

ಠࣗϑϨʔϜϫʔΫͰ΋ఘΊͳ͍Ͱʂ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

:BQQMJʹ͍ͭͯ w ϊʔίʔυͰΞϓϦΛ࡞ΕΔϓϥοτϑΥʔϜ w εϐʔυಋೖ w ೥ؒҎ্ͷΞοϓσʔτ w ଟ࠼ͳϓογϡ௨஌ w ಋೖ࣮੷ࣾҎ্ w ૯μ΢ϯϩʔυ਺໿ສ

Slide 7

Slide 7 text

:BQQMJͷΞʔΩςΫνϟʹ͍ͭͯ w 8FCͷίϯςϯπ؅ཧը໘ʢ$.4ʣͰίϯςϯπΛฤू 
 ΞϓϦ͔Β"1*Λୟ͍ͯίϯςϯπσʔλΛऔಘ 
 औಘͨ͠ίϯςϯπσʔλΛ࢖ͬͯը໘දࣔ ࠓ೔࿩͢ͷ͸͜ͷ"1*ʹ͍ͭͯ

Slide 8

Slide 8 text

"1*ͷ֓ཁ w ωΠςΟϒΞϓϦ޲͚ͷ"1* w $.4Ͱઃఆͨ͠ίϯςϯπ৘ใΛ഑৴͍ͯ͠Δ w ϦΫΤετ਺ʙ SQT w -0$ʙ਺ສߦ w "1*ΤϯυϙΠϯτ਺ʙ w ։ൃظؒ೥͔Β

Slide 9

Slide 9 text

"1*ͷίʔυ w JODMVEF0SJFOUFEͳಠࣗϑϨʔϜϫʔΫ w ΄ͱΜͲ͕ΫϥεԽɺؔ਺Խ͞Ε͍ͯͳ͍εΫϦϓτͰߏ੒ w ৑௕ͳॏෳίʔυ w ࿈૝഑ྻϕʔεͰͷม਺΍ΓͱΓ w ςετίʔυʗ੩తղੳͳ͠

Slide 10

Slide 10 text

ಠࣗϑϨʔϜϫʔΫͷߏ଄ w ਌ϑΝΠϧࢠϑΝΠϧଙϑΝΠϧͷJODMVEFϦϨʔ w ݺͼग़͠ݩϑΝΠϧͰఆٛͨ͠ม਺ɾؔ਺Λݺͼग़͠ઌͰར༻ JODMVEFͰݺͼग़͠ $application = [ ... ] ; // ... // ࢠεΫϦϓτͷݺͼग़͠ $scriptPath = getScript($requestPath) ; include "/path/to/root/$scriptPath"; if ($application['xxx'] === 'yyy') { // ... } // ଙεΫϦϓτͷݺͼग़͠ $scriptPath = getScript($_GET) ; include "/path/to/root/$scriptPath";

Slide 11

Slide 11 text

๊͍͑ͯͨ՝୊ w ػೳ௥ՃɺϦϑΝΫλϦϯά͕ͮ͠Β͍ w खಈͰಈ࡞֬ೝΛ͢Δ·Ͱਖ਼ৗʹಈ͔͘อূͰ͖ͳ͍ w ॲཧ͕ΫϥεԽɺؔ਺Խ͞Ε͍ͯͳ͍ͷͰςετ΋ॻ͖ͮΒ͍ w ৑௕ͳॏෳίʔυ͕͋Γڞ௨ॲཧΛೖΕʹ͍͘ w ϩάϨϕϧ͕ೖ͓ͬͯΒͣɺ؂ࢹ΍τϨʔε͕ͮ͠Β͍

Slide 12

Slide 12 text

վળઓུͱํ๏

Slide 13

Slide 13 text

ઓུ w খ࢝͘͞ΊΔ w μϝͩͬͨΒ͙͢ʹࣺͯΕΔΑ͏ʹ w ίʔυमਖ਼Λ͠ͳ͍վળํ๏͔Βணखɻ֎ງ͔ΒຒΊ͍ͯ͘ w ׬ᘳΛٻΊͳ͍ɻ·ͣ͸͜Μͳײ͡ɺͰͪΐͬͱͣͭਐΊΔ w ίεύΛҙࣝ w "1*վળҎ֎ʹ΋Ϗδωεతɾٕज़తʹ΍Γ͍ͨ͜ͱ͸ແݶʹ͋Δ

Slide 14

Slide 14 text

՝୊ɿػೳ௥Ճɾมߋ͕ͮ͠Β͍

Slide 15

Slide 15 text

ղܾํ๏̍ࣗಈςετಋೖ

Slide 16

Slide 16 text

ࣗಈςετ w Կ͸ͱ΋͋Εςετίʔυ w ػೳ௥ՃɺϦϑΝΫλϦϯά͢Δ্ͰσάϨ͍ͯ͠ͳ͍͔Ͳ͏͔ͷ อূΛಘ͍ͨ w 1)1΍ϥΠϒϥϦͷΞοϓάϨʔυ࣌ͷ࠷௿ݶͷಈ࡞อূ w ڥք஋ͷ୯ମςετΛॻ͍ͯ҆৺ײΛಘ͍ͨ w ςετΛॻ͖΍͍͢ίʔυʹྑ͍ίʔυͱͳΔΑ͏ͳઃܭͷΧφϦ Ξతظ଴

Slide 17

Slide 17 text

ࣗಈςετͰ΍Γ͍ͨ͜ͱ w ϩʔΧϧ؀ڥɺ$*؀ڥͰςετͷ࣮ߦ 
 %PDLFS$JSDMF$* w ୯ମςετ 
 1)16OJU w "1*ςετʢ݁߹ςετʣ w ΧόϨοδूܭ

Slide 18

Slide 18 text

Ұൠతͳ"1*ςετ w Ұൠతʹ"1*ςετ͸ΫϥεϕʔεͰߦΘΕΔ͜ͱ͕ଟ͍ w ྫ͑͹-BSBWFM΍4ZNGPOZͰ͸"1*ςετ͸Ծ૝తͳϦΫΤε τʢʹͨͩͷΫϥεɾϝιουݺͼग़͠ʣͰߦ͍ͬͯΔ w ࠓճ͸ΫϥεϕʔεͰ͸ͳ͍ͷͰผͷΞϓϩʔν͕ඞཁ

Slide 19

Slide 19 text

࣮αʔόʔΛ্ཱͪ͛ͨ"1*ςετ w %PDLFSίϯςφͳ"1*αʔόʔΛ্ཱͪ͛Δ w "1*ϦΫΤετΛߦͬͯϨεϙϯεͳͲͷݕূΛߦ͏ w ίʔυΛมߋ͢Δඞཁ͕ͳ͘ɺςετͷδϨϯϚʹͳΒͳ͍ w ςετΛॻ͘ݴޠ΍ϑϨʔϜϫʔΫʹґΒͳ͍ w ࠓճ͸ίϯςΩετεΠον΍ֶशίετΛߟྀͯ͠1)16OJU Λબ୒

Slide 20

Slide 20 text

"1*ςετίʔυྫ fi nal class PhotoTest extends TestBase { public function test_Ұཡදࣔ( ) { $client = new GuzzleHttp\Client() ; $res = $client->get(self::HOST. self::PATH, []) ; $actual = json_decode($response->getBody()->getContents(), true) ; $this->assertSame( [ // ... ], $actual) ; } }

Slide 21

Slide 21 text

"1*ςετͷϞοΫ w ࣮αʔόͷ"1*ςετͰ΋ಛఆͷϞδϡʔϧΛϞοΫ͍ͨ͠ w ୯ମςετͰ͋Ε͹ϞοΫ͢ΔॲཧΛݺͼग़ͤ͹ྑ͍ w 1)17$3 $BSCPOTFU5FTU/PX VPQ[ ʜ w ͕ɺࠓճ͸ςετͱςετର৅͕ผϓϩηεʹͳ͍ͬͯΔͷͰ 1)16OJUͷϓϩηεͰϞοΫΛݺͼͩͯ͠΋ϞοΫ͕Ͱ͖ͳ͍

Slide 22

Slide 22 text

BVUP@QSFQFOE@GJMFʹΑΔϞοΫ w OHJOY΍BQBDIFͰ1)1ͷεΫϦϓτΛݺͼग़͢લʹ࣮ߦ͢Δ 1)1ͷϑΝΠϧΛࢦఆͰ͖Δ w ຊ൪Ͱ͸Մಡੑͷ؍఺Ͱ͋·Γ࢖ΘΕ͍ͯͳ͍ʢ͸ͣͷʣٕज़ w ϞοΫʹ࢖͏ؔ਺ΛαʔόʔଆͷBVUP@QSFQFOE@ fi MFʹ࢓ࠐΊ͹ ςετ༻"1*αʔόʹϦΫΤετͨ͠ͱ͖͚ͩϞοΫͰ͖Δʂ fastcgi_param PHP_VALUE "auto_prepend_ fi le=\"/path/to/ fi le\"";

Slide 23

Slide 23 text

$cassetteName = $_SERVER['HTTP_X_VCR_CASSETTE_NAME'] ; $mockTime = $_SERVER['HTTP_X_CURRENT_TIMESTAMP'] ; if ($mockTime !== '') { $time = Carbon::parse($mockTime) ; Carbon\Carbon::setTestNow($time) ; } if ($cassetteName !== '') { ini_set('opcache.enable', 0) ; \VCR\VCR::con fi gure( ) ->setCassettePath(__DIR__ . '/tests/cassette') ; \VCR\VCR::turnOn() ; \VCR\VCR::insertCassette($cassetteName) ; } ϦΫΤετϔομͰϞοΫઃఆΛऔಘ $BSCPOͰ࣌ؒΛϞοΫ 7$3Ͱ)551ϦΫΤετΛϞοΫ

Slide 24

Slide 24 text

ΧόϨοδूܭ w "1*ςετʢ&&ʣͰ΋ΧόϨοδूܭ͍ͨ͠ w ਺ࣈΛग़͢͜ͱͰςετΛॻ͘ϞνϕʔγϣϯʹͳΔ w 1)16OJUͱϓϩηε͕ҟͳΔ"1*αʔόʔͰͲ͏΍ͬͯΧόϨ οδΛूܭ͢Δʜʁ

Slide 25

Slide 25 text

BVUP@QSFQFOE@GJMFʹΑΔΧόϨοδूܭ w YEFCVHͷؔ਺Λ࢖͏ͱΧόϨοδܭଌ͕Ͱ͖Δ w औಘͨ͠ΧόϨοδσʔλΛϑΝΠϧʹอଘ w ΫϥεͷσετϥΫλͰ"1*ͷॲཧऴྃ࣌ʹಈ͔͢ 
 ʢSFHJTUFS@TIVUEPXO@GVODUJPOͰ΋0, w ςετऴྃޙɺΧόϨοδΛूܭ͠)5.-Խ w IUUQTHJUIVCDPNTFCBTUJBOCFSHNBOOQIQDPEF DPWFSBHF

Slide 26

Slide 26 text

class CoverageDumper { function __destruct( ) { $coverageName = ‘/path/to/coverage-‘ . microtime(true); xdebug_stop_code_coverage(false) ; $codecoverageData = json_encode(xdebug_get_code_coverage()) ; fi le_put_contents($coverageName . '.json', $codecoverageData) ; } } xdebug_start_code_coverage ( XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_COD E ) ; $coverageDumper = new CoverageDumper(); ΧόϨοδܭଌ։࢝ ΧόϨοδܭଌ݁ՌͷϑΝΠϧॻ͖ग़͠

Slide 27

Slide 27 text

$ fi nalCoverage = new SebastianBergmann\CodeCoverage\CodeCoverage() ; $ fi lter = $ fi nalCoverage-> fi lter() ; $ fi lter->addDirectoryToWhitelist("/path/to/dir") ; $coverages = glob('./coverage/coverage-*.json') ; foreach ($coverages as $coverageFile ) { $codecoverageData = json_decode( fi le_get_contents($coverageFile)) ; $testName = str_ireplace(basename($coverageFile,".json"),"coverage-", "") ; $ fi nalCoverage->append($codecoverageData, $testName) ; } $ fi nalCoverage->merge(include './coverage/phpunit.php') ; $report = new \SebastianBergmann\CodeCoverage\Report\Html\Facade() ; $report->process($ fi nalCoverage, 'reports'); "1*ςετͷશΧόϨοδϑΝΠϧΛूܭɾϚʔδ ୯ମςετͷΧόϨοδϑΝΠϧΛϚʔδ ΧόϨοδΛ)5.-Ͱॻ͖ग़͠

Slide 28

Slide 28 text

͋ͱ͸ςετΛॻ͍͍͚ͯͩ͘ʜʂ ʢݱࡏΧόϨοδ͘Β͍

Slide 29

Slide 29 text

ղܾํ๏̎੩తղੳಋೖ

Slide 30

Slide 30 text

1)1ͱ੩తղੳ w ੩తղੳπʔϧΛ࢖͏ͱΏΔ;Θ1)1͕੩తܕ෇͚ݴޠʹͳΔ w γϯλοΫεΤϥʔ΍λΠϙͳͲͷ୯७ͳΤϥʔΛ๷͛ΔͨΊ ಈతܕ෇͚ݴޠͷऑ఺Λ͔ͳΓิ͑Δ w ઃఆʹΑͬͯܕ෇͚ͷڧ౓Λબ୒Ͱ͖ΔͨΊಋೖ͠΍͍͢ w ΃ͪ͜Μ΍1)1FS,BJHJͰ΋͍͍ͩͨ੩తղੳͷ࿩୊͕ೖͬͯ ͖͍ͯΔ͘Β͍ʹ͸ίϞσΟςΟԽͨ͠ײ

Slide 31

Slide 31 text

1)14UBOͷಋೖ w IUUQTHJUIVCDPNQIQTUBOQIQTUBO w ੩తղੳͷ୅දతͳπʔϧͷ̍ͭ w ΧελϜϧʔϧͰಠࣗͷ੩తղੳ΋Ͱ͖Δ w ެࣜɺSEQBSUZͷFYUFOTJPO΋ॆ࣮

Slide 32

Slide 32 text

parameters : level: 0 bootstrapFiles : - %rootDir%/../../../phpstan.bootstrap.php ignoreErrors : - ’#xxxx#’ … $ php ./vendor/bin/phpstan analyse --memory-limit=-1 /path/to/dir w·ͣ͸CBTFMJOF΍ɺͬ͘͟ΓJHOPSF&SSPSTͯ͠ελʔτ wϨϕϧΛ্͍͔͛ͯ͘ϧʔϧΛݸผ௥Ճ͍͔ͯ͘͠

Slide 33

Slide 33 text

1)1%PDʹΑΔܕ৘ใͷ෇༩ w 1)14UBOY1)1%PDͰ1)1ͷόʔδϣϯʹґΒ༷ͣʑͳ৔ॴ ʹܕ͕෇༩Ͱ͖Δ w ຊମΑΓڧྗͳܕ෇͕Ͱ͖ΔʢBSSBZTIBQFɺ!UFNQMBUFʣ w ϚδοΫϝιου΋!QSPQFSUZ !NFUIPEͰղੳͰ͖Δ w ࣮ମ͸ίϝϯτͳͷͰɺڍಈΛյͣ҆͞৺ͯ͠ಋೖͰ͖Δ w 1)14UPSNͳͲͷิ׬΋ޮ͘ͷͰೖΕͨ΄͏͕ྑ͍

Slide 34

Slide 34 text

BSSBZTIBQF w ഑ྻɺ࿈૝഑ྻʹର͢ΔܕΛಋೖ͢Δ͜ͱ͕Ͱ͖Δ w ࿈૝഑ྻϔϏʔϢʔεͳΞϓϦέʔγϣϯʹ͸͔ͳΓخ͍͠ w ࿈૝഑ྻʹؔ͢ΔλΠϙΛ๷͛Δ /* * * @param array{hoge: string, fuga: boolean} $optio n * @return bool */ public static function isHoge($option) {}

Slide 35

Slide 35 text

6OEFGJOFEWBSJBCMF໰୊ͷճආํ๏ w ʢ࠶ܝʣ਌ϑΝΠϧͰఆٛͨ͠ม਺ɾؔ਺ΛࢠϑΝΠϧͰ࢖͍ͬͯΔ w ࢠϑΝΠϧΛͦͷ··ղੳͨ͠Β6OEF fi OFEWBSJBCMF 'VODUJPOOPU FYJTUTࡇΓ w ϑΝΠϧͷઌ಄ʹ1)1%PDͷม਺એݴʢ!WBSʣΛೖΕΔ͜ͱͰճආ Մೳ͕ͩɺࢠϑΝΠϧશͯʹೖΕͳ͍ͱ͍͚ͳ͍ͨΊอकੑ͕ѱ͍ w Ұ୴JHOPSF&SSPSTͰճආʢ͋Δఔ౓ͷGBMTFOFHBUJWF͸ڐ༰ʣ

Slide 36

Slide 36 text

ςετίʔυͱ੩తղੳͰ֎ງΛຒΊͨͷͰ 
 ͋ͱ͸߈Ί์୊ʂϦϑΝΫλϦϯάແ૒ʂ

Slide 37

Slide 37 text

՝୊ɿॏෳίʔυ

Slide 38

Slide 38 text

ࣄલ४උؔ਺ͷJODMVEFରࡦ w ఆٛͨؔ͠਺ϑΝΠϧΛSFRVJSF΍JODMVEFͯ͠ಡΈࠐΜͰ͍ͨ w ͦΕΒͷؔ਺ʹ͸΄ͱΜͲ໊લۭ͕ؒઃఆ͞Ε͍ͯͳ͔ͬͨ w ؔ਺ͷೋॏఆٛΛ͠ͳ͍Α͏ʹGVODUJPO@FYJTUTͰΨʔυ͍ͯͨ͠ w GVODUJPO@FYJTUT࿙ΕʹΑΔෆ۩߹΋͋ͬͨΓͨ͠ w ಡΈࠐ·Ε͍ͯΔ͔Ͳ͏͔ΛҙࣝͤͣʹJODMVEFͭͭ͠ɺؔ਺໊͕ όοςΟϯά͠ͳ͍Α͏ʹ໊લۭؒΛ࢖͍͍ͨ

Slide 39

Slide 39 text

ࣄલ४උBVUPMPBEԽ w طʹDPNQPTFS΍BVUPMPBEΛҰ෦ར༻͍ͯͨ͠ͷͰɺ BVUPMPBE͍ͯ͠Δ143ͳσΟϨΫτϦʹࡶʹTUBUJDϝιο υΛಥͬࠐΜͩ w ੩తղੳಋೖޙʹߦͬͨͷͰ҆৺ͯ͠ϦϑΝΫλϦϯά w ϦϑΝΫλϦϯάͷͱ͖ʹVTF࿙Εͱ͔Α͋͘Δʜ

Slide 40

Slide 40 text

)551ϦΫΤετͷॏෳίʔυ໰୊ w )551ϦΫΤετ͸DVSMؔ਺͕ϝΠϯͩͬͨ w DVSMؔ਺ͷϋϯυϦϯά͸೉͍͠ w DVSM@JOJU DVSM@DMPTF DVSM@JOGP DVSM@TFUPQU ʜ w ؔ਺Խʗڞ௨Խ΋΄ͱΜͲ͞Εͯͳ͔ͬͨ

Slide 41

Slide 41 text

$ch = curl_init() ; curl_setopt($ch, CURLOPT_URL, 'http://api.example.com/path') ; curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5) ; curl_setopt($ch, CURLOPT_TIMEOUT, 5) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ; curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) ; curl_setopt($ch, CURLOPT_POST, 1) ; curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ ... ])) ; $res = curl_exec($ch) ; if (!curl_errno($ch)) { $info = curl_getinfo($ch) ; if ($info['http_code'] === 200) { // ... } } curl_close($ch); DVSM@TFUPQUͷཛྷ ΤϥʔνΣοΫ͕େม DMPTF

Slide 42

Slide 42 text

(V[[MFʹΑΔ)551ϦΫΤετڞ௨Խ w IUUQTHJUIVCDPNHV[[MFHV[[MF w ௚ײతʹ)551ϦΫΤετ͕ଧͯΔ w ΤϥʔϋϯυϦϯά΋&YDFQUJPOεϩʔͳͷͰΘ͔Γ΍͍͢

Slide 43

Slide 43 text

$response = self::getClient()->post('/path', [ 'form_params' => [ ... ] , 'headers' => [ ... ] , ]) ; $body = $response->getBody() ; return json_decode($body, true); $ch = curl_init() ; curl_setopt($ch, CURLOPT_URL, 'http:// api.example.com/path') ; curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5) ; curl_setopt($ch, CURLOPT_TIMEOUT, 5) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ; curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1) ; curl_setopt($ch, CURLOPT_POST, 1) ; curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ ... ])) ; $res = curl_exec($ch) ; if (!curl_errno($ch)) { $info = curl_getinfo($ch) ; if ($info['http_code'] === 200) { // ... } } curl_close($ch);

Slide 44

Slide 44 text

՝୊ɿϩΪϯά

Slide 45

Slide 45 text

ϩΪϯάͷ՝୊ w ΄΅FSSPS@MPH ؔ਺ͰϩΪϯά͍ͯͨ͠ w ϩάϨϕϧ͕ͳ͘؂ࢹ͕೉͍͠ w ڞ௨ॲཧ΋ೖΕΒΕͳ͍ w ϚΠΫϩαʔϏεʹର͢ΔϦΫΤετ΋͋ΔͨΊ 
 ϩάʹϦΫΤετ*%ΛೖΕͯ෼ࢄτϨʔγϯά͍ͨ͠

Slide 46

Slide 46 text

.POPMPHʹΑΔϩΪϯάڞ௨Խ w IUUQTHJUIVCDPN4FMEBFLNPOPMPH w &SSPS-PH)BOEMFSΛ࢖ͬͯFSSPS@MPHʹग़ྗ͢ΔํࣜΛ౿ऻ w ੾Γ໭͠ͷ͠΍͢͞Λҙࣝ w มߋ͢Δ৔߹͸)BOEMFSΛࠩ͠ସ͑Δ͚ͩͰྑ͍ w 1SPDFTTPSΛ࢖ͬͯϦΫΤετ*%΋ϩάʹग़ྗ

Slide 47

Slide 47 text

w ࣮ࡍʹ͸͜ΕΛϥοϓͨ͠TUBUJDϝιουΛఆٛͯ͠ϩΪϯά public static function getLogger( ) { self::$logger = (new \Monolog\Logger($env)) ) ->pushHandler(new \Monolog\ErrorLogHandler() ) ->pushProcessor(function($record) { $record['extra']['uid'] = self::getRequestID() ; return $record ; }) ; return self::$logger ; }

Slide 48

Slide 48 text

<4FQ>QSPE*/'0SFRVFTUTUBSUʜ\VJEGECEGCFE^ 
 <4FQ>QSPE*/'0SFRVFTUFOEʜ\lVJEGECEGCFE^ ϩΪϯάڞ௨Խ <4FQ>SFRVFTUTUBSUʜ 
 <4FQ>SFRVFTUFOEʜ w ڞ௨Խͨ͠ͷͰΞϓϦͷࣝผࢠͳͲΛೖΕΔ͜ͱ΋ՄೳʹͳΓɺखܰ ʹτϨʔεৄࡉ౓Λௐ੔Ͱ͖ΔΑ͏ʹͳͬͨ

Slide 49

Slide 49 text

՝୊ͱվળํ๏ͷ·ͱΊ

Slide 50

Slide 50 text

͔ͳΓվળ͠·ͨ͠ w ػೳ௥ՃɺϦϑΝΫλϦϯά͕ͮ͠Β͍ɻखಈͰಈ࡞֬ೝΛ ͢Δ·Ͱਖ਼ৗʹಈ͔͘อূͰ͖ͳ͍ 
 ࣗಈςετɺ੩తղੳ w ৑௕ͳॏෳίʔυʹΑΓɺڞ௨ॲཧΛೖΕʹ͍͘ 
 BVUPMPBEԽɺద੾ͳϥΠϒϥϦಋೖɺϦϑΝΫλϦϯά w ϩάϨϕϧ͕ೖ͓ͬͯΒͣɺ؂ࢹ΍τϨʔε͕ͮ͠Β͍ 
 ϩΨʔΫϥεͷಋೖ

Slide 51

Slide 51 text

ಠࣗ'81)1ΞϓϦέʔγϣϯͷվળํ๏ w 8FCΞϓϦͰΑ͘औΓ૊·Ε͍ͯΔվળΛ΍͚ͬͨͩ w ಠࣗϑϨʔϜϫʔΫͰ΋΍Δ͜ͱ͸ͦ͜·ͰมΘΒͳ͍ w ՝୊Λਖ਼͘͠ೝࣝ͢Δ͜ͱɺϓϩμΫτɾνʔϜʹ߹ͬͨਐΊ ํͷ໛ࡧɺͦͯ͠վળ΁ͷߦಈ͕େࣄ

Slide 52

Slide 52 text

ಠࣗϑϨʔϜϫʔΫͰ΋ఘΊͳ͍Ͱʂ

Slide 53

Slide 53 text

ϓϩμΫτΛΑΓྑ͍ͯͨ͘͘͠Ίʹ

Slide 54

Slide 54 text

վળ΁Ұา౿Έग़͢ w վળɺϦϑΝΫλϦϯάʹΑΔෆ۩߹͸ා͍ w Ͱ΋΍Βͳ͍ͱ΋ͬͱμϝʹͳΔɻׂΕ૭ʹͳΔɻ w վળ΍ࣦഊΛ܁Γฦ͢͜ͱͰΤϯδχΞϦϯάྗ͕޲্͢Δ w ςετίʔυ΍ϦϑΝΫλϦϯάͨ͠ܦݧ͕ઃܭྗʹ׆͖Δ w վળͷϦεΫ؅ཧྗ΍࿹ྗͷ޲্ w ࣦഊ͸՝୊Λൃݟ͍ͯͨ͘͠Ίʹඞཁͳϓϩηε

Slide 55

Slide 55 text

ϓϩμΫτΛΑΓྑ͍ͯͨ͘͘͠Ίʹ w ϨΨγʔɺಠࣗ'8ͷ໰୊Ͱ͸ͳ͘ɺΦʔφʔγοϓͷ໰୊ʁ w ͋͑ͯࠓճϨΨγʔͱ͍͏ݴ༿Λ࢖Θͳ͔ͬͨͷ͸ɺϨΨγʔ ͱ͍͏ݴ༿ʹҧ࿨ײΛײ࢝͡Ί͍͔ͯͨΒ w ଞͷ୭͔͕ॻ͍ͨίʔυɺ୭͔͕࡞ͬͨϓϩμΫτͰ͸ͳ ͘ɺࣗ෼ୡͷϓϩμΫτͷίʔυ w ୭͕ॻ͍ͨίʔυͰ͋ͬͯ΋ΦʔφʔγοϓΛ࣋ͬͯऔΓ૊Μ Ͱߦ͖͍ͨ

Slide 56

Slide 56 text

ྑ͍ϓϩμΫτΛ࡞͍͖ͬͯ·͠ΐ͏ʂ