Slide 1

Slide 1 text

karmaΛ࢖ͬͨSPA޲͚ E2Eςετٕ๏

Slide 2

Slide 2 text

ࣗݾ঺հ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ɾ@kyo_ago ɾChatworkͷதͷਓ ɾझຯ͸Local Proxy੡࡞ ɾUnder30͡Όͳ͍ΤϯδχΞ ɾਪ͠API͸Application Cache

Slide 3

Slide 3 text

·ͣ͸ँࡑ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 4

Slide 4 text

ࠓճ௨Γ͕͍͍ͱࢥͬͯʮ&&ςετʯͬͯݴͬͯ·͕͢ *OUFHSBUJPOςετͬͯݴ͏ํ͕ਖ਼֬ͩͬͨΓ͠·͢ɻ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 5

Slide 5 text

ࠓճ఻͍͑ͨ͜ͱ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 6

Slide 6 text

41"ͷςετʹ 8FC%SJWFS͸޲͔ͳ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 7

Slide 7 text

8FC%SJWFSͱ͸ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 8

Slide 8 text

4FMFOJVN͔Βൃలͨ͠πʔϧ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 9

Slide 9 text

ϒϥ΢β͝ͱͷυϥΠόͱ ͦͷυϥΠόͱ௨৴͢Δ"1* LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 10

Slide 10 text

LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ChromeDriver FirefoxDriver IEDriver SafariDriver JSON Wire Protocol

Slide 11

Slide 11 text

"1*ʹରԠͨ͠ΫϥΠΞϯτΛ ࢖͏͜ͱͰ൚༻తͳςετ͕Ͱ ͖Δ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 12

Slide 12 text

ྺ࢙͋Δ&&ςετͷ మ൘πʔϧ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ 2004೥։ൃ։࢝

Slide 13

Slide 13 text

Ͱ͸ͳͥʮ41"ͷςετʹ 8FC%SJWFS͸޲͔ͳ͍ʯͷ͔ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 14

Slide 14 text

8FC%SJWFS͸͋͘·Ͱ΋ը໘ ΛભҠ͍ͯ͘͠ʮ8FCαΠτʯ ͷͨΊͷςετπʔϧ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 15

Slide 15 text

41"޲͚ͷςετπʔϧͰ͸ͳ ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 16

Slide 16 text

41"Λ8FC%SJWFSͰςετ͢ Δͷ͸೉͍͠ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 17

Slide 17 text

8FC%SJWFS͸௨ৗͷ։ൃπʔ ϧͱ͸ҧ͏֓೦Ͱಈ͘ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 18

Slide 18 text

LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ChromeDriver FirefoxDriver IEDriver SafariDriver JSON Wire Protocol ಠࣗϓϩτίϧͷੈք

Slide 19

Slide 19 text

௨ৗͷ։ൃϑϩʔͱͷ ࠩҟ͕େ͖͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 20

Slide 20 text

ྫ͑͹ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 21

Slide 21 text

/PEFDPOUFYUͱ #SPXTFSDPOUFYUͷ෼அ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ Electron͕ղܾ͔ͨͬͨ͠΍ͭ

Slide 22

Slide 22 text

let webdriver = require('selenium-webdriver');
 
 let driver = new webdriver.Builder()
 .forBrowser('chrome')
 .build();
 
 driver.executeScript('return 2').then((res) => {
 console.log('returned ', res);
 });
 
 driver.get('https://www.google.co.jp/').then(() => {
 driver.quit();
 }); LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ͚ͩ͜͜#SPXTFSDPOUFYU

Slide 23

Slide 23 text

%FWFMPQQFS5PPMTͱڝ߹ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ DriverʹΑͬͯ͸

Slide 24

Slide 24 text

DPOTPMFMPHͷ಺༰͕UFSNJOBM Ͱ͔֬͠ೝͰ͖ͳ͍ ʢ0CKFDUల։ͱ͔ग़དྷͳ͍ʣ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 25

Slide 25 text

OPEFJOEFYKT UIFOBCMF8FC%SJWFS1SPYZ\ qPX@ $POUSPM'MPX\ QSPQBHBUF6OIBOEMFE3FKFDUJPOT@USVF BDUJWF2VFVF@ 5BTL2VFVF\ OBNF@5BTL2VFVF qPX@<$JSDVMBS> UBTLT@<0CKFDU> JOUFSSVQUT@OVMM QFOEJOH@OVMM TVC2@OVMM LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ͜Ε͕ਏ͍ʂ

Slide 26

Slide 26 text

ը໘ΛભҠ͍ͯ͘͠ʮ8FCα ΠτʯͰ͋Ε͹ͦΕ΄Ͳ໰୊ͳ ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 27

Slide 27 text

41"ͷ৔߹ɺ͜ΕΒͷπʔϧ͕ ࢖͑ͳ͍ͷ͸ඇৗʹ೉͍͠ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 28

Slide 28 text

·ͨɺ8FC%SJWFS͸ϖʔδͷ ಡΈࠐΈ΍ΫϦοΫޙͷભҠΛ ࣗಈͰ଴ͭػೳ͕͋Δ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 29

Slide 29 text

var webdriver = require('selenium-webdriver'),
 By = webdriver.By,
 until = webdriver.until;
 
 var driver = new webdriver.Builder()
 .forBrowser('firefox')
 .build();
 driver.get('http://www.google.com/');
 driver.findElement(By.name(‘q')).sendKeys('webdriver');
 driver.findElement(By.name('btnG')).click();
 driver.wait(until.titleIs('webdriver - Google Search'), 1000);
 driver.quit(); LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ଴ͬͯ͘ΕΔ

Slide 30

Slide 30 text

͕ɺ41"Ͱ͸௨ৗ͜ΕΒͷػೳ ͸࢖༻͠ͳ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 31

Slide 31 text

ͦ͜Ͱ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 32

Slide 32 text

41"ͷ*OUFHSBUJPOςετʹ͸ ,BSNB LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 33

Slide 33 text

,BSNB LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 34

Slide 34 text

ɾɾɾͬͯ͠·͢ʁ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 35

Slide 35 text

ࣾ಺Ͱฉ͍ͯΈͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 36

Slide 36 text

ʮLBSNBͷ࿩͢ΔΜͰ͢Αʯ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 37

Slide 37 text

ʮ͋Εɺ"OHVMBS+4ઐ༻Ͱ͢Α Ͷʁʯ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 38

Slide 38 text

ʮ·ͩ͋ͬͨΜͰ͔͢ʁʯ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 39

Slide 39 text

ʮ1SPUSBDUPSʹͳͬͨͱࢥͬ ͯ·ͨ͠ʯ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 40

Slide 40 text

ɾɾɾ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 41

Slide 41 text

΋ͱ΋ͱ"OHVMBS+4ͷςετ༻ ʹ։ൃ͞Εͨςετπʔϧ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 42

Slide 42 text

ݱࡏ͸ී௨ʹ൚༻తͳπʔϧ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ʢͱݴ͏͔Ή͠ΖAngularͱͷ૬ੑྑ͘ͳ͍Α͏ͳɻɻɻʣ

Slide 43

Slide 43 text

·ͩ·ͩ։ൃ͸׆ൃ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ʢ5೔લʹver 1.5.0ެ։ʣ

Slide 44

Slide 44 text

1SPUSBDUPSͱ͸ҧ͏ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ʢProtractor͸WebDriverܥʣ

Slide 45

Slide 45 text

ͬ͘͟Γ͍͏ͱ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 46

Slide 46 text

ϒϥ΢β্Ͱಈ͘ 6OJUςετϥϯφʔ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 47

Slide 47 text

describe('Assert', () => {
 it('should true', () => {
 expect(true).toEqual(true);
 });
 }); LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ͜Ε͕ϒϥ΢β্Ͱಈ͘

Slide 48

Slide 48 text

ࠓճ͸7FSͰ௥Ճ͞Εͨ ػೳΛ࢖ͬͯ*OUFHSBUJPOςε τͷ࢓ํΛ঺հ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 49

Slide 49 text

DVTUPN$POUFYU'JMF LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 50

Slide 50 text

ςετΛࢦఆ͞ΕͨIUNM্Ͱ ߦ͏ػೳ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 51

Slide 51 text


 
 
 
 
 %CLIENT_CONFIG%
 window.__karma__.setupContext(window);
 %MAPPINGS%
 
 %SCRIPTS%
 Inside Frontend
 
 
 
 window.__karma__.loaded();
 
 
 LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ͜͜ʹLBSNBDPOGKTͷ'JMF͕ల։͞ΕΔ ͔͜͜Β࣮ߦΛ։࢝

Slide 52

Slide 52 text

·ΔͰαΠτ্Ͱ6OJUUFTUΛ ૸Β͍ͤͯΔ͔ͷΑ͏ʹॻ͚Δ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 53

Slide 53 text

describe('Document title', () => {
 it('should be', () => {
 expect(document.title).toEqual('Inside Frontend');
 });
 }); LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 54

Slide 54 text

Β͍͘ʂ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 55

Slide 55 text

͔͠͠ɻɻɻ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 56

Slide 56 text

DVTUPN$POUFYU'JMFʹ΋ ෺଍Γͳ͞͸͋Δ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 57

Slide 57 text

෺଍Γͳ͞ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 58

Slide 58 text

ಡΈࠐΈ৔ॴ͕MPDBMIPTU LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 59

Slide 59 text

LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ෺଍Γͳ͞

Slide 60

Slide 60 text

࣮ࡍςετ͍ͨ͠υϝΠϯͰಡ Έࠐ·ΕΔΘ͚Ͱ͸ͳ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 61

Slide 61 text

LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ͜͏͍ͨ͠

Slide 62

Slide 62 text

ௐ΂ͯΈͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 63

Slide 63 text

ɻɻɻͪΐͬͱແཧͬΆ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 64

Slide 64 text

LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ͜͏͢Δ

Slide 65

Slide 65 text

໰୊ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 66

Slide 66 text

ผυϝΠϯ௨৴ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 67

Slide 67 text

ϒϥ΢βΛͩ·͢ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 68

Slide 68 text

खॱ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 69

Slide 69 text

௨৴ͷॻ͖׵͑ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 70

Slide 70 text

-PDBMQSPYZΛ࢖͏ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 71

Slide 71 text

$ npm install --save-dev karma-proxy-plugin LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 72

Slide 72 text

customContextFile: "custom-context-file.html",
 proxyValidateSSL: false,
 client: { clearContext: false },
 middleware: ['proxy'],
 proxy: {
 '/inside-frontend/': {
 'target': 'http://inside-frontend.com/',
 'changeOrigin': true
 }
 }, proxyReq: (proxyReq, req, res, options) => {
 },
 proxyRes: (proxyRes) => {
 }, LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ LBSNBDPOGKT 44-1SPYZ࣌ͷূ໌ॻΤϥʔΛແࢹ ςετ࣮ߦ͝ͱʹ؀ڥΛΫϦΞ͠ͳ͍ LBSNBQSPYZQMVHJO࢖༻ LBSNBඪ४ͷQSPYJFTͰͳ͍͜ͱʹ஫ҙ ૹ৴Πϕϯτ ड৴Πϕϯτ

Slide 73

Slide 73 text

JOTJEFGSPOUFOE΁ͷ௨৴Λ IUUQJOTJEFGSPOUFOEDPN ΁సૹ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 74

Slide 74 text

௨৴ͷ޲͖ઌͷมߋ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 75

Slide 75 text

IUNM΍+4಺ͷ௨৴ͷ޲͖ઌΛ JOTJEFGSPOUFOEʹ޲͚͍ͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ 1Ͱ͸Proxyϓϩηε্ཱ͕͕͚ͪͬͨͩͰɺ ϒϥ΢βͷProxyઃఆΛߦͬͨΘ͚Ͱ͸ͳ͍

Slide 76

Slide 76 text

let base = document.createElement('base');
 base.href = '/example/';
 document.head.insertAdjacentElement('afterbegin', base); LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ DVTUPNDPOUFYUpMFIUNM

Slide 77

Slide 77 text

XMLHttpRequest = () => {/* … */};
 fetch = () => {/* … */}; LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ DVTUPNDPOUFYUpMFIUNM

Slide 78

Slide 78 text

؆୯ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 79

Slide 79 text

ଞʹ͍Ζ͍Ζ͍ͨ͠৔߹ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 80

Slide 80 text

3FGFSFSΛॻ͖׵͍͑ͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 81

Slide 81 text

proxyReq: (proxyReq, req, res, options) => {
 proxyReq.setHeader('Referer', 'https://example.com/');
 }, LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ LBSNBDPOGKT

Slide 82

Slide 82 text

$PPLJFΛॻ͖׵͍͑ͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 83

Slide 83 text

proxyRes: (proxyRes) => {
 if (proxyRes.headers['set-cookie']) {
 proxyRes.headers['set-cookie'] = proxyRes.headers['set-cookie'].map((cookie) => {
 // karma಺͸httpͳͷͰsecureΛফ͢
 return cookie.replace(/\s*secure;?/i, '');
 })
 }
 }, LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ LBSNBDPOGKT

Slide 84

Slide 84 text

ϦμΠϨΫτઌΛมߋ͍ͨ͠ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 85

Slide 85 text

proxyRes: (proxyRes) => {
 if (proxyRes.headers['location']) {
 // ϦμΠϨΫτઌΛมߋ
 proxyRes.headers['location'] = proxyRes.headers['location'].replace(/^https:\/\/ example.com/i, '/example/');
 }
 }, LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ LBSNBDPOGKT

Slide 86

Slide 86 text

ϩάΠϯ͍ͨ͠ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 87

Slide 87 text

fetch('/example/login', {
 method: 'POST',
 body: new FormData(document.getElementById('#login'))
 }).then((response) => response.text()).then((text) => {
 // ϨεϙϯεʹToken͕͋Ε͹ม਺ʹอଘ
 // Cookie͸อ࣋͞ΕΔ
 window.__karma__.loaded();
 }); LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ DVTUPNDPOUFYUpMFIUNM

Slide 88

Slide 88 text

͜͏͍ͬͨํ๏Λ࢖͏͜ͱͰผ υϝΠϯͰಡΈࠐ·ΕΔ໰୊Λ ղফ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 89

Slide 89 text

QSPYZ3FRɺQSPYZ3FTͷҾ਺ ͸ҎԼࢀর LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ IUUQTHJUIVCDPNOPEFKJUTVOPEFIUUQQSPYZ

Slide 90

Slide 90 text

͜͜·ͰདྷΔͱςετΛॻ͘ͷ ͸ඇৗʹ؆୯ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 91

Slide 91 text

ී௨ʹαΠτ্ͷ%FW5PPMT্ Ͱݕূ͢ΔͷͱมΘΒͳ͍Ϩϕ ϧͰςετ͕ॻ͚Δ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 92

Slide 92 text

LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ const assert = require("power-assert");
 
 describe('index page', () => {
 it('Google map', () => {
 assert(google.maps);
 });
 it('copyright', () => {
 assert(document.querySelector('.copyright'));
 });
 });

Slide 93

Slide 93 text

ඇৗʹ͓͢͢Ί LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 94

Slide 94 text

࣮ࡍ΍ͬͯΈͯͲ͏͔ͩͬͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 95

Slide 95 text

ςετ͸ඇৗʹॻ͖΍͍͢ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 96

Slide 96 text

ͨͩɺϒϥ΢βʹىҼ͢Δෆ҆ ఆ͞͸Ͳ͏͠Α͏΋ͳ͔ͬͨ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 97

Slide 97 text

%0.ͱ͍͏޿Ҭม਺΍͹͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 98

Slide 98 text

ঢ়ଶͷΫϦΞ͕ࣗ෼ͷ੹೚ʹͳ ΔͷͰਏ͍
 ʢָʹͳΔ෦෼΋͋Δ͚Ͳʣ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 99

Slide 99 text

ࣗ෼Ͱ੍ޚͰ͖Δൣғ͕޿͕Δ ͷ͸خ͍͠ ʢ8FC%SJWFSͷϒϥοΫϘο Ϋεײ͕ͳ͍ʣ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 100

Slide 100 text

ͦ΋ͦ΋ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 101

Slide 101 text

8FC%SJWFS͸ड͚ೖΕςετ ͷπʔϧͰ͋ͬͯɺ։ൃऀ޲͚ πʔϧͰ͸ͳ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 102

Slide 102 text

։ൃ͠ͳ͕Βςετ͢ΔͷͰ͋ Ε͹ผͷํ๏Λݕ౼͢Δํ͕͍ ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 103

Slide 103 text

ͨͩɺड͚ೖΕςετͳΒ 8FC%SJWFSͷ΄͏͕ྑ͍͔΋ ͠Εͳ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 104

Slide 104 text

8FC%SJWFS͸ߴੑೳ͚ͩͲɺ ෆཁͳػೳ΋ଟ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 105

Slide 105 text

࠷ޙʹ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 106

Slide 106 text

&&ςετ͸ ॻ͔ͳ͍ʹӽͨ͜͠ͱ͸ͳ͍ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 107

Slide 107 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 108

Slide 108 text

࣭͝໰͸ʁ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏

Slide 109

Slide 109 text

࣭͝໰͸ʁ LBSNBΛ࢖ͬͨ41"޲͚ͷ&&ςετٕ๏ ྫ ɾ࣮ߦ࣌ؒ͸ʁ ɾ࣮ࡍͲ͏͍͏;͏ʹಈ͔ͯ͠Δʁ ɾଞͷϝϯόʔͷ൓Ԡ͸ʁ ɾ΍ͬͯΑ͔ͬͨʁ ɾͲ͏͍͏ͱ͖ʹ͓͢͢Ίʁ ɾCIͱͷ࿈ܞ͸ʁ