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
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
1
710
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-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
260
紙 to デジタル
ichien178
0
230
アクセスキーが漏れた日にやるべきこと- 無効化の先にある本当の対応
kazzpapa3
0
340
アクセスキー流出時の対応で再認識した攻撃側と防御側の非対称性について
kazzpapa3
0
380
Digitization部 紹介資料
sansan33
PRO
2
7.7k
OAuth SPIFFE Client Authentication(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
320
internal/testlog で遊ぼう
rokuosan
0
250
AI駆動開発を組織で促すために
lycorptech_jp
PRO
6
7.4k
信頼性はSREだけのものじゃない
hkawaras
0
170
サービス内で複数のOP・ASを連鎖させる(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
320
【書籍出版記念】 10周回って、エージェント開発は RAGがすべてだった。〜RAGの歴史と開発現場で見えた実践知〜
akiratameto
21
8k
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
560
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
The Limits of Empathy - UXLibs8
cassininazir
1
620
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.5k
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Building Adaptive Systems
keathley
44
3.2k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
450
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*Λར༻͢Δೝূϑϩʔͷ࣮͕ඞཁͰ͢ɻ ͬͯͳ͍Α͏ʹݟ͍͑ͯͬͯ·͢ɻ