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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yosuke Furukawa
PRO
August 22, 2015
Programming
35k
47
Share
どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?
Yosuke Furukawa
PRO
August 22, 2015
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
210
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.1k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.6k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
320
Removing Corepack
yosuke_furukawa
PRO
9
1.9k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3k
Strip Types と Storage
yosuke_furukawa
PRO
4
490
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
LTのやり方
yosuke_furukawa
PRO
16
2.9k
Other Decks in Programming
See All in Programming
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
500
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
170
事業会社でのセキュリティ長期インターンについて
masachikaura
0
230
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
320
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
300
iOS機能開発のAI環境と起きた変化
ryunakayama
0
140
アーキテクチャモダナイゼーションとは何か
nwiizo
9
2.2k
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
780
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
180
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
120
存在論的プログラミング: 時間と存在を記述する
koriym
5
770
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
120
Featured
See All Featured
Music & Morning Musume
bryan
47
7.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
880
Practical Orchestrator
shlominoach
191
11k
Visualization
eitanlees
150
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
WENDY [Excerpt]
tessaabrams
9
37k
How to make the Groovebox
asonas
2
2.1k
Between Models and Reality
mayunak
3
260
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
140
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
480
Why Our Code Smells
bkeepers
PRO
340
58k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
390
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