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
Web Frontend Performance Tuning TIPS *n
Search
Ayumu Sato
January 25, 2014
Programming
6
1.7k
Web Frontend Performance Tuning TIPS *n
Frontrend in Fukuoka
http://frontendfrogs.org/frontrend/
で使用したスライドです。本編45分。
Ayumu Sato
January 25, 2014
Tweet
Share
More Decks by Ayumu Sato
See All by Ayumu Sato
Web 開発の長距離走と持続可能性 - TechFeed Experts Night#31 〜 フロントエンドアーキテクチャの現状と未来
ahomu
1
180
控えめな App Router と持続可能な開発 - PWA Night vol.59
ahomu
11
2.8k
GPT 生成物の評価、運用 toC 企画でのハードルと勘所
ahomu
0
280
副業をきっかけに 切り拓くキャリア形成
ahomu
1
130
Webフロントエンドと アーキテクチャ事情の持論を喋る
ahomu
2
1.7k
SPA/MPA 議論の俯瞰と 現代における設計のポイント - #tfcon 2022 フロントエンド設計
ahomu
4
3.6k
#TECHPLAY Talk - 理想的な Web のため MUST 駆動で主語が大きくなったキャリア
ahomu
0
260
最近の Web パフォーマンス改善について知っておきたいコト
ahomu
50
20k
Web フロントエンドで大切なことはすべて Audits が教えてくれた
ahomu
1
610
Other Decks in Programming
See All in Programming
バックエンドNode.js × フロントエンドDeno で開発して得られた知見
ayame113
4
1.2k
本当だってば!俺もTRICK 2022に入賞してたんだってば!
jinroq
0
120
‘무차별 LGTM~👍’만 외치던 우리가 ‘고봉밥 코드 리뷰’를?
hannah0731
0
490
DenoでOpenTelemetryに入門する
yotahada3
2
280
AWS CDKにおけるL2 Constructの仕組み / aws-cdk-l2-construct
gotok365
4
910
複雑なフォームと複雑な状態管理にどう向き合うか / #newt_techtalk vol. 15
izumin5210
4
2.4k
php-fpm がリクエスト処理する仕組みを追う / Tracing-How-php-fpm-Handles-Requests
shin1x1
4
690
아직도 SOLID 를 '글'로만 알고 계신가요?
sh1mj1
0
350
CQRS+ES勉強会#1
rechellatek
0
370
技術好きなエンジニアが "リーダーへの進化" によって得たものと失ったもの
pospome
5
1.3k
Generative AI for Beginners .NETの紹介
tomokusaba
1
270
OpenTelemetryを活用したObservability入門 / Introduction to Observability with OpenTelemetry
seike460
PRO
0
180
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.1k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
Code Reviewing Like a Champion
maltzj
521
39k
Building Applications with DynamoDB
mza
94
6.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7.1k
Fireside Chat
paigeccino
37
3.3k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
The Pragmatic Product Professional
lauravandoore
33
6.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
50
2.3k
Transcript
1FSGPSNBODF 5VOJOH5*14 O 'SPOUSFOEJO'VLVPLB "ZVNV4BUP!BIPNV ! GSPOUSFOE@GGB
ࠤ౻า ͞ͱ͏ ͋ΏΉ
ϋϯυϧωʔϜ BIPNV !
IUUQBIPNV ڵຯͬͯͩͬͨ͘͞Βθώ
ຊ
1BHF4QFFE PS :4MPX ීஈɺݟͯΔํʁ
͋Δ੍࡞ͱ͓٬͞Μͱ ͔͍͍ͬ͜αΠτ
" # ͔͍͍ͬ͜ αΠτͭ͘ΕͨΘʔ ! ͓٬͞ΜେຬͩΘʔ ੍࡞ऀ
$ # ࠓɺग़ઌͳΜͰ͚͢Ͳ αΠτ։͚ͳ͘ͳ͍Ͱ͔͢ʁ ͓٬͔Βి
" # ͋Εʔ ΅͘ͷ1$Ͱ։͚·͢Αʁ ! ͍͊ɺ͔͍͍ͬ͜ͳ͊ ੍࡞ऀ
$ # ͦ͏Ͱ͔͢ ! ͱ͜ΖͰίϯόʔδϣϯ ্͕Βͳ͍ΜͰ͚͢Ͳ ͳΜͱ͔ͳΓ·ͤΜʁ ͓٬͔Βి
" # ͑ʔɺࠔͬͨͳ͊ ! ͡Ό͋ͬͱ ը૾ͱ͔ͬͯ ͔ͬ͜Α͘͠·͠ΐ͏ ੍࡞ऀ
$ # Θ͔Γ·ͨ͠ ! ɾɾɾ ͓٬͔Βి
ϞόΠϧͰॏͯ͘։͚ͳ͍ ։͍ͯεΫϩʔϧ͕ॏ͍ɾΧΫΧΫ Ϣʔβʔʹ͞Εͯ͠·͏ ίϯόʔδϣϯʹࢸΒͳ͍
ʊਓਓਓਓਓਓਓਓਓʊ ʼɹಥવͷܖऴྃɹʻ ʉ:?:?:?:?:?:?:?:ʉ
ͦ͏ͳΒͳ͍ͨΊʹ ͓͖͍ͬͯͨ5*14Λ հ͠·͢
ύϑΥʔϚϯεͷಈػ ߟ͑ํͱಋೖ 5JQT O ωοτϫʔΫίετ ϨϯμϦϯά εΫϦϓτॲཧ ΠϯλϥΫγϣϯ ·ͱΊ
*OUSPEVDUJPO ߟ͑ํͱಋೖ
'SPOUFOE 1FSGPSNBODF ϑϩϯτΤϯυͱύϑΥʔϚϯεͷؔ
IUUQXXXTUFWFTPVEFSTDPNCMPHUIFQFSGPSNBODFHPMEFOSVMF
4UFWF 4PVEFST ʠ PG UIF FOEVTFS SFTQPOTF UJNF JT TQFOU
PO UIF GSPOUFOEʡ
None
▻▻▻▻▻ & ' #BDLFOE %# 8FC"QQ ( ) 'SPOUFOE #SPXTFS
* )5.-
& ' #BDLFOE %# 8FC"QQ ( ) 'SPOUFOE #SPXTFS *
)5.- MJOLISFGGPPDTTʜ TDSJQUTSDCBSKTʜ JNHTSDRVYKQHʜ
& ' #BDLFOE %# 8FC"QQ ( ) 'SPOUFOE #SPXTFS *
)5.- ◅◅◅◅◅ (&5GPPDTT (&5CBSKT (&5RVYKQH ◅◅◅◅◅ ◅◅◅◅◅
& ' #BDLFOE %# 8FC"QQ ( ) 'SPOUFOE #SPXTFS *
)5.- ▻▻▻▻▻ ▻▻▻▻▻ ▻▻▻▻▻ * $44 * +4 , +1(
& ' #BDLFOE %# 8FC"QQ ( ) 'SPOUFOE #SPXTFS *
)5.- ▻▻▻▻▻ ▻▻▻▻▻ ▻▻▻▻▻ * $44 * +4 , +1( ϑϩϯτΤϯυͷ
Ћ ͏ͻͱͭŋŋŋ
*OUFSBDUJPO69 ϢʔβʔͱΠϯλʔϑΣʔεͷର
εΫϩʔϧ͕͍ ΧΫΧΫ͢ΔαΠτ ␡
ϘλϯΛԡͯ͠ Ԡ͕ͳ͍αΠτ ␡
ݟӫ͑͢Δ͚Ͳ ΠϥΠϥ͢ΔαΠτ ␡
༻ײɾ৺Α͞ ٛͷύϑΥʔϚϯε ✓
ϑϩϯτͷͰ վળͰ͖Δ͜ͱ͢Δ ✓
5*14ΛूΊͨཧ༝
IUUQTEFWFMPQFSTHPPHMFDPNTQFFEEPDTJOTJHIUTSVMFT
IUUQEFWFMPQFSZBIPPDPNQFSGPSNBODFSVMFTIUNM
͙͢ʹ͑ͯ ཁΛ͓͍͑͢͞
5*14ˠཧ༝ΛΔ
࣌ͱ߹ʹΑͬͯ அͰ͖ΔΑ͏ʹ͢Δ
/FUXPSLJOH O ωοτϫʔΫίετ
3FEVDF 3FRVFTUT4J[F ϦΫΤετͷͱϑΝΠϧαΠζΛݮΒ͢
"CPWFUIFGPME ϑΝʔετϏϡʔΛ͘ݟͤΔ
✓ ❓ ⚠ ը૾Ϧιʔεඞͣ ࠷దԽͯ͠αΠζΛ͑Δ ը࣭Λอͪͳ͕ΒσʔλαΠζͷѹॖޮΛ ߴΊͨΓɺ༨ͳใΛআͨ͠Γ͢Δ ! ! ίετɾߴϦλʔϯͳରࡦͳͷͰ
͜Ε͕Εͯͳ͍ͱɺ͔ͳΓϞολΠͳ͍
✓ ❓ ⚠ ςΩετϦιʔεʹ ࠷খԽΛద༻͢Δ ͍ΘΏΔ.JOJGZॲཧɹεϖʔεվߦͳͲΛ औΓআ͍ͯɺϑΝΠϧαΠζΛখ͘͢͞Δ ! ! ߋ৽͢ΔͨͼʹखಈͰΒͳ͍
ඞͣπʔϧΛͬͯࣗಈԽ͢Δ
IUUQBMQIBQJYFMTDPNQSFQSPT
IUUQJODJEFOUDPNDPEFLJU
IUUQHSVOUKTDPN
✓ ❓ ⚠ $444QSJUFTͱ %BUB63*Λ༗ޮʹ͏ ը૾Λຕʹ·ͱΊͨΓɺ$44ͷதʹจࣈྻͰ ຒΊࠐΉ͜ͱͰɺϦΫΤετΛઅͰ͖Δ ! ! ҆,#ҎͰ͓͞·ΔΑ͏ʹͯ͠
ͻͱͭͷϑΝΠϧΛେ͖͗͘͢͠ͳ͍Α͏ҙ
%BUB63* $444QSJUFT , , , , ,, ,,, , ,
, , , , , , , , , , , , , , * $44 , , , , , , div { width: 100px; height: 50px; border-radius: 3px; … .. .
⬅ όΠφϦσʔλΛ จࣈྻͱͯ͠ຒΊࠐΉ * $44 background-image: url(“data:image/ jpeg;base64,/9j4AAQSkZJRgABAQAA AQABAAD2wBDAAMCAggICAgICAgI CAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAoICAgICQoKCAg MDAoIDAgICQj2wBDAQMEBAYFBgo GBgoNDAwNDQ0NDQwMDQ0MDA0 MDQ0MDAwMDQwMDAwMDAwMDA wMDAwMDAwMDAwMDAwMDAwMD AwMDAzwAARCADIAMgDAREAAhEB AxEB8QAHQAAAgEFAQEAAAAAAAA AAAAAAQIAAwQFBgcICfEAEUQAAIB AgMEBwMJBgUDBQAAAAECAAMRB BIhBQYxQQcIE1FhcZEiMoEjQlJicqGx wfAUM4KissIVNFPR8WOSoyRDc4Ph8 QAGwEAAgIDAQAAAAAAAAAAAAAA AAECAwQFBgf/xAAvEQACAgEEAg…
͠.#͋Δͱʜ .#ಡΈࠐ·ΕΔ·Ͱ ελΠϧ͕ద༻͞Εͳ͍ %BUB63*ͷը૾දࣔ͞Εͳ͍ ʘ ?P? ʗ * $44 ,
, , , , , div { width: 100px; height: 50px; border-radius: 3px; … .. .
✓ ❓ ⚠ ͯ͢ͷը૾Λ3FUJOB͚ʹ YͰ༻ҙ͠ͳͯ͘Α͍ େ͖͘ݟͤͳ͍͍ͯ͘αϜωΠϧը૾ ͦͦYͰेͳ͜ͱ͕ଟ͍ ! ! ςΩετը૾ΩʔϏδϡΞϧ
͕͢͞ʹY͡Όͳ͍ͱਏ͍
✓ ❓ ⚠ &YQJSFTͳͲͷϔομʔͱ H[JQѹॖΛඞͣద༻͢Δ &YQJSFTϔομʔͰΩϟογϡΛ׆༻ͯ͠ H[JQͷઃఆͰసૹྔΛ͓͑͞Δ ! ! ඇৗʹॳาత͕ͩɺݟಀͯ͠͠·͏ͱ
μϝʔδ͕େ͖͍ͷͰඞͣνΣοΫ͍ͨ͠
IUUQEFWFMPQFSTHPPHMFDPNTQFFEQBHFTQFFEJOTJHIUT
XXXHPPHMFDPNBOBMZUJDT
IUUQXXXXFCQBHFUFTUPSH
3FOEFSJOH O ϨϯμϦϯά
"WPJE$PNQMFYJUJFT ෳࡶʹ͠ͳ͍
✓ ❓ ⚠ ϨΠΞτɾ࠶ஔ͕ Εͯൃੜ͠ͳ͍Α͏ʹ͢Δ Ϩεϙϯγϒͳը૾ղ૾͝ͱʹ IFJHIU͚ͩͰܾΊΕΨίͬͯͳΒͳ͍ ! ! ྫ͑JNHͷXJEUI
IFJHIU͕ͳ͍ͱ ը૾ಡΈࠐΈ࣌ʹΨΫͬͱͳͬͯ͠·͏
✓ ❓ ⚠ ߴίετͳ$44 ৻ॏʹऔΓѻ͏ CPYTIBEPXCPSEFSSBEJVTͳͲͷ ͍ΘΏΔ$44ඳըίετ͕͘ͳ͍ ! ! Έ߹ΘͤΔͱɺඳըύε͕ෳࡶʹͳΔͷͰ
ಛʹඳըύϑΥʔϚϯε͕ྼԽ͍͢͠
# ͜ΕΛͷ ج४ͱ͢Δ
#
#
✓ ❓ ⚠ (16ΞΫηϥϨʔγϣϯ͕ ద༻͞ΕΔ$44Λར༻͢Δ USBOTMBUFEͳͲ(16ΞΫηϥϨʔγϣϯ͕ ద༻͞ΕΔ$44Λ͏ͱΒ͔ʹಈ͘ ! ! ͓·͡ͳ͍ͱ͍ͯ͗͢͠Δͱ
Ωπ͍ͬ͠ฦ͕͋͠Δ
None
None
IUUQTEFWFMPQFSTHPPHMFDPNFWFOUTJPTFTTJPOT
$PNQPTJUJOH-BZFS PO(16 /PSNBM-BZFS FWFSZ$16
(165FYUVSF # ߋ৽͕͋Ε ඳըσʔλΛ (16ʹ࠶సૹ # ඳըσʔλΛ Ωʔϓ͠ͱ͍ͯ (16্Ͱ߹
◅ ◅ ◅ # ͍ൣғΛ ࠶ඳը͠ͳ͍͔Β εϜʔζ # ϨΠϠʔؙ͝ͱΛ ૢ࡞ͤ͞Δ͚ͩͰ
αΫαΫҠಈ
4DSJQUJOH O εΫϦϓτॲཧ
5IJOL $PNQVUJOH ϒϥβͷؾ࣋ͪʹͳͬͯॻ͘
✓ ❓ ⚠ K2VFSZͷηϨΫλΛ ͖ͪΜͱΩϟογϡ͢Δ K2VFSZʹηϨΫλΛͯ͠ཁૉΛબ͢Δͱ͖ ୳ࡧ݁ՌΛฦ͢ͷͰɺͦΕΛΩϟογϡ͢Δ ! ! Ωϟογϡ͠ͳ͍ͱɺຖճηϨΫλΛΒͤͯ
ཁૉΛ୳ࡧ͍ͯ͠Δ͜ͱʹͳͬͯ͠·͏
! $(‘#list’).append(‘<li>Item1</li>’); $(‘#list’).append(‘<li>Item2</li>’); $(‘#list’).append(‘<li>Item3</li>’); $(‘#list’).append(‘<li>Item4</li>’); $(‘#list’).append(‘<li>Item5</li>’); ! <ul id=“list”></ul>
var $list = $(‘#list’); $list.append(‘<li>Item1</li>’); $list.append(‘<li>Item2</li>’); $list.append(‘<li>Item3</li>’); $list.append(‘<li>Item4</li>’); $list.append(‘<li>Item5</li>’); !
<ul id=“list”></ul>
var $list = $(‘#list’); $list.append(‘<li>Item1</li>’); $list.append(‘<li>Item2</li>’); $list.append(‘<li>Item3</li>’); $list.append(‘<li>Item4</li>’); $list.append(‘<li>Item5</li>’); !
<ul id=“list”></ul>
var $list = $(‘#list’); // ͪΐͬͱۃͰ͕͢… $list.append(‘<li>Item1</li>’ + ’<li>Item2</li>’ +
‘<li>Item3</li>’ + ‘<li>Item4</li>’ + ‘<li>Item5</li>’); ! <ul id=“list”></ul>
✓ ❓ ⚠ Πϕϯτ%FMFHBUFΛ ͬͯ·ͱΊΔ ࢁ͋Δɾಈతʹ૿͑ΔՄೳੑ͕͋Δཁૉͷ Πϕϯτɺ%FMFHBUF ҕৡ Λ͏ !
ඦηϧ͋ΔΤΫηϧ෩ͳϑϩϯτ࣮Λ૾ʜ
// ͨ͘͞Μͷ TD ɺݸผʹΠϕϯτΛషΔ $(‘table td’).on(‘click’, function() { // do
something }); ! // ͻͱͭͷ table ʹΠϕϯτΛషΔ $(‘table’).on(‘click’, ‘td’, function() { // do something });
// ͨ͘͞Μͷ TD ɺݸผʹΠϕϯτΛషΔ $(‘table td’).on(‘click’, function() { // do
something }); ! ! <table> <tr> <td>ηϧ1</td> <td>ηϧ2</td> <td>ηϧ3</td> </tr> </table> # 2
// ͻͱͭͷ TABLE ʹΠϕϯτΛషΔ $(‘table’).on(‘click’, ‘td’, function() { // do
something }); ! ! <table> <tr> <td>ηϧ1</td> <td>ηϧ2</td> <td>ηϧ3</td> <tr> </table> # ! 2
✓ ❓ ⚠ TDSPMM SFTJ[FͷΠϕϯτΛ ؒҾ͍ͯॲཧ͢Δ UISPUUMF ɹ࿈ଓݺͼग़͠ΛOϛϦඵͷपظʹؒҾ͍࣮ͯߦ ! EFCPVODF
ɹOϛϦඵҎͷ࿈ଓݺͼग़͠Λແࢹͯ͠ ɹݺͼग़͕͓͠͞·ͬͨΒ࣮ߦ
/* Underscore.JS */ ! // scroll ʹ߹ΘͤͯҐஔΛߋ৽͢ΔԿ͔ var throttled =
_.throttle(updatePos, 100); $(window).scroll(throttled); ! // resize ʹԠͯ͠ϨΠΞτ͢͠Կ͔ var lazyLayout = _.debounce(calcLayout,300); $(window).resize(lazyLayout);
UISPUUMFNT EFCPVODFNT NT͝ͱʹൃՐ͢ΔΠϕϯτ
✓ ❓ ⚠ ҙຯͷബ͍ϕϯνϚʔΫʹ Θ͞Εͳ͍ɾؾʹ͠ͳ͍ ࠣࡉ͗͢ΔύϑΥʔϚϯεΑΓ ه๏ͷ౷ҰੑɾՄಡੑ͕༏ઌ͞ΕΔ͖ ! ! ͍ɾ͍ͷϕϯνϚʔΩϯάඇৗʹେࣄ
͚ͲɺͦͷॲཧΛίʔϧ͢ΔසΛߟ͑Δ
✓ ❓ ⚠ ϝϞϦϦʔΫͷճආ +4Τϯδϯͷ࠷దԽߟྀ <&>.*/ #SPXTFS$PNQVUJOH4USVDUVSF ! ৄ͘͠ɺ͜ͷ࣍ͷ࣍ͷηογϣϯͰʂ !
Ͱͪΐͬͱ͚ͩʜ
IUUQXXXIUNMSPDLTDPNFOUVUPSJBMTQFSGPSNBODFNZTUFSZ
function updateSprites(dt) { for (var sprite in sprites) { sprite.position.x
+= 0.5 * dt; // 20 more lines of arithmetic computation. } }
function updateSprites(dt) { for (var sprite in sprites) { updateSprite(sprite,
dt); } } ! function updateSprite(sprite, dt) { sprite.position.x += 0.5 * dt; // 20 more lines of arithmetic computation. } ϧʔϓͷॲཧΛผؔʹ͢Δ͜ͱͰ ࠷దԽ͕ద༻͞ΕΔΑ͏ʹͳͬͨ Β͍͠
*OUFSBDUJPO O ΠϯλϥΫγϣϯ
JO.PCJMF ओʹϞόΠϧܥͷ
✓ ❓ ⚠ Ԇϩʔυ࣌ͷ ղ૾ϓϨʔεϗϧμʔ σϑΥϧτͰαΠζٯࢉ,#ͷղ૾ εΫϩʔϧԆͰຊདྷͷߴղ૾ʹ͔͑͞͠ ! ! ωοτϫʔΫతʹϦΫΤετͪΖΜ૿͑Δ
͚ͲɺମײΛ্͛ΒΕΔͱ͜Ͱ͏͖
✓ ❓ ⚠ ϩʔσΟϯάදࣔ NTͬͯग़͢ ͦΕҎԼͰ͋ΕɺϩʔσΟϯάද͕ࣔ໌໓ͯ͠ ͠·͏͚ͩͰٯʹݟӫ͕͑ྑ͘ͳ͍ ͜͏͍͏εϐφʔܥͷͭ
var timer; ! $(document).on(‘ajaxSend’, function(){ timer = setTimeout(function() { $(‘#loading’).show();
}, 300); }); ! $(document).on(‘ajaxComplete’, function(){ clearTimeout(timer); $(‘#loading').hide(); });
✓ ❓ ⚠ λοϓ࣌ͷঢ়ଶදݱΛ పఈతʹ͚ͭΔ ϒϥβඪ४ͷUBQIJHIMJHIUDPMPSͰΑ͍͠ UPVDITUBSU_FOEͰDMBTTΛணͯ͠Α͍ ! ! UBQIJHIMJHIUDPMPSΛSHCB
ʹ ઃఆͨ͠··ແԠͳ6*ʹ͢Δͷ࠷ѱ
// λον։࢝࣌ʹɺis-activeΫϥεΛ༩͢Δ $(document).on('touchstart','a',function() { $(this).addClass('is-active'); }); ! // λονऴྃ࣌ʹɺis-activeΫϥεΛղআ͢Δ $(document).on('touchend',
'a', function() { $(this).removeClass('is-active'); }); ! // ݫີʹɺUIͷछྨʹΑͬͯɺΫϥεணͷͱ͖ʹ // σΟϨΠΛ͔͚ͯνϡʔχϯά͠ͳ͍ͱࣗવʹͳΒͳ͍
✓ ❓ ⚠ ը໘શମͷτϥϯδγϣϯ ίεύѱ͍ͷͰආ͚Δ ΕͰ͖Δ͕ɺ͍ൣғΛαϙʔτ͢Δʹ ݕূίετɾෆ۩߹ରԠίετ͕ߴ͍ ! ! K2VFSZ.PCJMFͰ͢ΒͰຯʹͳΓ
ͷσϞߋʹফۃతͳײ͡ʹͳ͍ͬͯΔ
✓ ❓ ⚠ ϞόΠϧʹ͓͚ΔDMJDLͷ NTσΟϨΠΛΔ ϞόΠϧϒϥβμϒϧλοϓͷఆͷͨΊ λοϓ͔ͯ͠ΒDMJDLͷൃੜ͕NTԆ͢Δ ! ϥΠϒϥϦΛͬͯվળ͢Δ͜ͱͰ͖Δ ୯ͳΔUPVDITUBSU
UPVDIFOEͰաහ͗͢Δ
IUUQVQEBUFTIUNMSPDLTDPNNTUBQEFMBZHPOFBXBZ
IUUQXXXTJUFQPJOUDPNXBZTQSFWFOUNTDMJDLEFMBZNPCJMFEFWJDFT
IUUQTEFWFMPQFSTHPPHMFDPNTQFFEQBHFTQFFEJOTJHIUT
λοϓαΠζ͕খ͍͞ͱ͍͏ܯࠂ
$PODMVTJPO ·ͱΊ
ΤϯδχΞϦϯά ͇ ΠϯλϥΫγϣϯ
ΤϯδχΞϦϯάͷ ͯ͢ΛΔ͜ͱ ͍͠
ΠϯλϥΫγϣϯͷ ͯ͢Λݕূ͢Δ͜ͱ ͍͠
྆ऀͷྑ͍όϥϯεΛ ୳ΔϑϩϯτΤϯυ
5IBOLT IUUQBIPNV !BIPNV HJUIVCDPNBIPNV ! ⌂
1IPUPTCZʜ ΫϨϤϯIUUQXXXGMJDLSDPNQIPUPTMBGGZL *OUSPEVDUJPOIUUQXXXGMJDLSDPNQIPUPTKJOUFSXBT /FUXPSLJOHIUUQXXXGMJDLSDPNQIPUPTLFXM 3FOEFSJOHIUUQXXXGMJDLSDPNQIPUPTKEIBODPDL 4DSJQUJOHIUUQXXXGMJDLSDPNQIPUPTOZVIVIVV *OUBSBDUJPOIUUQXXXGMJDLSDPNQIPUPTTUPLFENFEJBQIPUPHSBQIZ $PODMVTJPOIUUQXXXGMJDLSDPNQIPUPTTBBE