Slide 1

Slide 1 text

OHLZPUP"OHVMBS.FFUVQ.BS !BSNPSJL ࣮຿Ͱ࢖͏
 "OHVMBS$-*

Slide 2

Slide 2 text

BSNPSJL ˙ Ԟ໺ݡଠ࿠ ˙ גࣜձࣾϐΫηϧάϦ ο υ ˙ ϑϩϯ τΤϯ υ ɾ ΤϯδχΞ ˙ "OHVMBSίϛϡχςΟ ˙ OHLZPUP୅ද ˙ OHKBQBOελοϑ ˙ 8FC"VEJP 8FC.*%*

Slide 3

Slide 3 text

"OHVMBS$-*

Slide 4

Slide 4 text

"OHVMBS$-* ˙ "OHVMBSͷ։ൃΛࢧԉ͢ΔίϚϯυϥΠϯπʔϧ ˙ https://cli.angular.io/ ˙ npm install -g @angular/cli

Slide 5

Slide 5 text

Կ͕Ͱ͖Δͷ͔ ˙ "OHVMBSΞϓϦέʔγϣϯͷ৽ن࡞੒ ˙ package.jsonͷ࡞੒ ˙ "OHVMBSΞϓϦέʔγϣϯʹ࠷௿ݶඞཁͳґଘؔ܎ΛؚΉ ˙ ։ൃ؀ڥͷઃఆΛ࡞੒ ˙ "OHVMBS$-*ࣗ਎ͷઃఆ.angular-cli.json ˙ ςε τ༻karma.conf.js, protractor.conf.js ˙ MJOU༻tslint.json ˙ .gitignore, .editorconfig, README.mdͳͲͷࡉ͔͍ϑΝΠϧ

Slide 6

Slide 6 text

˙ "OHVMBSΞϓϦέʔγϣϯͷ৽ن࡞੒ ˙ package.jsonͷ࡞੒ ˙ "OHVMBSΞϓϦέʔγϣϯʹ࠷௿ݶඞཁͳґଘؔ܎ΛؚΉ ˙ ։ൃ؀ڥͷઃఆΛ࡞੒ ˙ "OHVMBS$-*ࣗ਎ͷઃఆ.angular-cli.json ˙ ςε τ༻karma.conf.js, protractor.conf.js ˙ MJOU༻tslint.json ˙ .gitignore, .editorconfig, README.mdͳͲͷࡉ͔͍ϑΝΠϧ Կ͕Ͱ͖Δͷ͔

Slide 7

Slide 7 text

४උͷ ʮ໘౗͘ ͍͞ʯ Λٵऩ ˙ ؀ڥߏங͸͍͍ͩͨ໘౗͘ ͍͞ ˙ େن໛ΞϓϦ ʢͱ Γ͋͑ͣສߦҎ্ͱ͢Δʣ Λ࡞ΔͳΒ͹؀ڥߏஙΛखൈ͖Ͱ͖ͳ͍ ˙ ςε τͷ४උʹ࣌ؒΛඅ΍͢ͷͰ͸ͳ͘ɺ 
 ςε τΛॻ͘ ͜ͱʹ࣌ؒΛඅ΍͍ͨ͠

Slide 8

Slide 8 text

Կ͕Ͱ͖Δͷ͔ ˙ ։ൃதͷิॿ ˙ αʔόͷىಈ ˙ ϑΝΠϧΛอଘ͢Δͱଈϒϥ΢β͕ߋ৽ ˙ ೲ඼ϑΝΠϧͷϏϧυ ˙ ৽نϑΝΠϧͷ࡞੒ ˙ $PNQPOFOU %JSFDUJWF 4FSWJDFͳͲͷ৽ن࡞੒ ˙ ಉ࣌ʹͦΕΒͷςε τϑΝΠϧ΋࡞੒

Slide 9

Slide 9 text

։ൃதͷ ʮ໘౗͘ ͍͞ʯ Λٵऩ ˙ ϑΝΠϧͷ४උ͸͍͍ͩͨ໘౗͘ ͍͞ ˙ ͜͜Λ໘౗͘ ͕ͬͯ͞ɺ ϑΝΠϧΛ࡞੒͠ͳ͍ͱ ˙ ͙͢ʹංେԽ͢Δ ˙ ద੾ͳ෼ׂͷྲྀΕΛࢭΊͯ͸͍͚ͳ͍ ˙ ςε τϑΝΠϧ͕ແ͚Ε͹ ˙ ໘౗͘ ͞ ͘ͳͬͯςε τΛॻ͔ͳ͘ͳΔ ˙ ςε τϑΝΠϧΛࣗಈੜ੒ͯ͘͠ΕΔͳΒ͹ ˙ ςε τΛॻ͖࢝ΊΔ͖͔͚ͬʹܨ͕Δ

Slide 10

Slide 10 text

໘౗͘ ͍͞ݪҼΛ௵͢

Slide 11

Slide 11 text

࣮຿෩ܠ ࣮૷ฤ

Slide 12

Slide 12 text

࣮຿JT ˙ ݱࡏɹ͸"OHVMBSY ʢࠓޙYʣ Ͱͷେن໛ΞϓϦέʔγϣϯͷҊ݅ʹઃܭ͔ΒࢀՃ ˙ େن໛ͱ͸ ˙ ݱ࣌఺Ͱ$PNQPOFOU4FSWJDF਺͕௒ ˙ ඞཁͳཁ݅Λ͢΂࣮ͯ૷ͨ͠Β͓ͦΒ͘਺ඦ ˙ ߦ਺ϕʔεͰສʙສߦลΓʹͳΔͱ༧૝ ˙ ༨ஊ͕ͩ$234ΞʔΩςΫνϟͰઃܭ

Slide 13

Slide 13 text

৽͍͠ը໘Λ࣮૷͢Δγʔϯ ˙ "ཁ݅Λ࣮૷͠ऴΘͬͨͷͰ#ཁ݅Λ࡞Δ ˙ ʮ'/b'ͷϧʔςΟ ϯάͰBbbComponentΛද͍ࣔͨ͠ʯ ˙ ng g component bbb ˙ ʮͰ΋৽͍͠ը໘Λ࡞ΔͳΒηο τͰBbbService΋ඞཁʹͳΔΜͩΑͶʯ ˙ ng g service bbb ˙ BbbComponentʹBbbServiceΛ%*ͯ͠ʜ

Slide 14

Slide 14 text

৽͍͠ը໘Λ࣮૷͢Δγʔϯ ˙ "ཁ݅Λ࣮૷͠ऴΘͬͨͷͰ#ཁ݅Λ࡞Δ ˙ ʮ'/b'ͷϧʔςΟ ϯάͰBbbComponentΛද͍ࣔͨ͠ʯ ˙ ng g component bbb ˙ ʮͰ΋৽͍͠ը໘Λ࡞ΔͳΒηο τͰBbbService΋ඞཁʹͳΔΜͩΑͶʯ ˙ ng g service bbb ˙ BbbComponentʹBbbServiceΛ%*ͯ͠ʜ ˙ ݁ہख࡞ۀ͕ଟ͍ ʂ ʂ

Slide 15

Slide 15 text

৽͍͠)551௨৴༻αʔϏεΛ࡞Δγʔϯ ˙ #ཁ݅Ͱ͸/endpoint/bbbͱ͍͏αʔόͷΤϯυϙΠϯ τΛୟ͔ͳ͍ͱ͍͚ͳ͍ ˙ ʮBbbApiServiceΛ࣮૷͠ͳ͖Όʯ ˙ ng g service bbb-api ˙ ʮͰ΋ΤϯυϙΠϯ τʹ͸ڞ௨ͷϦΫΤε τϔομΛ෇༩͢Δॲཧ΋ඞཁ͔ͩΒ
 AaaApiServiceͱಉ͡Α ͏ʹ࡞Βͳ͖ΌͶʯ

Slide 16

Slide 16 text

৽͍͠)551௨৴༻αʔϏεΛ࡞Δγʔϯ ˙ #ཁ݅Ͱ͸/endpoint/bbbͱ͍͏αʔόͷΤϯυϙΠϯ τΛୟ͔ͳ͍ͱ͍͚ͳ͍ ˙ ʮBbbApiServiceΛ࣮૷͠ͳ͖Όʯ ˙ ng g service bbb-api ˙ ʮͰ΋ΤϯυϙΠϯ τʹ͸ڞ௨ͷϦΫΤε τϔομΛ෇༩͢Δॲཧ΋ඞཁ͔ͩΒ
 AaaApiServiceͱಉ͡Α ͏ʹ࡞Βͳ͖ΌͶʯ ˙ ݁ہίϐϖ ʂ ʂ

Slide 17

Slide 17 text

໘౗͘ ͍͞ݪҼΛ௵͢

Slide 18

Slide 18 text

#MVFQSJOUT ˙ "OHVMBS$-*͕ੜ੒͢ΔϑΝΠϧͷݩʕ਽ܗ͸Ͳ͜ʹ͋Δͷ͔ ˙ ͜ͷ਽ܗͷ͜ͱΛ#MVFQSJOUTͱݺͿ ˙ #MVFQSJOUT͸ҎԼʹ֨ೲ͞Ε͍ͯΔ ˙ ./node_modules/@angular/cli/blueprints ˙ component, service ͳͲͷσΟ ϨΫ τ Ϧ໊͕
 ng g component, ng g service ͳͲͷίϚϯυʹରԠ ˙ ͜ͷ#MVFQSJOUTΛมߋ ɾ ௥Ճ͢Ε͹Α͍ ˙ Ͱ΋ɺ Ͳ͏΍ͬͯ ʁ

Slide 19

Slide 19 text

%FWFMPQNFOU)JOUTGPSIBDLJOHPO"OHVMBS$-* ˙ ࣮͸ ʢੵۃతͰ΋ͳͦ͞͏͕ͩʣ ެࣜͰΞφ΢ϯε͍ͯ͠Δ ˙ https://github.com/angular/angular-cli/tree/v1.0.0-rc. 2#development-hints-for-hacking-on-angular-cli ˙ ཁ͸"OHVMBS$-*ΛGPSLɺ ·ͨ͸HJUDMPOFOQNMJOLͯ͠ɺ ͦ͜ͷத਎Λ
 ॻ͖׵͑ͯ͘Εͱ͍͏ Ξφ΢ϯε ˙ https://github.com/angular/angular-cli/issues/3549
 https://github.com/angular/angular-cli/issues/4302 ˙ ެࣜ͸কདྷతʹ͸֦ுػೳΛ࠾༻͍ͨ͠ɺ ͱ͍ͯ͠Δ ˙ ͿͬͪΌ͚./node_modules/@angular/cli/blueprintsΛ
 ௚઀ॻ͖׵͑ͯ΋ಈ͘ ʢඇਪ঑ʣ

Slide 20

Slide 20 text

#MVFQSJOUTΛॻ͖׵͑ͯΈΑ ͏ ˙ "OHVMBS$-*ͷϕʔε͸&NCFS$-* ˙ https://ember-cli.com/extending/ ˙ Θ͔ͣʹ"OHVMBS$-*༻ʹνϡʔχϯά͞Ε͍ͯΔ͕
 େମ&NCFS$-*޲͚ͷ஌͕ࣝ͋Ε͹࡞ΕΔ ˙ astUtils.addProviderToModule(), dynamicPathParser
 ͱ͍ͬͨॲཧ͕"OHVMBS$-*޲͚ʹ௥Ճ͞Ε͍ͯΔ ˙ ਽ܗʹม਺ΛׂΓ౰ͯͯϑΝΠϧΛੜ੒͢Δ͚ͩͰͳ͘
 NgModuleͰͷimportߦͷ௥Ճ΋ߦ͑Δ ʢTFSWJDF͕͍͍ྫʣ

Slide 21

Slide 21 text

#MVFQSJOUTΛॻ͖׵͑Δ஫ҙ఺ ˙ ඞཁ࠷௿ݶͷվมʹཹΊΔ ˙ ͳΜ͔ڽͬͨ͜ͱΛ΍Ζ͏ ͱ͠ͳ͍ ˙ ެࣜͷίʔσΟ ϯά ɾ ελΠϧʹଇͬͯॻ͍͓ͯ͘΂͖ ˙ ͲͪΒ΋ࣗલ#MVFQSJOUTͷ෗ഊ๷ࢭࡦ ˙ ެࣜଆͷ#MVFQSJOUTߋ৽ʹஔ͍͍͔ͯΕΔͱ෗Δ ˙ ͜ͷลͷϝϯςίε τͱ#MVFQSJOUTΛࣗ࡞ͨ݁͠Ռͷ࡞ۀޮ཰Λఱṝʹ ˙ ࠓ΍ͬͯΔҊ݅ͩͱϖΠ͢ΔͷͰࣗ࡞ͨ͠

Slide 22

Slide 22 text

࣮຿෩ܠ ϨϏϡʔฤ

Slide 23

Slide 23 text

ίʔ υ ϨϏϡʔΛཔΉγʔϯ ˙ ʮϨϏϡʔ͓ͳ͠Ό͢ʯ ˙ ʮͲΕͲΕʜ໰୊ͳͦ͞͏ͩͳɺ Ϛʔδ͠·ͨ͠ʯ ˙ ޙ೔ ˙ ʮ͋ͬɺ ͜͜ϨϏϡʔͷͱ͖͸ݟಀͯͨ͠ɻ ͜ͷॻ͖ํ͸Α ͘ͳ͍ʯ ˙ ϨϏϡʔͰݟಀ͞ͳ͍ͷ͕Ұ൪͚ͩͲʜ ˙ ਓ͕ؒҰߦҰߦɺ ͜ͱࡉ͔ʹϨϏϡʔ͢Δͷ͸͠ΜͲ͍

Slide 24

Slide 24 text

ίʔ υ ϨϏϡʔΛཔΉγʔϯ ˙ ʮϨϏϡʔ͓ͳ͠Ό͢ʯ ˙ ʮͲΕͲΕʜ໰୊ͳͦ͞͏ͩͳɺ Ϛʔδ͠·ͨ͠ʯ ˙ ޙ೔ ˙ ʮ͋ͬɺ ͜͜ϨϏϡʔͷͱ͖͸ݟಀͯͨ͠ɻ ͜ͷॻ͖ํ͸Α ͘ͳ͍ʯ ˙ ϨϏϡʔͰݟಀ͞ͳ͍ͷ͕Ұ൪͚ͩͲʜ ˙ ਓ͕ؒҰߦҰߦɺ ͜ͱࡉ͔ʹϨϏϡʔ͢Δͷ͸͠ΜͲ͍ ˙ ͦΕ"OHVMBS$-*ͰͰ͖ΔΑ ʂ ʂ

Slide 25

Slide 25 text

"OHVMBS$-*ͷMJOU ˙ "OHVMBS$-*Ͱ͸MJOU؀ڥΛࣗಈੜ੒͢Δ ˙ ࣮ߦ͸ng lintΛୟ͚ͩ͘ ˙ ςε τͱ࣮૷ͰҟͳΔMJOU؀ڥΛద༻͢Δ͜ͱ΋Ͱ͖Δ ˙ ઃఆ͸angular-cli.jsonͷlintʹॻ͘ ˙ ϕʔε͸tslint ˙ https://palantir.github.io/tslint/

Slide 26

Slide 26 text

$PEFMZ[FS ˙ "OHVMBS༻ʹ֦ு͞ΕͨUTMJOUϧʔϧू ˙ https://github.com/mgechev/codelyzer ˙ ྫ͑͹͜Μͳϧʔϧ ˙ @ComponentͷinputͰ͸ͳ͘@Input()Λ࢖͏ Α ͏ڧ੍͢Δϧʔϧ ˙ UTͰ͸ͳ͘ ςϯϓϨʔ τͷ)5.-Λݕূͯ͘͠ΕΔϧʔϧ ˙ @Component͕෇͘DMBTT໊͸*Componentͱ͠ͳ͚Ε͹ͳΒͳ͍ϧʔϧ ˙ ֤ϧʔϧͷ࣮૷͸ͲΕ΋୹͍ͷͰಡΜͰΈΔͱ໘ന͍

Slide 27

Slide 27 text

ࣗ࡞ϧʔϧ ˙ $PEFMZ[FS͕࡞ΒΕͨͱ͍͏ ͜ͱ͸ ˙ ϧʔϧ͸ࣗ࡞Ͱ͖·͢ ˙ UTMJOUͷϧʔϧ͸ΨόΨόͩͱ͓୰͖ͷ͋ͳͨ

Slide 28

Slide 28 text

ࣗ࡞ϧʔϧ ˙ $PEFMZ[FS͕࡞ΒΕͨͱ͍͏ ͜ͱ͸ ˙ ϧʔϧ͸ࣗ࡞Ͱ͖·͢ ˙ UTMJOUͷϧʔϧ͸ΨόΨόͩͱ͓୰͖ͷ͋ͳͨ ˙ ϧʔϧ͸ࣗ࡞Ͱ͖·͢ ʂ ʂ

Slide 29

Slide 29 text

˙ ߏจղੳΛඞཁͱ͢ΔҎ্"45 "CTUSBDU4ZOUBY5SFF ͷ஌͕ࣝඞཁ ˙ "45FYQMPSFS͕͋Δ͔Βා͘ͳ͍ ˙ https://astexplorer.net/ ˙ 54-JOU$VTUPN3VMFT ˙ https://palantir.github.io/tslint/develop/custom- rules/ ˙ ͜͜ΛಡΊ͹54-JOUʹ͓͚Δϧʔϧ࡞੒ํ๏͕෼͔Δ ˙ SyntaxWalker͕ΊͪΌ͘ ͪΌ༏लͳͷͰࣗ࡞ϧʔϧΛ࡞Δͱ͖͸
 ࠷খݶͷWBMJEBUJPO࣮૷ͰࡁΉ ϧʔϧͷ࡞Γํ

Slide 30

Slide 30 text

˙ ͍͔ͭࣗ͘࡞ͯ͠Έͨ ˙ AbstractFooServiceΛܧঝ͍ͯ͠ΔΫϥεʹݶΓ
 PromiseΛฦ͢ϝ ιο υͷ໋໊͸ඞͣ*AsPromise()ʹ͠ͳ͚Ε͹ͳΒͳ͍ ˙ ܕ͕ChangeDetectorRefͷม਺໊͸ඞͣcdRefʹ͠ͳ͚Ε͹ͳΒͳ͍ ˙ windowΛ࢖͍ͬͯͨΒඞͣWindowRef.nativeWindowΛ࢖͏ Α ͏ܯࠂ ˙ ͳͲ ˙ Ҋ݅ͷ୲౰ΤϯδχΞ͕ෳ਺໊ͱ͍͏ن໛ͳͷͰɺ ίʔσΟ ϯάελΠϧͷ8JLJΛ
 อक͢Δ͘ Β͍ͳΒࣗ࡞ϧʔϧΛอकͨ͠ํׂ͕ʹ߹͏ ͱ൑அ ˙ ਓ͕ؒϨϏϡʔͰۤ࿑͢Δͷ΍ΊΑ ͏ ۀ຿Ͱͷࣗ࡞ϧʔϧྫ

Slide 31

Slide 31 text

࣮຿෩ܠ ςε τฤ

Slide 32

Slide 32 text

ςε τΛॻ͍͍ͯΔγʔϯ ˙ ʮ݁߹ςε τͰೖྗ͔ΒΤϯυϙΠϯ τ·ͰΛࢼݧͯ͠Δ͚Ͳɺ 
 ໢ཏͰ͖ͯΔ͔ෆ҆ͩʯ ˙ ʮͦΕͳΒɺ ςε τ࣮ߦ࣌ʹΧόϨοδΛ༗ޮʹ͢Δͱ͍͍Α ʂ ʯ

Slide 33

Slide 33 text

ΧόϨοδ ˙ "OHVMBS$-*͸ΧόϨοδऔಘ·Ͱαϙʔ τ͍ͯ͠Δ ˙ *TUBOCVM ˙ https://github.com/gotwarlost/istanbul ˙ ng test --single-run --code-coverage ˙ ͜ͷͱ͖ʹ࣮ߦ͞Εͨςε τͷΧόϨοδ ɾ Ϩϙʔ τ͕ग़ྗ͞ΕΔ

Slide 34

Slide 34 text

$*Λճ͢γʔϯ ˙ $JSDMF$*઒ΛோΊΔΤϯδχΞ ˙ ʮ͋ʔɺ ςε τམͪͨɻ ੺͘ͳͬͯΔʯ ˙ ʮͲΕͲΕ ʁ ʯ

Slide 35

Slide 35 text

$*Λճ͢γʔϯ ͳΜ͔େྔͷϩά ʂ ʂ

Slide 36

Slide 36 text

"OHVMBS$-*ͷΦϓγϣϯΛ׆༻͠Α ͏ ˙ $*্ͳͲͰ͸ɺ ϓϩάϨεදࣔΛͦͷ··ग़ྗͯ͠͠·͍ಡΈʹ͍͘ ˙ ΦϓγϣϯͰ໧ΒͤΔ ˙ ྫ͑͹ςε τͩͱ ˙ ng test --single-run --progress false --reporters dots ˙ ϩά͕εοΩ Ϧ ˙ ςε τͷਐḿදࣔ΋ͬ͘͟ ΓΧο τ ˙ ͜͏͍͏ Φϓγϣϯ͕͠͹͠͹༻ҙ͞Ε͍ͯΔ

Slide 37

Slide 37 text

༻ҙ͞ΕͨΦϓγϣϯΛͲ͏΍ͬͯ֬ೝ͢Δ͔ ˙ "OHVMBS$-*νʔ τγʔ τ ˙ http://qiita.com/armorik83/items/5ad850b78e5893d41570 ˙ $-*্Ͱ֬ೝ͢Δํ๏ ˙ ng help ˙ ൒෼͘ Β͍͸͜͜Ͱ෼͔Δ ˙ ࣮૷ΛಡΜͩ΄͏͕ૣ͍ ˙ ྫ͑͹ng g componentͷΦϓγϣϯ͸͜͜ʹ͋Δ
 https://github.com/angular/angular-cli/blob/v1.0.0-rc.2/packages/%40angular/cli/blueprints/component/index.ts#L40-L105 ˙ ng build΍ng serveͳͲͷίϚϯυ͸͜͜
 https://github.com/angular/angular-cli/blob/v1.0.0-rc.2/packages/%40angular/cli/addon/index.js#L13-L37

Slide 38

Slide 38 text

࣮຿෩ܠ ೲ඼ฤ

Slide 39

Slide 39 text

͊͞ೲ඼ͩ ˙ ݱҊ݅Ͱ͸ɺ ఆظతʹਐḿΛೲ඼͢Δ࢓૊Έʹͳ͍ͬͯΔ ˙ CSBODIنଇ ˙ NBTUFS ˙ ೲ඼͢ΔલʹEFWFMPQΛNFSHFͯ͠5BH෇͚ ˙ EFWFMPQ ˙ ϝΠϯͷCSBODI ˙ UPQJDJTTVFOO IPUGJYJTTVFOO ˙ *TTVF୲౰ऀ͕ਵ࣌࡞੒

Slide 40

Slide 40 text

"OHVMBS$-*Ͱೲ඼෺ΛϏϧ υ ˙ npm run buildͷ಺༰Λ࣍ͷΑ ͏ʹ͍ͯ͠Δ ˙ ng build --aot -e prod --progress false ˙ "P5$PNQJMFΛ࣮ࢪ ˙ environmentΛproductionʹઃఆ ˙ $*Ͱͷϩά͕൥͘ͳΒͳ͍Α ͏ରࡦ

Slide 41

Slide 41 text

"P5$PNQJMF ˙ "IFBEPG5JNF$PNQJMF ʢࣄલίϯύΠϧʣ ˙ "OHVMBSͷςϯϓϨʔ τ)5.-ʹؚ·ΕΔಛघͳߏจΛࣄલʹ͢΂ͯύʔε ˙ )5.-Λ࢒ͣ͞ʹશͯ+BWB4DSJQUιʔείʔ υͱͯ͠ग़ྗ ˙ ΞϓϦέʔγϣϯ࣮ߦ࣌ͷϥϯλΠϜ ɾ ύʔεͷෛՙΛ࡟ݮͰ͖Δ ˙ ೲ඼෺΍σϓϩΠ಺༰ʹ͸"P5Λద༻ͨ͠ํ͕͍͍

Slide 42

Slide 42 text

։ൃ࣌ͷޮ཰ͷྑ͍ίϯύΠϧ ˙ "P5ͷରٛޠ͸+*5 +VTU*O5JNF$PNQJMF ˙ ng serveΛ࣮ߦͯ͠։ൃΛਐΊΔͱ͖ ˙ ng serve --aotͱ͢ΔͱϏϧυʹֻ͕͔࣌ؒΔͷͰΦεεϝ͠ͳ͍ ˙ --aotΛ࣮ߦ͠ͳ͍ͱݕ஌Ͱ͖ͳ͍ίϯύΠϧΤϥʔ΋͋ΔͷͰ
 $*Ͱ͸ඞͣ--aotΛ࣮ߦ͓ͤͯ͘͞

Slide 43

Slide 43 text

$-*؀ڥ֦ுͷੋඇ

Slide 44

Slide 44 text

˙ ౰વ͚ͩͲɺ ςε τ΋#MVFQSJOUT΋ࣗ࡞ϧʔϧ΋ɺ ϓϩάϥϜͰ͋ΔҎ্෗Δ ˙ ඞཁ࠷খݶͷ಺༰Λγϯϓϧʹ࣮૷ ˙ ެࣜͷ࣮૷ʹࣅͤͨॻ͖ํ ˙ ͜ΕΒ͕कΕͳ͍Α ͏ͳΒෛ࠴Խ͢Δ ˙ ΍ΔͳΒ͹อकΛ৫ΓࠐΜͰݕ౼͢΂͖ ˙ ϓϩμΫ τͱҧࣺͬͯܿͯ͘Δ͜ͱ΋ؚΉ ࣗ࡞ͷෛ࠴Խ

Slide 45

Slide 45 text

˙ ͜ΕΒΛࣗ࡞͢Δ͜ͱͰզʑ͸ԿΛಘΒΕΔ͔ ʁ ˙ ຬ଍ΛಘΔ͚ͩͳΒ΍Ίͨ΄͏͕͍͍ ˙ खஈͷ໨తԽ͸͢Δͳ ˙ ࠷ॳʹ͔ͬ͠ΓΞϓϦέʔγϣϯશମΛઃܭ ˙ ࢼߦࡨޡ΋ܦͯඞཁͳ΋ͷ͕ݟ͔͑ͯΒ෦඼Խ͢Δͷ͕Α͍ Ͳ͏͍͏ ͱ͖ʹ΍Δ͔

Slide 46

Slide 46 text

એ఻

Slide 47

Slide 47 text

$PEF(SJE ˙ ࣥචਞ͸ݱ໾ͷϑϩϯ τΤϯυ ɾ ΤϯδχΞ ˙ جૅ͔Β࠷৽τ Ϩϯυٕज़·Ͱ ˙ ϓϩͱͯ͠ͷ࢓ࣄͷ࣭΋޲্ͤ͞Δ৘ใ ˙ ಡΈ͍ͨͱ͖ʹ͙͢ಡΊΔ ֹ݄ԁ ʢ੫ൈʣ 
 ΫϨδο τΧʔ υɺ 1BZ1BMࢧ෷͍ͳΒ೔ؒແྉ IUUQTXXXDPEFHSJEOFU

Slide 48

Slide 48 text

OHKBQBO IUUQOHKBQBOPSH

Slide 49

Slide 49 text

+PJOOHKBQBOPO4MBDL IUUQTOHKBQBOJOWJUFIFSPLVBQQDPN

Slide 50

Slide 50 text

5IBOLZPV $ ng make-this-awesome