Serverless Architecture

B4afc7d853d7f1cb6a253d3c7183c05a?s=47 Naoya Ito
October 24, 2016

Serverless Architecture

補足: AWS Lambda のコンテナのライフサイクルについては説明を単純化していますので、詳しくは http://www.slideshare.net/keisuke69/aws-lambda-46129981 こちらの 42 ページ以降を参照してください

B4afc7d853d7f1cb6a253d3c7183c05a?s=128

Naoya Ito

October 24, 2016
Tweet

Transcript

  1. 4FSWFSMFTT"SDIJUFDUVSF /BPZB*UP גࣜձࣾҰٳ$50 

  2. ઌʹ݁࿦ •  αʔόʔϨεΞʔΩςΫνϟͱ͸ –  ୯७ʹ͸'BB4Λ࢖ͬͨγεςϜ –  εςʔτϨεͳ'BB4͕ϦΞΫςΟϒɺ.JDSPTFSWJDFTɺίϨΦάϥ ϑΟ΁ͱಋ͘ •  ݱ৔ײ֮Ͱ͸ʮӡ༻ָ͕Ͱεέʔϧͯ͠ɺ͍҆ʯ

    •  ۜͷ஄ؙͰ͸ͳ͍͕ɺԠ༻ྖҬ͸֦͕ΔͱࢥΘΕΔ •  ͪΐͬͱͨ͠λεΫΛ͜ͳͨ͢Ί΍ɺ.JDSPTFSWJDFTͷ࣮ݱखஈͱ ͯ͠ɺҾ͖ग़͠ͷҰͭʹೖΕ͓͍ͯͯଛ͸ͳ͍
  3. ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ Πϕϯτۦಈ .JDSPTFSWJDFT 3FBDUJWF ΦʔέετϨʔ γϣϯ͔ΒίϨ ΦάϥϑΟ΁ αʔόʔϨε 4IBSFE

    /PUIJOH ӡ༻ෛ୲͕গͳ͍ ͍҆ εέʔϥϒϧ ಘΒΕΔϝϦοτ ΞʔΩςΫνϟͷੑ࣭
  4. αʔόʔϨεΞʔΩςΫνϟͱ͸

  5. ͭͷʮαʔόʔϨεʯ •  ϋʔυ΢ΣΞతҙຯͰͷʮαʔόʔʯ͕ͳ͍ •  ৗறϓϩηεతͳҙຯͰͷʮαʔόʔʯ͕ͳ͍ –  'VODUJPOBTB4FSWJDF 'BBT Λલఏʹ – 

    ࠓ೔͸ओʹͪ͜Βͷ࿩
  6. 'VODUJPOBTB4FSWJDF •  "84-BNCEB •  (PPHMF$MPVE'VODUJPOT •  "[VSF'VODUJPOT

  7. "84-BNCEB •  "84্Ͱɺ೚ҙͷখ͞ͳؔ਺Λ࣮ߦ͢ΔͨΊͷαʔϏε –  1ZUIPOɺ/PEFKTɺ+BWBͳͲͰॻ͍ͨؔ਺ΛΞοϓϩʔυ –  ೚ҙͷΠϕϯτΛܖػʹɺͦͷؔ਺Λ࣮ߦͰ͖Δ –  Πϕϯτྫ • 

    )551ϦΫΤετΛड৴ͨ͠ •  4ʹϑΝΠϧ͕Ξοϓϩʔυ͞Εͨ •  ,JOFTJTͷετϦʔϜͷΠϕϯτ͕ൃੜͨ͠ •  "NB[PO4JNQMF&NBJMʹϝʔϧ͕ಧ͍ͨ •  %ZOBNP%#ʹ৽͍͠ΞΠςϜ͕*/4&35͞Εͨ •  4DIFEVMFE&WFOUT CZ$MPVE8BUDI  •  ŋŋŋ
  8. module.exports.hello = (event, context) => { context.succeed({ message: 'Hello, '

    + event.query.username }) } # Serverless Framework を利用 $ serverless deploy
  9. -BNCEBϑΝϯΫγϣϯ͸αʔόʔϨεͰ࣮ߦ͞ΕΔ •  -BNCEBϑΝϯΫγϣϯ͸ίϯςφͰ࣮ߦ͞ΕΔ •  ίϯςφ͸࣮ߦ࣌ʹ࡞੒͞Εͯɺऴྃ࣌ʹഁغ͞ΕΔ •  ৗறϓϩηεͰ͸ͳ͍ɻ$(*ʹ͍ۙϞσϧ –  ʮϞμϯ$(*ʯ

  10. -BNCEBϑΝϯΫγϣϯ͸εςʔτϨεͰ͋Δ •  ίϯςφ͸࣮ߦ࣌ʹͷΈଘࡏɻঢ়ଶ εςʔτ Λอ࣋Ͱ͖ͳ͍ •  εςʔτϨε 4IBSFE/PUIJOH  – 

    Կ͔໰୊͕ىͬͯ͜΋ɺผͷ࣮ߦʹ͸ѱӨڹΛ༩͑ͳ͍ –  εέʔϧ͔ͨͬͨ͠Β΋ͬͱىಈ͢Ε͹Α͍
  11. "84-NCEB͸εέʔϧ͢Δ͠ɺ͍҆ •  Πϕϯτྔʹ߹Θͤͯ-BNCEB͕ࣗಈͰεέʔϧ –  εςʔτϨεͳͷͰ ఏڙऀͰ͋Δ"84తʹ΋ εέʔϧ͠΍͍͢ –  ؾ͍ͮͨΒ/PEFϓϩηεམͪͯͨŋŋŋͳͲ͕ͳ͍ɻ҆શ 

    •  ܭࢉͨ͠෼͔͠අ༻͸͔͔Βͳ͍ –  "NB[PO&$ŋŋŋΠϯελϯε͕ىಈͨ࣌ؒ͠෼ͷඅ༻ –  "84-BNCEBŋŋŋ࣮ߦͨ͠෼ͷΈͷඅ༻ ͔ͳΓ͓ಘ
  12. ʮαʔόʔϨεΞʔΩςΫνϟʔʯ •  ͘͝୯७Խ͢Δͱ'BB4Λར༻ͨ͠γεςϜઃܭΞʔΩςΫνϟ •  ΑΓຊ࣭తʹ͸ΠϕϯτۦಈͰܥΛઃܭͨ͠ɺϦΞΫςΟϒͰίϨ ΦάϥϑΟͳϚΠΫϩαʔϏεͷ͜ͱ –  ͳΜͷͬͪ͜Όŋŋŋ –  ޙड़

  13. ࣄྫ

  14. ҰٳͰͷࣄྫ   ͜ͷαϜωΠϧΛ -BNCEBͰ࡞੒

  15. Ұٳͷ ؅ཧը໘ AWS Lambda S3 bucket ࣸਅΛ Ξοϓϩʔυ Πϕϯτ αϜωΠϧ࡞੒

    S3 bucket αϜωΠϧ༻
  16. -BNCEBؔ਺͸Πϕϯτۦಈ AWS Lambda S3 bucket Πϕϯτ "Records": [ { "eventVersion":

    "2.0", "eventTime": "1970-01-01T00:00:00.000Z", "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "s3": { "configurationId": "testConfigRule", "object": { "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901", "key": "HappyFace.jpg", "size": 1024 }, "bucket": { "arn": bucketarn, "name": "sourcebucket", "ownerIdentity": { "principalId": "EXAMPLE" } }, },   ...
  17. ҰٳͰͷࣄྫ   ࠾༻ͷॻྨબߟ͸4MBDL Ͱ#PU͔Βґཔ͞ΕΔ

  18. Redmine AWS Lambda Amazon API Gateway Ҏલ͸)FSPLVͰ#PUΛ ಈ͔ͨ͠Γ͍͕ͯͨͦ͠ ͷඞཁ͕ͳ͘ͳͬͨ 8FCIPPL

    Πϕϯτ
  19. )551ϦΫΤετ΋ΠϕϯτʹͳΔ AWS Lambda Amazon API Gateway 8FCIPPL )551  Πϕϯτ

    { "body": {}, "method": "GET", "headers": { "Accept": "*/*", "CloudFront-Forwarded-Proto": "https", "CloudFront-Is-Desktop-Viewer": "true", "CloudFront-Is-Tablet-Viewer": "false", "CloudFront-Viewer-Country": "JP", "User-Agent": "curl/7.43.0", "Via": "1.1 2d30d2b55574343a43311dd210926843.cloudfront.net (CloudFront)", "X-Amz-Cf-Id": "JDBHHrMHhbxwaMfNBBTo15EICVfU8t6JHTExkGpu2W6_O4h5wBtqsg==", "X-Forwarded-Port": "443", "X-Forwarded-Proto": "https" }, "query": { "user": "naoya", "foo": "bar" }, "path": {}, "identity": { "accessKey": "", "cognitoAuthenticationType": "", "cognitoAuthenticationProvider": "", "userAgent": "curl/7.43.0", } }
  20. ࣄྫߦಈϩάऩूج൫ʹ΋ར༻ΛਐΊ͍ͯΔ AWS Lambda Amazon Kinesis Google BigQuery "QQ αʔόʔ S3

    bucket "QQ αʔόʔ AWS Lambda
  21. େن໛ͳࣄྫ೔ܦ৽ฉࣾͷࢴ໘ϏϡʔΞʔ h(ps://speakerdeck.com/ikait/serverless-architecture-supports-nikkeis-paper-viewer

  22. ෳ਺ͷ-BNCEB͕Πϕϯτ࿈ܞ͠ɺγεςϜΛߏ੒͢Δ

  23. 'BB4ͰΠϕϯτۦಈઃܭΛಥ͖٧Ί͍ͯ͘ͱɺࣗͣͱ.JDSPTFSWJDFT͕ ݟ͑ͯ͘Δ h(ps://eventdrivenapps.com/

  24. %FTJHOBOECVJMEFWFOUESJWFOTFSWFSMFTT BQQMJDBUJPOTEJTUSJCVUFUIFMPHJDBOE SFBDUUPDIBOHFTJOZPVSSFTPVSDFT

  25. ΞʔΩςΫνϟతੑ࣭Λղ๤͢Δ

  26. ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ Πϕϯτۦಈ .JDSPTFSWJDFT 3FBDUJWF ΦʔέετϨʔ γϣϯ͔ΒίϨ ΦάϥϑΟ΁ αʔόʔϨε 4IBSFE

    /PUIJOH ӡ༻ෛ୲͕গͳ͍ ͍҆ εέʔϥϒϧ ಘΒΕΔϝϦοτ ΞʔΩςΫνϟͷੑ࣭
  27. $(*͸ϦΫΤετຖʹ࣮ߦɺऴΘͬͨΒഁغ •  1SPTŋŋŋ4IBSFE/PUIJOHͰ҆શɺ؆୯ •  $POTŋŋŋΞϓϦέʔγϣϯશମΛຖճGPSL͕ͱͯ΋ඇޮ཰ fork() HTTP Request HTTP Server

    Web App
  28. ৗறϓϩηεQSFGPSLŋŋŋϓϩηεΛ࡞͓͍ͬͯͯৗற 親 子 fork()

  29. QSFGPSL͸Φʔόʔϔου͸গͳ҆͘શ͕ͩɺฒߦੑೳʹ೉ •  ྫ –  ΞϓϦέʔγϣϯαʔόʔ ྫ'BTU$(*ɺ1VNBɺ+FUUZɺ**4  •  1SPT – 

    ϦΫΤετຖGPSL ͷΦʔόʔϔουΛճආͰ͖Δ –  ଟ͘͸ڞ༗͠ͳ͍ͷͰɺൺֱత҆શ •  $POT –  εέʔϥϏϦςΟʹ೉ •  ϝϞϦϑοτϓϦϯτ͕େ͖͍ɻϓϩηε਺͕࠷େಉ࣌઀ଓ਺ $,໰୊  •  ߴෛՙͰ͸ϓϩηεεϨουͷίϯςΩετεΠονίετ͕ߴ͍
  30. ΠϕϯτۦಈϞσϧʹΑΔฒߦॲཧ ࣌ؒ A B A C D B ・・・ select()

    / epoll() ίϯςΩετ εΠον
  31. ΠϕϯτۦಈϞσϧ͸ฒߦੑೳ͕ߴ͍͕Մ༻ੑʹ೉ •  ྫ –  /PEFKT •  1SPT –  εέʔϥϏϦςΟ • 

    ϝϞϦϑοτϓϦϯτ͕খ͘͞ɺߴ͍ฒߦॲཧੑೳ •  $POT –  Մ༻ੑ ଱ো֐ੑ ʹ೉ •  མͪΔͱ͖͸શ෦མͪΔϝϞϦϦʔΫ࣌ͷϦεΫ͕େ͖͍
  32. ىಈʹ൐͏Φʔόʔϔου͕গͳ͚Ε͹ɺຖճ࣮ߦͰߏΘͳ͍ ͷͰ͸ŋŋŋ  •  1SPTŋŋŋ4IBSFE/PUIJOHͰ҆શɺ؆୯ •  $POTŋŋŋΞϓϦέʔγϣϯશମΛຖճGPSL͕ͱͯ΋ඇޮ཰ ίϯςφͰ࣮ߦ͢Δɺͱ͍ ͏ൃ૝͕͜ΕΛՄೳʹͨ͠

  33. 4IBSFE/PUIJOHͱ͍͏੍໿ •  4IBSFE/PUIJOHલఏŋŋŋඞཁʹͳͬͨͱ͖͚ͩܭࢉͰෆ౎߹ͳ͍ –  ίϯςφΛӬଓԽͤ͞Δٛ຿͕ൃੜ͠ͳ͍ ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ αʔόʔϨε 4IBSFE /PUIJOH

  34. ඞཁʹͳͬͨͱ͖͚ͩܭࢉˠೖྗΛΠϕϯτͱͯ͠ந৅Խͯ͠ ΠϕϯτۦಈͰϞσϧԽ͢Δͷ͸ࣗવ ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ Πϕϯτۦಈ αʔόʔϨε 4IBSFE /PUIJOH

  35. -BNCEBؔ਺ŋŋŋΠϕϯτ΁ͷ൓Ԡͱͯ͠هड़͢Δ ݁ՌɺαʔϏεؒ͸ૄ݁߹ʹ ൓Ԡͱͯ͠ͷϓϩάϥϛϯάϞσϧŋŋŋϦΞΫςΟϒ Ͳ͔ͬΒདྷΔ͔Θ͔ΒΜ ͚ͲɺͦͷΠϕϯτ͖ͨ Β΍ͬͱ͘Θ

  36. h(p://www.slideshare.net/yugolf/typesafe-reacAveplaBormreacAvesystem-scalasummitkansai

  37. None
  38. None
  39. None
  40. None
  41. ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ Πϕϯτۦಈ 3FBDUJWF αʔόʔϨε 4IBSFE /PUIJOH

  42. ࢀߟ&SMBOH&MJYJSͷܰྔϓϩηεϞσϧ •  &SMBOH7.ͷܰྔϓϩηε –  &SMBOH&MJYJSʹ͓͚Δฒߦॲཧͷج൫ɻখ͍͞ɻϫʔυ –  େྔʹܰྔϓϩηεΛ࡞ͬͯฒߦॲཧɺͰ0, –  ʮىಈ͕े෼ʹߴ଎ͳΒɺ౎౓࣮ߦ͕ྑ͍ʯ αʔόʔϨεͳ࿩ͱࣅͯ

    Δͳʙͱ
  43. ͜ͷखͷ࿩Λಥ͖٧ΊΔͱϦΞΫςΟϒʹ୧Γண͘

  44. ؓ࿩ٳ୊ɺͦΕͧΕͷ-BNCEB͸ϚΠΫϩͳؔ਺ʹͳΔ •  -BNCEBϑΝϯΫγϣϯ͸Ұ͕ͭҰͭͷ࢓ࣄΛ͢Δ •  খ͞ͳ ϚΠΫϩͳ ؔ਺ΛΠϕϯτͰ ૄ݁߹ʹ ૊Έ߹ΘͤΔ ϫγ͸ͬͪ͜ͷΠϕϯτ

    ୲౰ͳ ϫΠ͸ͬͪ͜ͷΠϕϯτ ୲౰΍
  45. 'BB4͸ࣗવͱ.JDSPTFSWJDFTΛࢦ޲͢Δ ͦΕ͕خ͍͔͠Ͳ͏͔͸ผͱͯ͠ŋŋŋ  h(p://www.slideshare.net/danilop/building-eventdriven-serverless-apps

  46. ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ Πϕϯτۦಈ .JDSPTFSWJDFT 3FBDUJWF αʔόʔϨε 4IBSFE /PUIJOH

  47. ΦʔέετϨʔγϣϯWTίϨΦάϥϑΟ 40"΍#1.ɺ.JDSPTFSWJDFTͷจ຺ͰϏδωεϓϩηεߏஙͷͨΊʹ αʔϏεؒΛͲ͏͍͏ΞʔΩςΫνϟͰؔ࿈͚ͮΔ͔ͷٞ࿦  •  ΦʔέετϨʔγϣϯ PSDIFTUSBUJPO  –  ΦʔέετϥʹΑΔԋ૗ํ๏

    –  தԝͷࢦشऀ͕αʔϏεͷݺͼग़͠Λίϯτϩʔϧ͠ɺϏδωεϓϩηε ͷ࣮ߦΛࢦش͢Δ  •  ίϨΦάϥϑΟ DIPSFPHSBQIZ  –  όϨʔ΍෣౿ͳͲͷμϯαʔ΁ͷৼΓ෇͚ –  αʔϏεͷݺͼग़͠Λίϯτϩʔϧͨ͠ΓɺϏδωεϓϩηεͷ࣮ߦΛࢦ ش͢Δଘࡏ͸͍ͳ͍ 
  48. ΦʔέετϨʔγϣϯ ϦΫΤετɾϦϓϥΠ  ϦΫΤετ ϦϓϥΠ •  ࣗ਎ͷॲཧͷҰ෦ΛଞͷγεςϜʹґཔɻґཔͨ݁͠Ռ͸ࣗ਎ͷଆͰར༻ •  αϒϧʔνϯݺͼग़͠ɺϝιουΠϯϘέʔγϣϯͷΞφϩδʔ – 

    ཧղ͠΍͍͢ɻಉظతͳϏδωεϓϩηεͷߏஙʹ޲͘
  49. ίϨΦάϥϑΟ Πϕϯτۦಈ  αϒεΫϥΠϒ •  ΠϕϯτͷൃੜʹΑͬͯଞͷۀ຿ॲཧ͕ۦಈ͞ΕΔɻඇಉظͷΠϕϯτ࿈ܞ •  ࢦشऀ͕͍ͳ͍ɻ֤αʔϏε͸Πϕϯτʹۦಈ͞ΕɺৼΓ෇͚ʹै͍ɺࣗ཯తʹଞऀʹΠϕϯτ Λૹͬͯಇ͖͔͚Δ • 

    ଞγεςϜ͕ؔ஌Ͱ͖ͳ͍λΠϛϯάͰ͋Δॲཧ͕ҝ͞ΕΔɺ༧ظͰ͖ͳ͍λΠϛϯάͰ͋Δࣄ ৅͕ൃੜ͢ΔέʔεʹରԠ͢Δͷʹద͢Δ Πϕϯτ ύϒϦογϡ
  50. ελʔόοΫε͸ϑΣʔζίϛοτΛ࢖Θͳ͍ •  Ϩδͷళһ͸஫จͷҹΛ͚ͭͯΩϡʔʹૹΔɻϨδ܎ͱόϦελ͸ ෼ׂ͞Ε͍ͯΔ –  Πϕϯτۦಈɺඇಉظ –  ΦʔέετϨʔγϣϯͰ͸ͳ͘ɺίϨΦάϥϑΟ •  ؒҧͬͨҿΈ෺Λ࡞ͬͨΒɺ෷͍໭͠Ͱ͸ͳ͘ɺҿΈ෺Λࣺͯͯ࡞

    Γ௚͢ h(ps://code.google.com/archive/p/gregors-ramblings-ja/wikis/18_starbucks.wiki
  51. ίϨΦάϥϑΟ͸ૄ݁߹Ͱεέʔϥϒϧ •  ҰൠʹɺίϨΦάϥϑΟख๏ʹ޲͔͏܏޲͕ڧ͍γεςϜͷํ͕ɺ ૄ݁߹Ͱॊೈੑ͕͋ΓɺมߋΛड͚ೖΕΔ͜ͱ͕Θ͔͍ͬͯ· ͢ɻ ʮϚΠΫϩαʔϏεΞʔΩςΫνϟʯ ΦϥΠϦʔɾδϟύϯ 1  

    •  ҰํɺίϨΦάϥϑΟ͕ৗʹਖ਼ղͰ͸ͳ͍ –  ಉظݺͼग़͠ͷํ͕୯७ɺద੾ʹػೳ͍ͯ͠Δ͔͕Θ͔Γ΍͍͢  •  .JDSPTFSWJDFTΛࢦ޲͢ΔͳΒίϨΦάϥϑΟ –  ඇಉظͷΠϕϯτ࿈ܞŋŋŋେ෯ʹ෼཭͞ΕͨαʔϏεΛੜΈग़ͤΔ
  52. 'BB4͸ࣗવͱίϨΦάϥϑΟΛࢦ޲͢Δ •  ͦ΋ͦ΋ϚωʔδυαʔϏεؒΛඇಉظΠϕϯτ࿈ܞͰ઀ଓ͢Δ ΞʔΩςΫνϟͳͷͰŋŋŋ •  ޲͖ෆ޲͖ –  ΦʔέετϨʔγϣϯΛલఏͱͨ͠Ϗδωεϓϩηεͷߏங΍ஔ͖׵ ͑ʹ͸޲͍ͯͳ͍ – 

    ίϨΦάϥϑΟલఏͰϞσϦϯάͰ͖ΔͳΒɺ޲͍͍ͯΔ͔΋ •  ʮελʔόοΫε͸ϑΣʔζίϛοτΛ࢖Θͳ͍ʯΛࢥ͍ग़ͦ͏
  53. ඞཁʹͳͬͨ ͱ͖͚ͩܭࢉ Πϕϯτۦಈ .JDSPTFSWJDFT 3FBDUJWF ΦʔέετϨʔ γϣϯ͔ΒίϨ ΦάϥϑΟ΁ αʔόʔϨε 4IBSFE

    /PUIJOH ӡ༻ෛ୲͕গͳ͍ ͍҆ εέʔϥϒϧ ಘΒΕΔϝϦοτ ΞʔΩςΫνϟͷੑ࣭
  54. վΊͯʮαʔόʔϨεΞʔΩςΫνϟʯͱ͸ •  -BNCEB࢖ͬͯ·͢ɺͱ͍͏͚ͩͳΒ׶͑ͯʮαʔόʔϨεɾΞʔ ΩςΫνϟʯͱେڼʹݺ͹ͳͯ͘΋ྑ͍ؾ͕ •  ҎԼΛ֮ࣗతʹ׆͔͢ͷ͕ʮαʔόʔϨεɾΞʔΩςΫνϟʯͳͷ Ͱ͸ͳ͍͔  –  .JDSPTFSWJDFT࣮૷ͷखஈͱͯ͠ͷ'BB4

    –  ϦΞΫςΟϒ΍ίϨΦάϥϑΟʹ޲͔ΘͤΔੑ࣭
  55. αʔόʔϨεΞʔΩςΫνϟͱ͸ΠϕϯτۦಈͰܥΛઃܭͨ͠ɺ ϦΞΫςΟϒͰίϨΦάϥϑΟͳϚΠΫϩαʔϏεͷ͜ͱ  •  Θ͔Γ·ͨ͠Ͷ •  ͜Μͳ͜ͱݴ͏ͱόζϫʔυ͓͡͞Μͱࢦ͞͞ΕΔ͜ͱؒҧ͍ͳ ͠ʂ

  56. ࡶͳ࿩

  57. ݁ہͳ͘ͳΔͷ͸ϋʔυͳͷ͔ɺϓϩηεͳͷ͔  •  ΞʔΩςΫνϟతʹ͸ৗறϓϩηε͕ͳ͘ͳΔ͜ͱ͕ॏཁ͚ͩͲ •  ݱ৔Ͱ͸ɺ04తͳҙຯͰͷαʔόʔ͕ͳ͘ͳΔ͜ͱ͕ॏཁͩͬͨ Γ͢Δ –  ϝϦοτʹ௚͍݁ͯ͠ΔͨΊɺಋೖͷಈػʹ͠΍͍͢ – 

    ༨৒ϦιʔεΛ๊͑ͳͯ͘ࡁΉ্ʹ͍҆ɻՄ༻ੑ΋্͕Δŋŋŋͱ͍͏ Πϯϑϥଆ໘Ͱͷਫ਼ਆత҆৺ײ͕ϋϯύͳ͍
  58. ͿͬͪΌ͚Ͳ͏ͳͷ  •  ͸·Ε͹ڧ͍ –  εέʔϥϒϧɻӡ༻޻਺͸͍͢͝Լ͕Δɻ&$ΑΓ௒͍҆ –  ஌ΒΜ͏ͪʹྑ͍ΞʔΩςΫνϟʹ޲͔ͬͯͨΓ͢Δ •  ؔ਺͕খ͘͞·ͱ·ͬͨΓɺςελϏϦςΟߴ͔ͬͨΓ

    •  ։ൃ޻਺͸ͦ͜·Ͱ࡟ݮ͞Εͳ͍͔΋ –  'BB4ಛ༗ͷ όουͳ΋ͷ΋ؚΉ ϊ΢ϋ΢͕ඞཁ •  Πϕϯτ͕ϧʔϓͯ͠αϜωΠϧͷαϜωΠϧͷαϜŋŋŋˠ㱣ͱ͔͋Δ͋Δ •  ಉظॲཧ͍ͨ͠ͳঢ়ଶ͍࣋ͪͨͳͱ͍͏ͱ͖೰Ή •  ϓϩάϥϜαΠζʹ੍ݶ͕͋ͬͨΓ͢Δ –  ϐλΰϥεΠονʹͳΔͷͰσόοά͕େมɻ݁߹ςετ೉͍͠
  59. .JDSPTFSWJDFTͷ۩ମత࣮ݱखஈͱͯ͠ͷ'BB4 •  .JDSPTFSWJDFTͷٞ࿦͸࣮ݱखஈΛ໌Β͔ʹ͠ͳ͔ͬͨ •  'BB4Λ༻͍ͨαʔόʔϨεΞʔΩςΫνϟ͸ɺ.JDSPTFSWJDFTͷ ۩ମత࣮ݱखஈ ͷҰͭ 

  60. Ͳ͏͍͏ͱ͖࢖͏ͷ  •  খ͞ͳϢʔεέʔεͰ͸ੵۃతʹ࢖͑͹͍͍ –  αϜωΠϧ࡞Δ͚ͩɺͱ͔ɺ4MBDL௨஌ͱ͔ •  େ͖ͳϢʔεέʔεͰ͸͍ͭ࢖͏ͷ͔ŋŋŋ·ͩݴޠԽͰ͖ͯͳ͍ –  ʮۜͷ஄ؙͰ͸ͳ͍ʯͱ͸ΈΜͳݴ͏ɻʮ͜͜Ͱ࢖͑ʂʯͱ͸ݴΘͳ͍

    –  Φʔόʔϔου͸ൺֱతখ͍͕͞θϩͰ͸ͳ͍ –  ίϨΦάϥϑΟͰ0,ͳΒɺͱ͍͏ͷ͸͋Γͦ͏  •  αʔόʔϨεͱͦ͏͡Όͳ͍ͷΛ૊Έ߹ΘͤΔࣄྫ͕૿͑ͯΔ –  ྫػցֶशͷϞσϧߏங͸ී௨ʹ΍ͬͯɺͦΕΛར༻͢ΔΞϓϦέʔγϣ ϯ͸αʔόʔϨε
  61. αʔόʔϨεͷࠓޙ •  ΞʔΩςΫνϟతʹਅͬ౰ͩ͠ɺద༻ൣғ͸֦͕Δͱࢥ͏ –  ಛʹϦΞϧλΠϜͳεέʔϥϏϦςΟ͕ཉ͍͠έʔε •  ήʔϜαʔόʔɺߦಈϩάऩूɺ*P5ŋŋŋ –  Ͳ͏͍͏ͱ͖αʔόʔϨε͕͍͍͔ͷٞ࿦͸͜Ε͔Β੒ख़͍ͯ͘͠Ͱ͠ΐ͏ – 

    ઃܭํ๏ͷҾ͖ग़͠ͷҰͭʹՃ͓͍͑ͯͯଛ͸ͳ͍  •  ։ൃ؀ڥ ϑϨʔϜϫʔΫ ͸΋͏Ұ੠ཉ͍͠ɻྑ͍΋ͷ͸ࠓޙ΋ग़͖ͯͦ͏ –  4FSWFSMFTT͕಄Ұͭग़ͯΔ͕ɺ·ͩσϓϩΠࣗಈԽϨϕϧ •  ޚࡾՈͷ։ൃڝ૪͕੝ΜʹɻߴػೳԽɺੑೳ޲্͸ਐΉ –  "84WT($1WT"[VSF –  Φʔόʔϔου͸ٕज़ֵ৽ͰͲΜͲΜখ͘͞ͳΔͱࢥΘΕΔ
  62. ·ͱΊ •  αʔόʔϨεΞʔΩςΫνϟͱ͸ –  ୯७ʹ͸'BB4Λ࢖ͬͨγεςϜ –  εςʔτϨεͳ'BB4͕ϦΞΫςΟϒɺ.JDSPTFSWJDFTɺίϨΦάϥ ϑΟ΁ͱಋ͘ •  ݱ৔ײ֮Ͱ͸ʮӡ༻ָ͕Ͱεέʔϧͯ͠ɺ͍҆ʯ

    •  ۜͷ஄ؙͰ͸ͳ͍͕ɺԠ༻ྖҬ͸֦͕ΔͱࢥΘΕΔ •  ͪΐͬͱͨ͠λεΫΛ͜ͳͨ͢Ί΍ɺ.JDSPTFSWJDFTͷ࣮ݱखஈͱ ͯ͠ɺҾ͖ग़͠ͷҰͭʹೖΕ͓͍ͯͯଛ͸ͳ͍
  63. ࢀߟจݙ 8FC  •  αʔόϨεͱϚΠΫϩαʔϏεͰมΘΔήʔϜαʔό։ൃ –  IUUQTTQFBLFSEFDLDPNLB[VUPNPTBIBSFTVUPNBJLVSPTBIJTVUFCJBOXBSVLFNVTBIBLBJGB •  ࢴ໘ϏϡʔϫʔΛࢧ͑ΔαʔόʔϨεΞʔΩςΫνϟ – 

    IUUQTTQFBLFSEFDLDPNJLBJUTFSWFSMFTTBSDIJUFDUVSFTVQQPSUTOJLLFJTQBQFSWJFXFS •  #VJMEJOH&WFOUESJWFO4FSWFSMFTT"QQT –  IUUQXXXTMJEFTIBSFOFUEBOJMPQCVJMEJOHFWFOUESJWFOTFSWFSMFTTBQQT •  "84-BNCEBJO"DUJPO&WFOU%SJWFO4FSWFSMFTT"QQMJDBUJPOT –  IUUQTFWFOUESJWFOBQQTDPN •  5ZQFTBGF3FBDUJWF1MBUGPSNͰ࡞Δ3FBDUJWF4ZTUFN –  IUUQXXXTMJEFTIBSFOFUZVHPMGUZQFTBGFSFBDUJWFQMBUGPSNSFBDUJWFTZTUFNTDBMBTVNNJULBOTBJ •  ίϨΦάϥϑΟWTΦʔέετϨʔγϣϯ –  IUUQXXXpPSBOPDPNKQCMPHJOUFHSBUJPOJOUFHSBUJPOBSDIJUFDUVSFίϨΦάϥϑΟWTΦʔέετϨʔγϣ ϯ •  ελʔόοΫε͸ϑΣʔζίϛοτΛ࢖Θͳ͍ –  IUUQTDPEFHPPHMFDPNBSDIJWFQHSFHPSTSBNCMJOHTKBXJLJT@TUBSCVDLTXJLJ
  64. ࢀߟจݙ ॻ੶  •  4BN/FXNBOஶ ࠤ౻௚ੜ؂༁ ໦Լ఩໵༁ʮϚΠΫϩαʔϏε ΞʔΩςΫνϟʯ ΦϥΠϦʔɾδϟύϯ