Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CognitoでWebアプリケーション(not SPA)に ログインさせたい時、何を作らなくて...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kitano Yuichi
July 14, 2023
Technology
3.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CognitoでWebアプリケーション(not SPA)に ログインさせたい時、何を作らなくてはならないのか? / What do I create when I want to log in to a web application with Amazon Cognito?
Kitano Yuichi
July 14, 2023
More Decks by Kitano Yuichi
See All by Kitano Yuichi
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
0
210
SPAとWebアプリケーションでCognitoの使い方はどう変わるのか? / How do we use cognito with SPA and web applications?
kitano_yuichi
0
7.1k
AWS Glueを使ってRDSからS3+Athena環境を作ってみよう / Let's create Athena from RDS using AWS Glue
kitano_yuichi
1
9.1k
オンプレとVPCをつなぐ環境のUpdate/re:Cap connecting on-premises and vpc
kitano_yuichi
0
1.7k
Other Decks in Technology
See All in Technology
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
0
100
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
1
580
Type-safe IaC for Dart
coborinai
0
160
SRE Next 2026 何でも屋からの脱却
bto
0
1k
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.6k
脱金融のフューチャー・デザイン / Future Design Beyond Finance
ks91
PRO
0
160
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
430
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
440
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.4k
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
150
Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース
smt7174
1
420
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
430
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
How to Talk to Developers About Accessibility
jct
2
400
Building Applications with DynamoDB
mza
96
7.1k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Optimising Largest Contentful Paint
csswizardry
37
3.8k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
The Limits of Empathy - UXLibs8
cassininazir
1
500
Transcript
$PHOJUPͰ8FCΞϓϦέʔγϣϯʢOPU41"ʣʹ ϩάΠϯ͍ͤͨ࣌͞ɺԿΛ࡞Βͳͯ͘ͳΒͳ͍ͷ͔ʁ "84ࣄۀຊ෦ϞμϯΞϓϦέʔγϣϯίϯαϧςΟϯά෦ ༎Ұ
ࣗݾհ 2 w ༎Ұʢ,*5"/0:VJDIJʣ w Ϋϥεϝιουגࣜձࣾ w "84ࣄۀຊ෦ ϞμϯΞϓϦέʔγϣϯίϯαϧςΟϯά෦
w +BQBO"84"MM$FSUJGJDBUJPOT&OHJOFFST w ͖ͳ"84αʔϏε w "84$%, w $PHOJUP
ೝূαʔϏεͰ͋Δ$PHOJUPΛ ͬͯΈΑ͏😁 3
41"ͰBNQMJGZͬͨϒϩά ͔ͬΓͰͯ͘Δͳ🤔 4
%KBOHPͱ͔3BJMTΈ͍ͨͳ 8FCϑϨʔϜϫʔΫͰ $PHOJUP͏ʹͲ͏ͨ͠Β͍͍Μͩ😇 5
ࠓճͷత $PHOJUPͰ8FCΞϓϦέʔγϣϯʢOPU41"ʣ ʹϩάΠϯ͍ͨ࣌͠ɺ ࣗͰ࡞Δඞཁ͕͋ΔͷΛཧղ͢Δɻ 6
ຊ͓͢Δ͜ͱ w 8FCΞϓϦέʔγϣϯͰ$PHOJUPϩάΠϯ͢Δछྨͷํ๏ w छྨͷϩάΠϯํ๏ͷೝূϑϩʔͱ࣮ʹ͍ͭͯ ʲ͞ͳ͍͜ͱʳ w ೝՄʢTDPQFʣʹ͍ͭͯ w αΠϯΞοϓɺϩάΠϯޙͷ࣮ʹ͍ͭͯ
7
Virtual private cloud (VPC) 8FCΞϓϦέʔγϣϯͷ"84ߏྫ 8 64&3 "VSPSB &MBTUJ$BDIF &$
"-# $PHOJUP Ϣʔβʔϓʔϧ ೝূτʔΫϯ Public subnet Private subnet Private subnet ηογϣϯ%# ηογϣϯͰ ϢʔβʔΛࣝผ
$PHOJUPʹ͓͍ͯϩάΠϯͱʁ *%τʔΫϯΛൃߦͯ͢͜͠ͱͰ͢ɻ 9 $PHOJUP Ϣʔβʔϓʔϧ Ϣʔβʔ ʢΫϥϝιଠʣ ࢲΫϥϝιଠͰ͢ʂ ͦͷূڌͷ*%ͱύεϫʔυ͜ΕͰ͢ʂ *%
ύεϫʔυ *%τʔΫϯ ͔֬ʹ͋ͳͨΫϥϝιଠͰ͢Ͷɻ ͋ͳͨͷͨΊʹൃߦͨ͠*%τʔΫϯΛ͠·͢ɻ
+85ͱݺΕΔܗࣜͰϢʔβʔใΛ͍࣋ͬͯ·͢ɻ { *%τʔΫϯͷಛ 10 $PHOJUP Ϣʔβʔϓʔϧ *%τʔΫϯ ɹൿີݤ *%τʔΫϯൃߦ࣌ʹ ൿີ伴Ͱॺ໊
ɹެ։ݤ w Ϣʔβʔ*%ʢTVCʣ w &NBJMʢFNBJMʣ w Ϣʔβʔϓʔϧ*%ʢJTTʣ w Ϣʔβʔ໊ ʢDPHOJUPVTFSOBNFʣ w ༗ޮظݶʢFYQʣFUD *%τʔΫϯͷվ͟Μ͕ແ͍͔ ެ։伴ͰݕূՄೳ
छྨͷೝূํ๏ αʔόʔ*%τʔΫϯΛ̎ͭ͢ͷํ๏͕͋Γ·͢ w "844%,Λར༻͢Δ w )PTUFE6*ͱ6TFSQPPMΤϯυϙΠϯτΛར༻͢Δ 11 $PHOJUP Ϣʔβʔϓʔϧ &$
*%τʔΫϯ ʁ Ͳ͏ͬͯ͢ʁ
"844%,Λར༻ͨ͠ೝূͷσϞ 12
"844%,ͷϝϦοτɾσϝϦοτ ϝϦοτ w ϩάΠϯը໘Λࣗ༝ʹ࡞ΕΔ σϝϦοτ w ϩάΠϯը໘ࣗͰ༻ҙ͠ͳ͚ΕͳΒͳ͍ w ֎෦*E1͑ͳ͍ 13
"844%,Λར༻ͨ͠ೝূͷྲྀΕᶃ 14 αʔόʔଆͰϩάΠϯը໘ͷੜ ϩάΠϯը໘ͷදࣔ
"844%,Λར༻ͨ͠ೝূͷྲྀΕᶄ 15 Ϣʔβʔ*%ύεϫʔυͷೖྗ 'PSNͰαʔόʔ1PTU
"844%,Λར༻ͨ͠ೝূͷྲྀΕᶅ 16 Ϣʔβʔ*%ύεϫʔυʹ ج͍ͮͨೝূϑϩʔͷ࣮ߦ ֤छτʔΫϯΛऔಘ
"844%,Λར༻ͨ͠ೝূͷྲྀΕᶆ 17 औಘ֤ͨ͠छτʔΫϯΛ ηογϣϯใͱඥ͚ͯ ηογϣϯ%#อଘ
"844%,Λར༻ͨ͠ೝূͷྲྀΕᶇ 18 ϩάΠϯޙը໘ͷදࣔ ηογϣϯ*%Λ$PPLJFʹอଘ
"844%,Λར༻ͨ͠ೝূͷྲྀΕᶈ 19 ηογϣϯ*%ͰϢʔβʔΛࣝผ ηογϣϯ%#͔ΒτʔΫϯΛऔಘͯ͠ Ϣʔβʔݻ༗ͷใΛදࣔ
ʲ࠶ܝʳ"844%,Λར༻ͨ͠ೝূͷྲྀΕᶅ 20 Ϣʔβʔ*%ύεϫʔυʹ ج͍ͮͨೝূϑϩʔͷ࣮ߦ ֤छτʔΫϯΛऔಘ ʮೝূϑϩʔͷ࣮ߦʯ ͱԿͳͷ͔ʁ
$PHOJUPͷೝূϑϩʔ 21 ೝূϑϩʔ໊ આ໌ "%.*/@64&3@1"44803%@"65) ʢچশɿ"%.*/@/0@431@"65)ʣ αʔόʔ͔Β࣮ߦ͢Δ͜ͱΛఆͨ͠ύεϫʔυΛૹͬͯೝূ͢Δೝূϑϩʔɻ ௨ৗΫϥΠΞϯτγʔΫϨοτΛ༻͢Δɻ 64&3@431@"65) ΫϥΠΞϯτʢ41"ʣ͔Β࣮ߦ͢Δ͜ͱΛఆͨ͠431ϓϩτίϧͰύεϫ
ʔυΛجʹͨ͠νϟϨϯδϨεϙϯεΛૹΓ͍͋ೝূ͢Δೝূϑϩʔɻ BNQMJGZKT͕σϑΥϧτͰ༻͢Δɻ 64&3@1"44803%@"65) ΫϥΠΞϯτʢ41"ʣ͔Β࣮ߦ͢Δ͜ͱΛఆͨ͠ύεϫʔυΛૹͬͯೝূ͢ Δೝূϑϩʔɻ ΫϥΠΞϯτʢ41"ʣ͔Βͷ࣮ߦ643@431@"65)ͷར༻͕ਪ͞ΕΔɻ $6450.@"65) ೝূ࣌ʹ-BNCEBϑΝϯΫγϣϯ͕τϦΨʔ͞ΕɺࣗͰೝূϑϩʔΛࣗ༝ʹ ઃఆͰ͖Δೝূϑϩʔɻ 3&'3&4)@50,&/@"65) ϦϑϨογϡτʔΫϯ͔Β৽͍͠τʔΫϯΛऔಘ͢Δೝূϑϩʔɻ
$PHOJUPͷೝূϑϩʔͱઃఆ 22 લड़ͷೝূϑϩʔΛ͏߹ɺ$PHOJUPͷઃఆͰ ༻ΛڐՄ͢Δඞཁ͕͋Γ·͢ɻ
ΞϓϦέʔγϣϯΫϥΠΞϯτͷγʔΫϨοτΩʔ 23 ΫϥΠΞϯτγʔΫϨοτ࡞࣌ͷΈੜͰ͖·͢ɻ
"%.*/@64&3@1"44803%@"65)ϑϩʔ 24 &$ $PHOJUP Ϣʔβʔϓʔϧ "ENJO*OJUJBUF"VUI TFDSFU@IBTI#BTF )."$@4)" $PHOJUP ϢʔβʔϓʔϧͷγʔΫϨοτΩʔ
ϩάΠϯϢʔβʔ໊ $PHOJUPϢʔβʔϓʔϧͷΫϥΠΞϯτ*% DPHOJUPBENJO*OJUJBUF"VUI \ "VUI'MPXb"%.*/@64&3@1"44803%@"65)` 6TFS1PPM*E$PHOJUPϢʔβʔϓʔϧͷϢʔβʔϓʔϧ*% $MJFOU*E$PHOJUPϢʔβʔϓʔϧͷΫϥΠΞϯτ*% "VUI1BSBNFUFST\ 64&3/".&ϩάΠϯϢʔβʔ໊ 1"44803%ύεϫʔυ 4&$3&5@)"4)TFDSFU@IBTI ^ ^ \ "VUIFOUJDBUJPO3FTVMU\ "DDFTT5PLFOʜ &YQJSFT*Oʜ 5PLFO5ZQFb#FBSFS` 3FGSFTI5PLFOʜ *E5PLFOʜ ^ ʜ ^ ֤छτʔΫϯ
۩ମతͳ4&$3&5@)"4)ͷܭࢉํ๏ QZUIPO 25 import hmac, hashlib, base64 def create_secret_hash(user_name, app_client_id,
secret_key): message = bytes(user_name + app_client_id, ‘utf-8’) key = bytes(secret_key, ‘utf-8’) digest = hmac.new(key, message, digestmod=hashlib.sha256).digest() secret_hash = base64.b64encode(digest).decode() return secret_hash user_name = <<ϩάΠϯϢʔβʔ໊>> app_client_id = <<CgonitoϢʔβʔϓʔϧͷΫϥΠΞϯτID>> secret_key = <<CognitoϢʔβʔϓʔϧͷΫϥΠΞϯτγʔΫϨοτ>> print('SECRET HASH:’,create_secret_hash(user_name, app_client_id, secret_key)) ʲࢀߟʳϢʔβʔΞΧϯτͷαΠϯΞοϓͱ֬ೝγʔΫϨοτϋογϡͷܭࢉ"NB[PO$PHOJUP IUUQTEPDTBXTBNB[PODPNKB@KQDPHOJUPMBUFTUEFWFMPQFSHVJEFTJHOJOHVQVTFSTJOZPVSBQQIUNM
)PTUFE6*Λར༻ͨ͠ೝূͷσϞ 26
)PTUFE6*ͷϝϦοτɾσϝϦοτ ϝϦοτ w ϩάΠϯը໘Λ࡞Βͳͯ͘ྑ͍ w αΠϯΞοϓը໘ɺύεϫʔυΛ͓ΕͰ͔͢ʁը໘͋Δ w ֎෦*E1͕͑Δ σϝϦοτ w
ϩάΠϯը໘ͷຊޠԽσβΠϯͷΧελϚΠζʹ੍ݶ͕͋Δ w ࣗલͰ࡞Δʹೝূϑϩʔ͕ෳࡶͰେม 27
)PTUFE6*Λར༻͢ΔͨΊͷઃఆ ϩάΠϯը໘Λ$PHOJUP͕ఏڙ͢ΔͨΊɺ $PHOJUPυϝΠϯͷ࡞͕ඞཁͰ͢ɻ ͜Ε͕)PTUFE6*ͷυϝΠϯʹͳΓ·͢ɻ 28
$PHOJUPͷ0"VUIϑϩʔ )PTUFE6*Λར༻͢Δ߹ɺ0"VUIϑϩʔͰτʔΫϯΛ औಘ͢Δ͜ͱʹͳΓ·͢ɻ 29 0"VUIϑϩʔ໊ આ໌ "VUIPSJ[BUJPODPEFHSBOU ʢೝূίʔυͷ༩ʣ جຊతʹ༻͕ਪ͞ΕΔϑϩʔɻ $PHOJUPͰαʔόʔΛհͯ͠τʔΫϯΛऔಘ͢Δ߹ɺ௨ৗΫϥΠΞϯ
τγʔΫϨοτΛઃఆͯ͠ར༻͢Δɻ 41"ͷΑ͏ʹϢʔβʔ͕τʔΫϯΛऔಘ͢Δ߹1,$&Λซ༻͢Δ͜ ͱ͕ਪ͞ΕΔɻ *NQMJDJUHSBOU ʢ҉ͷ༩ʣ "VUIPSJ[BUJPODPEFHSBOUͷ༻͕ෆՄೳͳ߹બ͢Δɻ "VUIPSJ[BUJPODPEFHSBOUͷ༻͕ਪ͞ΕΔɻ $MJFOUDSFEFOUJBMHSBOU ʢΫϥΠΞϯτೝূใʣ ϚγϯؒͷτʔΫϯަ͢Δࡍʹ༻͢Δೝূϑϩʔɻ ࠓճͷΑ͏ͳΤϯυϢʔβʔ͕ೝূʹ͏ϑϩʔͰͳ͍ɻ
$PHOJUPͷ0"VUIೝূϑϩʔͱઃఆ લड़ͷ0"VUIϑϩʔΛ͏߹ɺ $PHOJUPͷઃఆͰ༻ΛڐՄ͢Δඞཁ͕͋Γ·͢ɻ 30 ʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙ w ೝূίʔυ༩ "VUIPSJ[BUJPODPEFHSBOU
w ҉తͳ༩ *NQMJDJUHSBOU
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶃ 31 αʔόʔଆͰϩάΠϯը໘ͷੜ ϩάΠϯը໘ͷϦϯΫΛදࣔ
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶄ 32 0"VUIϑϩʔͷ։࢝ ೝՄΤϯυϙΠϯτϦμΠϨΫτ͔Βͷ )PTUFE6*ϦμΠϨΫτ
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶅ 33 Ϣʔβʔ*%ύεϫʔυʹΑΔϩάΠϯޙ $BMMCBDL63-ͷϦμΠϨΫτʹΑΓ &$ೝՄίʔυΛ͢
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶆ 34 ೝՄίʔυΛͱʹτʔΫϯΛऔಘ͢Δ
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶇ 35 औಘ֤ͨ͠छτʔΫϯΛ ηογϣϯใͱඥ͚ͯ ηογϣϯ%#อଘ
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶈ 36 ϩάΠϯޙը໘ͷදࣔ ηογϣϯ*%Λ$PPLJFʹอଘ
)PTUFE6*Λར༻ͨ͠ೝূͷྲྀΕᶉ 37 ηογϣϯ*%ͰϢʔβʔΛࣝผ ηογϣϯ%#͔ΒτʔΫϯΛऔಘͯ͠ Ϣʔβʔݻ༗ͷใΛදࣔ
)PTUFE6*Λར༻ͨ͠ೝূͰΘ͔Γʹ͍͘෦ 38 ೝূϦΫΤετΛͲ͏͢Ε͍͍ͷ͔ʁ ೝՄίʔυΛͲ͏ͬͯड͚औΕ͍͍ͷ͔ʁ τʔΫϯϦΫΤετΛͲ͏͢Ε͍͍ͷ͔ʁ
ೝূϦΫΤετ 39 PBVUIBVUIPSJ[FʢೝՄΤϯυϙΠϯτʣʹରͯ͠ ࣍ͷύϥϝʔλʔΛ(&5ϝιουͰૹ৴͠·͢ɻ ύϥϝʔλʔ໊ ࢦఆ͢Δ SFTQPOTF@UZQF "VUIPSJ[BUJPODPEFHSBOUͷ߹ɿDPEFʢೝՄίʔυΛฦ͢ʣ *NQMJDJUHSBOUͷ߹ɿUPLFOʢτʔΫϯΛฦ͢ʣ
DMJFOU@JE $PHOJUPϢʔβʔϓʔϧͷΞϓϦέʔγϣϯΫϥΠΞϯτ*% SFEJSFDU@VSJ ೝՄίʔυΛड͚औΔͨΊͷɺ 8FCΞϓϦͷϦμΠϨΫτઌ63-ʢྫɿIUUQTFYBNQMFDPNDBMMCBDLʣ TDPQF ೝূͰ*%τʔΫϯΛར༻͍ͨ͠߹ʮPQFOJEʯΛࢦఆ ͦͷଞ߲ʹ͍ͭͯຊࢿྉͰׂѪ͠·͢ ʲࢀߟʳೝՄΤϯυϙΠϯτ"NB[PO$PHOJUP IUUQTEPDTBXTBNB[PODPNKB@KQDPHOJUPMBUFTUEFWFMPQFSHVJEFBVUIPSJ[BUJPOFOEQPJOUIUNM
ೝূϦΫΤετͷͨΊͷ$PHOJUPͷઃఆ 40 ೝূϦΫΤετΛૹΔલʹɺ $PHOJUPͷΫϥΠΞϯτΛઃఆ͢Δඞཁ͕͋Γ·͢ɻ SFEJSFDU@VSJͱҰகͤ͞Δ ʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙʙ TDPQFͱҰகͤ͞Δ
DBMMCBDLʹΑΔೝՄίʔυͷड͚औΓ 41 8FCΞϓϦέʔγϣϯଆͷίʔϧόοΫ63-ʹɺ ΫΤϦύϥϝʔλʔͱͯ͠ɺೝՄίʔυ͕͞Ε·͢ɻ ࣍ͷ༷ͳܗͰίʔϧόοΫ63-ʹϦμΠϨΫτ͞Εɺ 8FCΞϓϦέʔγϣϯೝՄίʔυΛड͚औΓ·͢ɻ ྫɿhttps://example.com/callback?code=<<ೝՄίʔυ>>
τʔΫϯϦΫΤετ 42 PBVUIUPLFOʢτʔΫϯΤϯυϙΠϯτʣʹରͯ͠ 1045ϝιουͰૹ৴ͯ͠*%τʔΫϯΛऔಘ͠·͢ɻ ύϥϝʔλʔ໊ ࢦఆ͢Δ HSBOU@UZQF "VUIPSJ[BUJPODPEFHSBOUͷ߹ɿBVUIPSJ[BUJPO@DPEF ϦϑϨογϡτʔΫϯͰͷ࠶औಘͷ߹ɿSFGSFTI@UPLFO
$MJFOUDSFEFOUJBMHSBOUͷ߹ɿDMJFOU@DSFEFOUJBMT DMJFOU@JE $PHOJUPϢʔβʔϓʔϧͷΞϓϦέʔγϣϯΫϥΠΞϯτ*% DMJFOU@TFDSFU $PHOJUPϢʔβʔϓʔϧͷΞϓϦέʔγϣϯΫϥΠΞϯτγʔΫϨοτ SFEJSFDU@VSJ ೝՄΤϯυϙΠϯτͰ༻ͨ͠ͷͱಉ͡SFEJSFDU@VSJΛࢦఆ ʢྫɿIUUQTFYBNQMFDPNDBMMCBDLʣ DPEF ΫΤϦύϥϝʔλʔͰड͚औͬͨೝՄίʔυ ʲࢀߟʳτʔΫϯΤϯυϙΠϯτ"NB[PO$PHOJUP IUUQTEPDTBXTBNB[PODPNKB@KQDPHOJUPMBUFTUEFWFMPQFSHVJEFUPLFOFOEQPJOUIUNM
ຊͳΒTUBUF͍͍͚ͨͲׂѪ͠·͢ 43 ཁೝূϦΫΤετΛ࣮ߦͨ͠ਓͱ τʔΫϯϦΫΤετΛ࣮ߦ͍ͯ͠Δਓ͕ ಉҰਓ͔ʁͱ͍͏͜ͱΛνΣοΫͯ͠ɺ ηΩϡϦςΟΛߴΊ͍ͯΔɻ
֎෦*E1Λ͍͍ͨ߹ʁ 44 w ͍ΘΏΔ(PPHMFͰϩάΠϯΛ͍͍ͨ߹ Ͳ͏͢ΕΑ͍ʁ w )PTUFE6*Λར༻͢Ε͑·͢ʂ
(PPHMFͰϩάΠϯͷσϞ 45
(PPHMFͰϩάΠϯ͍ͨ࣌͠ͷઃఆ 46 w ৄ͘͠ฐࣾϒϩάΛݟ͍ͯͩ͘͞ w IUUQTEFWDMBTTNFUIPEKQBSUJDMFTBNB[PODPHOJUPHPPHMFTPDJBMTJHOJO
(PPHMFͰϩάΠϯͷೝূϑϩʔ 47 (PPHMFͰϩάΠϯ͢Δ෦͕ҧ͏͚ͩ ॏཁͳͷϒϥβͷϦμΠϨΫτΛ௨ͯ͠ (PPHMFͱ$PHOJUP͕ύϥϝʔλʔΛ ΓͱΓ͍ͯ͠Δͱ͍͏͜ͱ ʲࢀߟʳ)PTUFE6*Λར༻ͨ͠ೝূͷϑϩʔ
ϩάΠϯը໘ࣗ࡞ͭͭ͠(PPHMFϩάΠϯͰ͖Δʁ 48 w ϩάΠϯը໘Λຊޠʹͭͭ͠ (PPHMFͰϩάΠϯͰ͖ͳ͍ͷʁ w Ͱ͖·͢ʂ "844%,ͱ)PTUFE6*Λ྆ํ͏
ϋΠϒϦουߏʹ͍ͯͩ͘͠͞ɻ
ࣗ࡞ϩάΠϯը໘Ͱ(PPHMFϩάΠϯ͢ΔσϞ 49
)PTUFE6*Λܦ༝͠ͳ͚ΕͳΒͳ͍ʁ 50 w )PTUFE6*Λܦ༝ͤͣɺ(PPHMFϩάΠϯը໘ϦμΠ ϨΫτ͢ΔͨΊͷΦϓγϣϯ͕͋Γ·͢ɻ w ೝՄΤϯυϙΠϯτͷύϥϝʔλʔʹ JEFOUJUZ@QSPWJEFS(PPHMFΛ͚͍ͭͯͩ͘͞ɻ ʲࢀߟʳೝՄΤϯυϙΠϯτ"NB[PO$PHOJUP IUUQTEPDTBXTBNB[PODPNKB@KQDPHOJUPMBUFTUEFWFMPQFSHVJEFBVUIPSJ[BUJPOFOEQPJOUIUNM
)PTUFE6*Λলུͯ͠(PPHMFϩάΠϯ͢ΔσϞ 51
ೝূϑϩʔͷ࣮ɺͬͱ؆୯ʹͳΒͳ͍ʁ 52 w "84ͱͯ͠ެࣜϥΠϒϥϦ͋Γ·ͤΜɻ w 41"ͳΒBNQMJGZKT͕͋Γ·͢ɻ w αʔυύʔςΟͷϥΠϒϥϦΛ୳͍ͯͩ͘͠͞ɻ w ͍Ζ͍Ζ͋Γ·͕͢ɺͦͷϥΠϒϥϦΛධՁͰ͖Δ
ఔʹ$PHOJUPͷೝূϑϩʔͷཧղඞཁͩͱ ࢥͬͯ·͢ɻ
·ͱΊ 53 w $PHOJUPΛ8FCΞϓϦέʔγϣϯͷೝূͰ͏ʹ w "844%,ɼ)PTUFE6*ͱ̎छྨͷϩάΠϯํ๏͕͋Γ·͢ w ϩάΠϯํ๏ʹ͋ΘͤͨೝূϑϩʔΛཧղ্ͨ͠Ͱͷ࣮͕ඞ ཁͰ͢ w
(PPHMFϩάΠϯɺ֎෦*E1Λ͍͍ͨ߹ɺ )PTUFE6*Λར༻͢Δೝূϑϩʔͷ࣮͕ඞཁͰ͢ɻ ͬͯͳ͍Α͏ʹݟ͍͑ͯͬͯ·͢ɻ