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
今から始めるES2015
Search
Sota Sugiura
June 16, 2016
Programming
0
530
今から始めるES2015
社内勉強会にて発表した今からES2015を始める人のための資料です。
Sota Sugiura
June 16, 2016
Tweet
Share
More Decks by Sota Sugiura
See All by Sota Sugiura
内製したSlack Appで頑張るIncident Response@Waroom Meetup #1 / Incident Response with Slack App in 10X
sota1235
0
1.2k
20220926_セキュリティチームの今_for_Drs._Prime_公開用.pdf
sota1235
0
83
再発防止策を考える技術 / #phpconsen
sota1235
10
3.7k
How to choose the best npm module for your team?
sota1235
9
550
Realtime Database for high traffic production application
sota1235
7
3.9k
Road to migrate JP Web as a microservice
sota1235
4
1.5k
インターフェース再入門 / Think Interface again
sota1235
6
10k
再発防止策を考える技術 #phpconfuk_rej
sota1235
1
1.1k
Update around Firebase #io18
sota1235
3
4.3k
Other Decks in Programming
See All in Programming
.NET 9アプリをCGIとして レンタルサーバーで動かす
mayuki
1
770
Discord Bot with AI -for English learners-
xin9le
1
120
layerx_20241129.pdf
kyoheig3
2
290
これでLambdaが不要に?!Step FunctionsのJSONata対応について
iwatatomoya
2
3.6k
事業成長を爆速で進めてきたプロダクトエンジニアたちの成功談・失敗談
nealle
3
1.4k
useSyncExternalStoreを使いまくる
ssssota
6
1k
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
3
960
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
190
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
270
複雑な仕様に立ち向かうアーキテクチャ
myohei
0
170
たのしいparse.y
ydah
3
120
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Visualization
eitanlees
146
15k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
94
A better future with KSS
kneath
238
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Docker and Python
trallard
41
3.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
How GitHub (no longer) Works
holman
311
140k
It's Worth the Effort
3n
183
28k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Why Our Code Smells
bkeepers
PRO
335
57k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Transcript
ͪΐͬͱͬͯͶ٩ ˊᗜˋ و
ࠓ͔Β࢝ΊΔ&4 !TPUB
ࣗݾհ w 4PUB4VHJVSB !TPUB w ৽ଔ w ࣾͰओʹ͓͘Έͯ͠·͢ w
ͨ·ʹ1)1ͱ+4ॻ͖·͢
ຊͷΰʔϧ
&4ΛΔ
ͦͯ͠໌͔Βॻ͘
ൃදΛௌ͘લͷ༻ޠू w &4ʜ&$."4DSJQU w +4ʜ+BWB4DSJQU
"HFOEB w )JTUPSZPG&$."4DSJQU w "CPVU&4 w )PXUPXSJUF&4 w 5SZXSJUJOH&4
)JTUPSZPG&$."4DSJQU
ࠓ&4ͷ͓ษڧձ &4ͱ+4ͷྺ࢙Λ ͬ͘͟ΓৼΓฦΔ
w &$."4DSJQU*OUFSOBUJPOBMͷఆΊΔ +BWB4DSJQUͷ༷ w ༷ʹԊ࣮ͬͯ͞ΕΔͷ͕+BWB4DSJQU w વɺෳ࣮ଘࡏ͢Δ w વɺ༷ʹै͏ٛͳ͍ ͦͦ&$."4DSJQUͱ
&$."4DSJQU༷ +BWB4DSJQU࣮ ͭ·Γ
&$."4DSJQU༷ +BWB4DSJQU࣮ ͭ·Γ ̃ㅳ䍖Ԋ㯸սⶨմՅՖ嫥Մնָֈ֘խԭն
d&$."4DSJQU w &4Ҏલʜང͔ੲ w &4ʜࠓͷݸલʹ͋ͨΔ࣮ d*& w &4ʜ༷ଘࡏ͢ΔͷͷɺͲͷϕϯμʔ࣮ͤ ͣਁಁ͠ͳ͔ͬͨ
w ͜͜ΒΜΑ΄Ͳͷ͜ͱ͕ແ͍ݶΓ৮Δ͜ͱͳ͍ ͣ w ৮Βͳ͖Ό͍͚ͳ͍ํ͍ͨΒೆແ
&$."4DSJQU w &4ͷͭલ w *&Ҏ߱ɺϞμϯϒϥβͰಈ͘Έͳ͞ΜͷΑ͘ Δ+BWB4DSJQUʹ࠷͍ۙͷ w ͔͠͠&4ʹʮͲ͏ͯ͜͠͏ͳͬͨʯ༷͕ ଟ͔ͬͨ
w ҉ͷάϩʔόϧม w ϨΩγΧϧείʔϓ w ίʔϧόοΫࠈ w UIJTࢀর w FUD
&4ͷͭΒ͍༷
UIJT var cat = { name: 'tama', say: function ()
{ console.log(this.name); // ‘tama’ function say() { console.log(this.name); // ?? } say(); } }; cat.say();
UIJT var cat = { name: 'tama', say: function ()
{ console.log(this.name); // ‘tama’ function say() { console.log(this.name); // undefined } say(); } }; cat.say();
ίʔϧόοΫࠈ asyncOne('hoge', function (res, err) { asyncTwo(res, function (res, err)
{ asyncThree(res, function (res, err) { asyncFour(res, function (res, err) { asyncFive(res, function (res, err) { console.log(res); // ඇಉظϚγϚγ }); }); }); }); });
҉ͷάϩʔόϧม var show = function () { var name =
'sota1235'; var age = (function (now) { birthday = 1992; return now - birthday; })(2016); console.log(name + ' is ' + age + ' years old.'); }; show(); // ‘sota1235 is 24 years old.’ /** after 100000 lines... */ console.log(name); // undefined console.log(age); // undefined console.log(birthday); // ??
҉ͷάϩʔόϧม var show = function () { var name =
'sota1235'; var age = (function (now) { birthday = 1992; return now - birthday; })(2016); console.log(name + ' is ' + age + ' years old.'); }; show(); // ‘sota1235 is 24 years old.’ /** after 100000 lines... */ console.log(name); // undefined console.log(age); // undefined console.log(birthday); // 1992
None
ͦ͏ͩɺ+4ΛΊΑ͏
"MU+4ͷొ w $44Ͱ͍͏4BTTͱ͔4UZMVTΈ͍ͨͳͷ w ίϯύΠϧ͢ΔͱϒϥβͰಈ͘ͷ͕ు͖ग़͞ΕΔ w +4Λָʹॻ͖͍ͨਓ͕ͨͪ৭ΜͳΛ࡞Γ࢝Ίͨ
ओͳ"MU+4 Πϯσϯτݴޠ࠷ߴʂ άϩʔόϧมͱ͔ࢮΜͰཉ͍͠
ओͳ"MU+4 ܕͦ͜ࢸߴ
ओͳ"MU+4 ·ͩ+BWB4DSJQUͰফͯ͠ΔΜͰ͔͢
ओͳ"MU+4
ओͳ"MU+4
ओͳ"MU+4
ओͳ"MU+4
ओͳ"MU+4 ͜Εͧࠞಱʜ
͑ɺ·ͩੜ+4ফͯ͠Δͷʁظ w &4ͷҋʹᙺΕΛΒͨ͠+4FSʹΑΔ"MU+4େ ઓ૪ w +4ͷସΛࢦͨ͠ΓଞݴޠΛ+4ʹίϯύΠϧ ͠Α͏ͱͨ͠Γ w ਓଵଦͳ͍͖ͷ
͑ɺ·ͩੜ+4ফͯ͠Δͷʁظ w "MU+4ͷొͰ&4ͷҋΛආ͚ͯ+4Λॻ͘͜ͱ ൺֱత༰қʹͳͬͨ w ͱ͍͑ɺϒϥβͰಈ͘Θ͚Ͱͳ͍ͷͰࠜ ຊղܾʹࢸΒͳ͍ w ୭͕ٹੈओΛͪΜͰ͍ͨʜ
ͦͯ࣌͠
ٹੈओര
"CPVU&4
&4 w &4͔Β࣮ʹͿΓͷϦϦʔε w &4ͱݺΕ͕ͯͨਖ਼໊ࣜশ&4 w ϒϥβॲཧೳྗͷ্ɺϑϩϯτͷൃలʹ ͍ຬΛ࣋ͯ͠ొ w ཁ͢Δʹधཁ͕͋Δ͔Β༷ࡦఆ͕ਐΜͩ
υϥεςΟοΫͳมߋ w ৽نػೳ͕ඇৗʹଟ͍ w ࠓ·Ͱͷ&4ͷͷଟ͘Λղܾ w $P⒎FF4DSJQUΛ͡Ίͱ͢Δ"MU+4ʹେ͖͘Ө ڹΛड͚͍ͯΔ w $MBTTߏจɺ"SSPX'VODUJPOFUDʜ
ه๏Λ͍͔ͭ͘հ
MFU w ϒϩοΫείʔϓม͕એݴՄೳʹͳͬͨ w ࠶ೖՄೳͳͷͰGPSจத͚ͩ༗ޮͳΧϯτม ͷ࣮ݱ͕Մೳʹ
MFU for (let i = 0; i < 5; i++)
{ console.log(i); } console.log(i); // ReferenceError let name = 'sota1235'; // ࠶ೖՄ name = 'sota1236'; // ࠶એݴෆՄ let name = 'sota1236'; // TypeError
DPOTU w ఆͷએݴ͕Մೳʹͳͬͨ w ࠶ೖෆՄ w WBSऴྃͷ͓Βͤ w มએݴݪଇશͯDPOTUͰɺͱ͍͏+4FSଟ͍
DPOTU const version = 2015; version = 2016; // TypeError
const version = 2017; // TypeError
BSSPXGVODUJPO w ؔͷলུه๏ w ؔͷॲཧ͕ߦ͔͠ͳ͚Ε҉ͷSFUVSO Մೳ w είʔϓͷUIJTΛҾ͖ܧ͙ʹҙ
BSSPXGVODUJPO // ES5 var func = function (food, name) {
console.log(name + ' want to eat ' + food); }; // ES2015 const func = (food, name) => { console.log(name + ' want to eat ' + food); }; // Ҿ͕1ͭͷ߹ɺؙׅހলུՄೳ const func2 = food => { console.log('I want to eat ' + food); }; // ॲཧ͕ҰߦͳΒதׅހলུՄೳ // ධՁ͞Ε͕ͨ҉ͷreturnͱͳΔʹҙ const func3 = food => console.log('I want to eat ' + food);
EFGBVMUQBSBNFUFSWBMVFT w ؔͷσϑΥϧτҾͷࢦఆ͕Մೳʹͳͬͨ
EFGBVMUQBSBNFUFSWBMVFT // lastͷσϑΥϧτΛࢦఆ const getName = (first, last = 'Sugiura')
=> { return last + ' ' + first; }; // มʹೖΔͷԿͰࢦఆՄೳ const concat = (list, subList = ['c']) => { return list.concat(subList); }; concat(['a', 'b']); // ['a', 'b', 'c'] concat(['a', 'b'], ['d']); // ['a', 'b', 'd']
TQSFBEPQFSBUPS w ྻɺΦϒδΣΫτΛϧʔϓͤͣల։Ͱ͖ΔΑ ͏ʹ w ྻ࿈݁ՄมҾͷ࣮͕༰қʹͳͬͨ w ԋࢉࢠΛར༻͢Δ
TQSFBEPQFSBUPS // ྻΛల։ const a = ['a', 'b', 'c']; const
b = [...a, 'd']; // ['a', 'b', 'c', 'd']; // ՄมҾ function print(...names) { console.log(names.join(' ')); }; print('es5', 'es6', 'es7'); // 'es5 es6 es7'
QBSBNFUFSDPOUFYUNBUDIJOH w 0CKFDU͔ΒಛఆͷΩʔΛࢦఆ͠มʹೖ͢Δ w 0CKFDUΛมؔͷҾʹϚοϐϯάͰ͖Δ
QBSBNFUFSDPOUFYUNBUDIJOH const meal = { breakfast : 'bread', lunch :
'pasta', dinner : 'curry', }; const { breakfast, lunch } = meal; console.log(breakfast); // 'bread' console.log(lunch); // 'pasta' function printLunch({ lunch }) { console.log('Lunch is ' + lunch); }; printLunch(meal); // 'Lunch is pasta'
DMBTT w $MBTTߏจ͕Մೳʹͳͬͨ w ࠓ·ͰͲ͓ΓQSPUPUZQFϕʔεͰͷදهՄೳ w ͕ɺಛஈϝϦοτͳ͍ͷͰ$MBTTߏจͰΑ͍ w QSPUPUZQFͷཧղ͓ͯ͘͠͠
DMBTT class Dog { constructor(name, age) { this.name = name;
this.age = age; } printName() { console.log(this.name); } static bark() { console.log('Wow'); } get age() { return this.age; } } Dog.bark(); // 'Wow' const dog = new Dog('chiwawa', 18); dog.printName(); // 'chiwawa'; console.log(dog.age); // 18
WBMVFFYQPSUJNQPSU w ϑΝΠϧͷϞδϡʔϧԽ͕Մೳʹͳͬͨ w &4ʹແ͔ͬͨػೳ w OPEFKT͔Β༌ೖͨ͠ػೳ
WBMVFFYQPSUJNQPSU // module.js export default function cat() { console.log('myaw'); }
export config = { env: 'develop', }; // sample.js import cat, { config } from './module'; cat(); // 'myaw' console.log(config.env); // 'develop';
1SPNJTF w ඇಉظॲཧΛྃ࣌ʹղܾ͢ΔΦϒδΣΫτ w &4ͷ࣌Ͱ࣮͘͞Ε͍͕༷ͯͨతʹ &4ʹؚ·ΕΔ w ίʔϧόοΫɺμϝɻθολΠɻ
1SPNJTF // Not good :( asyncFirst('hoge', result => { asyncSecond(result,
result => { asyncThird(result, result => { console.log(result); }); }); }); // Good promise :) asyncFirst('hoge') .then(asyncSecond) .then(asyncThird) .then(result => console.log(result)); .catch(err => console.error(err));
ͦͷଞେ w ͜͜Ͱհͨ͠ͷ͘͘͝͝Ұ෦ w ඇৗʹ৽ػೳ͕ଟ͍ͷͰίπίπ֮͑Α͏ w (JU)VCͰ·ͱΊͯ͘ΕͯΔϖʔδͰ߲͑ͨ Βݸ͋ͬͨ w
IUUQTHJUIVCDPNMVLFIPCBOFTGFBUVSFT
)PXUPXSJUF&4
?P? &4࠷ߴʂ໌͔Βॻ͍ͧ͘ʂ
㵺㱿㵺 ɻP ͋Εɺϒϥβ࣮͍͍ͭͯΔͷʁ
cIUUQTLBOHBYHJUIVCJPDPNQBUUBCMFFTc ᵎ ☋ʆ ᵊࡾ
‧▓▒░ `Т` ░▒▓‧͏Θ͋͋͋͋
ϒϥβϕϯμʔ w ͜͜Ͱ࠶ͼཱ͔ͪͩΔϕϯμʔ w ϒϥβʹΑͬͯ&4ͷରԠঢ়گʹࠩҟ͕ ͋Δ
ϒϥβରԠঢ়گ w *&֎ w &EHF ''࠷৽൛ͳΒ w $ISPNF 0QFSB࠷৽൛ͳΒ w
εϚϗ࠷େͱ݁ߏյ໓త ࣌IUUQTLBOHBYHJUIVCJPDPNQBUUBCMFFT
Α͘Θ͔ΒΜɻߦͰ w ٸͳ༷มߋʹ w ϒϥβ։ൃ͕͍͚ͭͣ w &4͕ಈ͔ͳ͍
Α͘Θ͔ΒΜɻߦͰ w ٸͳ༷มߋʹ w ϒϥβ։ൃ͕͍͚ͭͣ w &4͕ಈ͔ͳ͍
Α͘Θ͔ΒΜɻߦͰ w ٸͳ༷มߋʹ w ϒϥβ։ൃ͕͍͚ͭͣ w &4͕ಈ͔ͳ͍
#BCFM w &4Λ&4ʹมͯ͘͠ΕΔτϥϯεύΠ ϥʔ w $P⒎FF4DSJQU5ZQF4DSJQUΛॻ͍ͨΒ&4ʹ ม͑ͯ͘ΕΔͷͱಉ͡Α͏ͳϊϦ w *&·ͰରԠͨ͠ίʔυΛు͍ͯ͘ΕΔ
#BCFM &4 &4 ϒϥβͰಈ͘ #BCFMͰ ม͞ΕΔ
͑ɺ"MU+4͡ΌΜ w ϑϩϯτ+4ͱͯ͠ಈ͔͢खॱ͔֬ʹ"MU+4ͱ Ұॹ w ίʔυॻ͘ˠ&4ʹม w ҧ͏ͷॻ͘ίʔυ͕&$."ඪ४Ͱ͋Δ͜ͱ w ͍ͣΕશϒϥβ͕ಈ͘
ͣͷ ίʔυ͕ॻ͚Δ
#BCFM༻࣌ͷҙ w #BCFM͚ͩͰ͑ͳ͍&4ͷ༷͋Δ w 1SPYZ 4ZNCPM w ͭ·Γ&4Ͱ࠶ݱͰ͖ͳ͍ͷ w #BCFM͚ͩͰ&4ΛֶͿ͖Ͱͳ͍
w #BCFM࡞ऀͦ͏ݴͬͯΔ
#BCFM༻࣌ͷҙ w ݹ͍*&ͷରԠΛࢹʹೖΕΔࡍ৻ॏʹͳΔ͖ w 1PMZpMMϥΠϒϥϦͰ*&͙Β͍·Ͱ͍͚ͦ ͏͕ͩݕূ͕ඞཁͦ͏ w ϞδϡʔϧػೳΛϑϩϯτ࣮ʹམͱ͍ͨ͠ͳΒ ϞδϡʔϧίϯύΠϥʔඞਢ w
#SPXTFSJGZ 8FCQBDL͋ͨΓʁ
ͱ͍͑ w ʮϑϩϯτͰ&4ͷԸܙʹ͔͋Γ͍ͨʯ ͷͰ͋Ε#BCFM͑͏ w धཁ͋ΔͷͰอकͷ৺ແ͍ w &4Ҏ߱αϙʔτ͞ΕΔ༷
5SZXSJUJOH&4
໌͔Β&4Λॻ͜͏ʂ ʮࠓॻ͍ͨ&4ΛϒϥβͰಡΈࠐ·ͤͨΒಈ͘ʂʯ Λࢦ͢
Լ͝͠Β͑ w &4͕ॻ͚ͳ͍ਓ·ͣ&4Λֶͼ·͠ΐ͏ w #BCFM͕͢Δͷ&4Λ&4Ͱ࠶ݱ͢Δ͜ͱ w ͭ·Γ&4Ͱ࠶ݱͰ͖ͳ͍ػೳ͑ͳ͍ w ͳͥͦ͏͖͔͢͜ΕΛಡΉͱϋϥΦν͢Δ w
IUUQB[VHJUIVCJPTMJEFOPEFKTFTIPXUPMFBSOIUNM
ඞཁͳࡐྉ w /PEFKTOQNݸ w #BCFMݸ w λεΫϥϯφʔ͓ΈͰ
4UFQ&4Λ&4ʹม͢Δ
4UFQ ͦͷલʹʜ &4Λͤʹॻͨ͘Ίͷ ίπΛ͓ڭ͑͠·͢
4UFQ ͦͷલʹʜ ϏϧυڥશͯύΫΕ
ͳͥύΫΔͷ͔ w &4ͷࣝࠓޙͣͬͱੜ͖Δ w &4Λม͢ΔͨΊͷ͍ࣝͣΕ͍Βͳ ͘ͳΔ w
ͳͥύΫΔͷ͔ w ৮ͬͨ͜ͱ͋ΔਓͳΒΘ͔Δ͚ͲOQNͬͯ݁ߏ ͭΒ͍ w ม͢Δ͚ͩͰίέΔਓίέΔ w ؤு͍͍͚ͬͯͲίϨʹؔͯ͠ڊਓͷݞʹ Δ͖ͱ͍͏ͷ͕ࢲͷॴײ
ͬͯ͜ͱͰ w ԶͷࢡΛӽ͑ͯߦ͚ʂ w IUUQTHJUIVCDPNTPUBFT@TUBSUFS@LJU w Ͱ͖Δ͜ͱ w &4Λ&4ʹม w
Ϣχοτςετ͕&4Ͱॻ͚Δˍಈ͘
ᶃ&4Λม w #BCFMपΓͷπʔϧΛOQNͰམͱ͢ w ϏϧυεΫϦϓτΛॻ͘ w QBDLBHFKTPOPSλεΫϥϯφʔ w ͓ΈͰ w
࣮ߦ͢Δ
ᶄϢχοτςετΛಈ͔͢ w #BCFMपΓͷπʔϧΛམͱ͢ w ಈ͔͢ w Ҏ্ʂ w ͨͩ͠ɺϒϥβͰ࣮ߦ͍ͨ͠߹มͷ ඞཁ͋Γ
NPDIBͱ͔
͙͢ʹॻ͚ͨʂ w ϏϧυεΫϦϓτॻ͍ͯอकͷ͋Δ͚Ͳ ୭͔͕େؤுͬͯΔ w ձࣾͷΈΜͳ͕ॻ͖࢝ΊΕQKUԣஅͯ͠ࢼߦࡨ ޡ͢Ε͍͍ w ઃఆपΓ໎ΘͣύΫΖ͏
4UFQ&4ΛֶͿ
4UFQ&4ΛֶͿ w ಡΜͰֶͿ w τϨʔχϯάͰֶͿ w ౖΒΕֶͯͿ
ಡΜͰֶͿ w ༷ॻΛಡΉ w IUUQXXXFDNBJOUFSOBUJPOBMPSH QVCMJDBUJPOTTUBOEBSET&DNBIUN
ಡΜͰֶͿ w FTGFBUVSFT w IUUQFTGFBUVSFTPSH w &4ͱͷൺֱͰհ͞Ε͍ͯͯඇৗʹΑ͍
τϨʔχϯάͰֶͿ w UPXFSPGCBCFMͱ͍͏OQN͕͋Δ w ৄ͘͠࡞ऀهࣄΛ w IUUQZPTVLFGVSVLBXBIBUFOBCMPHDPNFOUSZ
τϨʔχϯάͰֶͿ
ౖΒΕֶͯͿ w &4-JOUΛར༻͢Δ w &4ͳॻ͖ํΛڧ͍ΔϝδϟʔͳDPOpHΛ མͱͯ͠͏ w ൃݟ͕ଟ͍ͷͰݸਓతʹਪͯ͠Δ w "JSCOC
(PPHMF͋ͨΓͷDPOpH͕Φεεϝ
&4-JOU"JSCOC
&4-JOU"JSCOC
·ͱΊ w &4Λॻͨ͘ΊͷڥਓͷΛύΫΖ͏ w ه๏ͪΐͬͱ֮ͣͭ͑Α͏ w &4΄΅ಈ͘ͷͰ·ͣDPOTUΛ͏ॴ͔ Βʜͱ͍͏ײ֮Ͱ͓̺
ͪͳΈʹ w ҎԼͷͷ#BCFMඞཁͳ͍Ͱ͢ w OPEFKTWd w Ϟμϯϒϥβ $ISPNF '' &EHF͋ͨΓ
w ΧόʔͰͳ͍͚Ͳ͍͍ͩͨಈ͘ͷͰ࿅ श࣌ͪ͜Βͷํ͕Φεεϝ
༨ஊɿ͜Ε͔Βͷ&4
ࠓޙɺ&4Ͳ͏ͳΔͷ͔ w &4ͷେྔΞοϓσʔτܾΊΔํπϥΠ w ͜Ε͔Βຖࡉ͔͘ΞοϓσʔτΛ͠Α͏ͱ͍ ͏ྲྀΕʹͳ͍ͬͯΔ w &4 &4ʜ w
&4͔ͭ͠ػೳ૿͑ͳ͍༧ఆͩΑʂ
&4OFYU w ࣍ظʹͰΔ&4ͷ༷Λ·Δͬͱ&4OFYUͱݺͿ w #BCFMͷQSFTFUΛར༻͢Δ͜ͱͰকདྷͷ༷Λ ઌऔΓͰ͖Δ w ڵຯͷ͋Δํ୭Ͱ࣍ظ༷ΛఏҊͰ͖Δͷ ͰͬͯΈΑ͏
&4Ͱ ࠷ߴͷ+4ϥΠϑΛ