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
どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?
Search
Yosuke Furukawa
PRO
August 22, 2015
Programming
46
34k
どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?
Yosuke Furukawa
PRO
August 22, 2015
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
150
Removing Corepack
yosuke_furukawa
PRO
9
1.3k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.5k
Strip Types と Storage
yosuke_furukawa
PRO
4
340
Module Harmony について
yosuke_furukawa
PRO
3
1.5k
LTのやり方
yosuke_furukawa
PRO
16
2.2k
AppRouter Panel Talk
yosuke_furukawa
PRO
3
700
Node.js v22 で変わること
yosuke_furukawa
PRO
13
5.3k
リアーキテクトと開発生産性について
yosuke_furukawa
PRO
25
9.6k
Other Decks in Programming
See All in Programming
シールドクラスをはじめよう / Getting Started with Sealed Classes
mackey0225
4
640
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
1
100
受け取る人から提供する人になるということ
little_rubyist
0
230
RubyLSPのマルチバイト文字対応
notfounds
0
110
詳細解説! ArrayListの仕組みと実装
yujisoftware
0
570
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
120
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
Remix on Hono on Cloudflare Workers
yusukebe
1
270
.NET のための通信フレームワーク MagicOnion 入門 / Introduction to MagicOnion
mayuki
1
1.3k
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
910
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Cost Of JavaScript in 2023
addyosmani
45
6.7k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Six Lessons from altMBA
skipperchong
27
3.5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Documentation Writing (for coders)
carmenintech
65
4.4k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Transcript
Node.js Past, Present, Future YAPC::ASIA 2015
@yosuke_furukawa Node.jsϢʔβʔάϧʔϓද
@jovi0608 Node/io.js ٕज़ҕһձ
index • Past • Node.js Γཱͪ • Joyent ͱ Node.js
• BDFL Ϟσϧ • Present • Node.js։ൃఀ • io.jsͷ಄ • TCϞσϧ • Future • The Future of Node • LTS • Nodeͷࠓޙ
The History of Node
2001 2008 2009 2010 2011 2012 2015ʙ
Past Node.js
Node.jsΓཱͪ
2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTJTCPSO
2009 ʙ 2012 Node.jsͷഁյͱͷ࣌
3ZBO%BIM 5IF'BUIFSPG/PEF
Ryan Dahl talks about Node.js in JSConf.eu 2009
None
Node.js in brief • Server-Side JavaScript • Evented, Non-Blocking I/O
Similar to EventMachine • Built on Google’s V8
Node.js in brief • Server-Side JavaScript • Evented, Non-Blocking I/O
Similar to EventMachine • Built on Google’s V8 ͳΜͰ/PEFKT͜͏͍͏ߏ ΛબΜͩͷ͔
2001 2008 2009 2010 2011 2012 2015ʙ $,1SPCMFN
$,1SPCMFNJT w ͪΐʔͨ͘͞ΜͷΫϥΠΞϯτ , ͕Ұʹଓ ͨ͠Βαʔόʔࢮ͵ΑͶ͍ͬͯ͏ w ࣌ͷϑϩϯτ"QBDIF͕ओྲྀ w "QBDIFϓϩηεεϨουϞσϧ
w ΫϥΠΞϯτ͕ଓ͢ΔʹϓϩηεPSεϨου͕ ্͕ΔͱϝϞϦ͍·͘ΒΕͯɺɺɺ ޙ͔Δͳɻɻɻ
2001 2008 2009 2010 2011 2012 2015ʙ 8FC d
ຊͰ ʮ8FCͷઌʹ͋Δ$,ʯ ͱ͔هࣄ͕͔͔ΕΔ
8FC࣌4/4࣌
Ϣʔβʔ͕αΠτʹࡏ͢Δ ͕࣌ؒ૿͑Δ࣌ ϝοηʔδ͕དྷ·ͨ͠ ͍͍Ͷ͞Ε·ͨ͠
࣌ͷ3ZBO%BIM
ϓϩάϨεόʔ
None
$POOFDUJPO͕ଟ͘ͳͬͯैདྷͷΞʔΩς ΫνϟͰ·͔ͳ͖͑Εͳ͘ͳ͖ͬͯͨ
&WFOU-PPQ ࣌ؒͷ͔͔Δ'JMF/FUXPSL*0ॲཧ Λඇಉظʹͯ͠ɺෳͷଓΛҰͭ ͷεϨουͰ͏Ϟσϧ
3ZBO%BIM͕࠷ॳʹ࡞ͬͨ &WFOU-PPQϞσϧͷͻͳܗ $ݴޠͰ6OJYPOMZTVQQPSU
MJCFCCΛ࡞ͬͨܦݧΛݩʹ3ZBO%BIMޙʹ/PEFKT ͰɺMJCFWMJCFJPΛ࠾༻ɺޙʹ8JOEPXTରԠΛ ࢦͯ͠ɺMJCVWΛ։ൃɺϚϧνϓϥοτϑΥʔϜͰ ߴͳඇಉظ*0͕࣮ݱ͞ΕΔ
/PEFQSPKFDU ࢝ಈ 3ZBOͱ5JN
͜͏͍͏ײ͡Ͱಈ͔͍ͨ͠ͱ͢Δ ͷϝʔϧͷΓऔΓ͕͍ͬͯΔɻ
࠷ॳOFUW͍ͬͯ͏໊લͩͬͨ Β͍͠
OFUW͔ΒOPEF͍ͬͯ͏໊લʹ มΘΔɻ
͔ͯ͘͠/PEFKTੜ
Joyent ͱ Node
2001 2008 2009 2010 2011 2012 2015ʙ /PEFVOEFSUIF +PZFOU`TSPPG
/PEFKTͷ1BB4ίϯ αϧମ੍Λ࡞Δ 'VMMUJNFDPNNJUͷମ ੍͕ඞཁɻ
+PZFOUͷैۀһͱͯ͠ϑϧλΠϜίϛοτମ੍͕Ͱ͖Δɻ
BDFL ༏͍͠ऴͷಠࡋऀϞσϧ
#%'- جຊతʹҰਓͷϦʔμʔ͕ݖརΛ࣋ͬͯ ػೳࡦఆJTTVFཧΛ͢ΔϞσϧ 1FSMͷ-BSSZ8BMMɺ3VCZͷ.BU[
ഁյͱ • API͕͔ͳΓਂࠁʹมΘΔ • ύονϨϕϧͷόʔδϣϯΞοϓͰಈ͔ͳ͘ͳΔ • Ϟδϡʔϧ໊҆ఆ͠ͳ͍(‘sys’ Ϟδϡʔϧ ‘util’ ϞδϡʔϧͳͲ)
• ৽ػೳՃ༧ࠂ isolates • v0.7ͰεϨου͑ΔΑ͏ʹ͢ΔΑʔ • ͬͺΓΊʔʂ
_:(´ཀ`ʯ ∠):_ ৼΓճ͞ΕΔ/PEFKT %FWFMPQFST
2001 2008 2009 2010 2011 2012 2015ʙ 3ZBOTUFQTBXBZ GSPN#%'-
3ZBO%BIM*TBBDT4DIMVFUFS ʹϦʔμʔ͕มߋ
3ZBO%BIM*TBBDT4DIMVFUFS ʹϦʔμʔ͕มߋ ͏ݚڀϑΣʔζ ഁյͱϑΣʔ ε ऴ͑ͨ͠ɺ͜Ε͔Β҆ఆͱ ৴པΛٻΊͯϦʔμʔΛม͑Δ 4USFBNपΓͱ͔ΤϥʔϋϯυϦϯάपΓͰ Γ͍ͨࣄ͕·ͩ·ͩ͋ΔΜͰϦʔμʔΓ·͢ɻ
2001 2008 2009 2010 2011 2012 2014 *TBBDTTUFQTBXBZ GSPN#%'-
*TBBDT4DIMVFUFS5+'POUBJOF ʹϦʔμʔ͕มߋ ࡾ
OQNձࣾʹ͢Δ͠ɺ/PEFͷ ϦʔμʔͰ͖ͳ͍Θɺɺɺ *TBBDT4DIMVFUFS5+'POUBJOF ʹϦʔμʔ͕มߋ ࡾ WΛग़͢ʂʂ
None
ઌൃ தܧ͗ ͑
Present Node.js
2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTීٴظ
2012 ʙ 2014 Node.js ීٴظ
socket.io ͷීٴʹΑΔ ϦΞϧλΠϜΞϓϦͷ૿Ճ
FrontEnd tools (Grunt Gulp Yeoman)
Desktop Application
AWS Lambda
Tessel(IoT)
ຊʹ৭ʑΘΕΔΑ ͏ʹͳͬͨ ʢओʹΠϕϯτۦಈͰಈ࡞͢Δͷʣ
ͨͩ͠ɺ͜ͷลΓ͔Β ։ൃऀؒͷߔ͕ੜ·Ε ࢝ΊΔɻ
҆ఆΛٻΊΔ։ൃऀ vs cutting edge ΛٻΊ Δ։ൃऀ
EnterpriseͰͷ׆༻
Node.js ίΞʹٻΊΔ ͷ͕૿͖͑ͯͨɻ 4UBCJMJUZ &4 &BTZ&SSPS)BOEMF 4QFFE JTPNPSQIJD
2014͔ΒίΞͷ ։ൃ͕ఀ͢Δɻ
ϦϦʔεεέδϡʔϧͷෆಁ໌ issue/featureཧ͕Ͱ͖ͯͳ͍
͜ͷ··ͰͩΊͩ…
3Q 2014 /PEF'PSXBSE 1SPKFDU͕ൃ 4Q 2014 1Q 2015 2Q 2015
3Q 2015 2012
/PEFKTΛਪ͠ਐΊΔ͘ɺ /PEF'PSXBSEͱ͍͏ஂମ͕Ͱ͖Δɻ #%'- Node.js Node Forward
తఀ͔Βͷ٫
None
3Q 2014 /PEFKTͷGPSLͰ͋Δ JPKT͕ϦϦʔε͞ΕΔ 4Q 2014 1Q 2015 2Q 2015
3Q 2015 2012
/PEF'PSXBSE͕/PEFKTΛGPSLͯ͠JPKTΛϦϦʔε #%'- Node.js io.js
io.js v1.0 release 2015 1݄13 ※ݸਓతʹio.jsͷཚͱ໊͚͍ͮͨ
Node.jsͱͷҧ͍Կ͔
BDFLϞσϧ͔Βͷ٫
JPKTʹϦʔμʔډͳ͍ɻ #%'- Node.js io.js
ϦʔμʔෆࡏͰͲ͏ͬͯػ ೳissueΛཧ͢Δͷ͔
io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH
Technical Committee
Technical Committee Ϧʔμʔډͳ͍͕ɺίΞϝϯόʔͰ ߏ͞Εٕͨज़ҕһձ͋Δɻ(16໊)
Technical Committee ͜ͷҕһձͷதͰػೳissueΛϋϯυϦϯά ͍ͯ͘͠ɻݴͬͯΈΕࠃձΈ͍ͨͳͷɻ
Collaborator TSCͷϝϯόʔͱҰॹʹ࣮ࡍʹίʔυΛฤू मਖ਼ɺػೳ֦ு͍ͯ͘͠ਓୡ(40໊΄Ͳ)
Working Group
Working Group io.jsʹ20ݸۙ͘Working Group͕͋Δɻ Evangelism, Website, benchmark, build, etc. website
build Evangelism
Working Group ͜ͷWorking Group͕֤ʑͷతʹ߹Θͤͯ ࣮ࡍͷ࡞ۀΛ׆ಈ͍ͯ͘͠ɻݴΘֳɻ website build Evangelism NF
Semantic Versioning
Semantic Versioning major.minor.patch
Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ "1*ͷޓ่͕ΕΔɻ NJOPSόʔδϣϯ͕มΘΔ ػೳ͕Ճ͞ΕΔɻ QBUDIόʔδϣϯ͕มΘΔ
όά͕मਖ਼͞ΕΔɻ
Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ "1*ͷޓ่͕ΕΔɻ NJOPSόʔδϣϯ͕มΘΔ ػೳ͕Ճ͞ΕΔɻ QBUDIόʔδϣϯ͕มΘΔ
όά͕मਖ਼͞ΕΔɻ ͜ͷSemantic Versioning ʹԊͬͯόʔδϣϯ ཧ͞ΕΔɻ
Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ "1*ͷޓ่͕ΕΔɻ APIޓ͕յΕΔͱmajor όʔδϣϯ͕ มΘΔͨΊɺޓΛյ͍ͯ͠ͳ͍͔࠷৽ͷҙΛ ͬͯνΣοΫ͞ΕΔɻݴΘݑ๏ͷΑ͏ͳͷɻ
io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH ࠃձ ๏JTTVFGFBUVSF
ΛϋϯυϦϯά͢Δ ֳɺ࣮ࡍͷ࡞ۀΛ࣮ࢪ ࠃձʹ๏ҊΛఏग़͢Δ ݑ๏ ˞ͨ·ʹ֦େղऍ͋Δॴ ࣅͯΔɻ
io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH ࠃձ ๏JTTVFGFBUVSF
ΛϋϯυϦϯά͢Δ ֳɺ࣮ࡍͷ࡞ۀΛ࣮ࢪ ࠃձʹ๏ҊΛఏग़͢Δ ݑ๏ ˞ͨ·ʹ֦େղऍ͋Δॴ ࣅͯΔɻ ʊਓਓਓਓਓਓਓਓਓਓʊ ʼɹ·͞ʹΨόϝϯτɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^Yʉ
ΦʔϓϯΨόφϯεϞσϧ
None
ຖिϛʔςΟϯά͕։࠵͞Εɺݱࡏio.jsͰԿ ͕ٞ͞ΕͯΔͷ͔ΦʔϓϯʹͳΔΈɻ
ٞࣄΛgithubͰཧͯ͠ެ։͢ Δ͜ͱͰnon-nativeʹ͍͞͠
io.jsnode.jsͷforkɺͦͯ͠ΦʔϓϯΨόφϯεϞ σϧΛ࠾༻͢Δ͜ͱͰಁ໌ੑͷ֬อͱίϯτϦ ϏϡʔτͷෑډΛԼ͛ΔޮՌɺBDFLͷΘΓΛૂͬ ͍ͯΔɻ
1/13ʹv1.0ϦϦʔε͞Ε͔ͯΒطʹ7ϲ݄Ͱ ࠓv3.1.0͕ϦϦʔε͞ΕͯΔɻ ϦϦʔεස্͕͕Γྑ͍ʹɻ Node.js io.js
৽͍͠ίϛολʔੜ·Ε͓ͯΓɺ ྑ͍ࡉ๔॥͕Ͱ͖͖͍ͯͯΔɻ
Future Node.js
The Future of Node = io.js
Node Foundation 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH /PEF 'PVOEBUJPO
֤छ8(5$ͷࡒݯΛ ֬อ͢Δॴ $*ͷϗεςΟϯάͩͬͨΓɺ$PMMBCPSBUPSͷ ߤඅͩͬͨΓͱ͍͏ίϛολʔࢧԉɻ
Node Foundation 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH /PEF 'PVOEBUJPO
'VMMUJNFDPNNJUUFSͷඞཁ͕͋Ε͔͜͜Β څྉ͕ग़ΔܗʹͳΔɻ
Long Term Support
Long Term Support )BDLFS͚ Ұൠ͚
Long Term Support &OUFSQSJTF͚ &OUFSQSJTF͚
Node.js v4.0 features &4DPNQBUVQ 4JNQMF4USFBN 4USPOH4DSJQU JNQSPWFQFSG JNQSPWFEFCVHHBCJMJUZ
Node.js v4.0 will be released in September (or October)
·ͱΊ
·ͱΊ • Ͳ͏ͯ͜͠͏ͳͬͨʁ • NodeίΞͷཁٻͷଟ͞ • BDFLϞσϧͷมԽ • ࠓޙͲ͏ͳΔʁ •
Technical CommitteeʹΑΔཧ • Working GroupͰͷؔΘΓ • LTSͱnext/master ʹΑΔ҆ఆੑ
Free Talk
None
time master brunch v0.10 v0.12 v4.x next brunch io.js v1.x
io.js v3.x