Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CognitoでWebアプリケーション(not SPA)に ログインさせたい時、何を作らなくて...
Search
Kitano Yuichi
July 14, 2023
Technology
3.9k
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
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
120
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
1k
SPAとWebアプリケーションでCognitoの使い方はどう変わるのか? / How do we use cognito with SPA and web applications?
kitano_yuichi
0
7.2k
AWS Glueを使ってRDSからS3+Athena環境を作ってみよう / Let's create Athena from RDS using AWS Glue
kitano_yuichi
1
9.2k
オンプレとVPCをつなぐ環境のUpdate/re:Cap connecting on-premises and vpc
kitano_yuichi
0
1.7k
Other Decks in Technology
See All in Technology
Adversary Infrastructure Hunting101
disconinja
0
110
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
1.1k
20年間 SNS サービス「GREE」 を支えた技術の刷新と、長期運用サービスの Kubernetes へのリアーキテクト
gree_tech
PRO
0
120
From Developer Experience to Agentic Experience: The Next Evolution of APIs
benjagm
0
120
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
140
価値について
gree_tech
PRO
0
160
freeeにおける AI を用いた ブラウザ動作確認の自動化の取り組み
freee
PRO
0
180
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
1.1k
顧客価値を追いかけたら、プライシングにたどり着いた
sansantech
PRO
2
830
日本AIベンチャーレポート2026
kentarofujii
0
170
Metadata - Section 2: Simple Metadata & Meta Tags
mohab1
0
130
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
240
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
How to make the Groovebox
asonas
2
2.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
280
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
HDC tutorial
michielstock
2
970
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
640
The agentic SEO stack - context over prompts
schlessera
0
980
Are puppies a ranking factor?
jonoalderson
2
4.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
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*Λར༻͢Δೝূϑϩʔͷ࣮͕ඞཁͰ͢ɻ ͬͯͳ͍Α͏ʹݟ͍͑ͯͬͯ·͢ɻ