Upgrade to Pro — share decks privately, control downloads, hide ads and more …

どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?

どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?

D76231a2114896dfcc7b79ac69558b79?s=128

Yosuke Furukawa
PRO

August 22, 2015
Tweet

Transcript

  1. Node.js Past, Present, Future YAPC::ASIA 2015

  2. @yosuke_furukawa Node.jsϢʔβʔάϧʔϓ୅ද

  3. @jovi0608 Node/io.js ٕज़ҕһձ

  4. index • Past • Node.js ੒Γཱͪ • Joyent ͱ Node.js

    • BDFL Ϟσϧ • Present • Node.js։ൃఀ଺ • io.jsͷ୆಄ • TCϞσϧ • Future • The Future of Node • LTS • Nodeͷࠓޙ
  5. The History of Node

  6. 2001 2008 2009 2010 2011 2012 2015ʙ

  7. Past Node.js

  8. Node.js੒Γཱͪ

  9. 2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTJTCPSO

  10. 2009 ʙ 2012 ೥ Node.jsͷഁյͱ૑଄ͷ࣌୅

  11. 3ZBO%BIM 5IF'BUIFSPG/PEF

  12. Ryan Dahl talks about Node.js in JSConf.eu 2009

  13. None
  14. Node.js in brief • Server-Side JavaScript • Evented, Non-Blocking I/O

    Similar to EventMachine • Built on Google’s V8
  15. Node.js in brief • Server-Side JavaScript • Evented, Non-Blocking I/O

    Similar to EventMachine • Built on Google’s V8 ͳΜͰ/PEFKT͸͜͏͍͏ߏ ੒ΛબΜͩͷ͔
  16. 2001 2008 2009 2010 2011 2012 2015ʙ $,1SPCMFN

  17. $,1SPCMFNJT w ͪΐʔͨ͘͞ΜͷΫϥΠΞϯτ ,୆ ͕Ұ౓ʹ઀ଓ ͨ͠Βαʔόʔࢮ͵ΑͶ͍ͬͯ͏໰୊ w ౰࣌ͷϑϩϯτ͸"QBDIF͕ओྲྀ w "QBDIF͸ϓϩηεεϨουϞσϧ

    w ΫϥΠΞϯτ͕઀ଓ͢Δ౓ʹϓϩηεPSεϨου͕ ্͕ΔͱϝϞϦ࢖͍·͘ΒΕͯɺɺɺ
 ޙ͸෼͔Δͳɻɻɻ
  18. 2001 2008 2009 2010 2011 2012 2015ʙ 8FC ೥d

  19. ೔ຊͰ΋ ʮ8FCͷઌʹ͋Δ$,໰୊ʯ ͱ͔هࣄ͕͔͔ΕΔ

  20. 8FC࣌୅͸4/4࣌୅

  21. Ϣʔβʔ͕αΠτʹ଺ࡏ͢Δ ͕࣌ؒ૿͑Δ࣌୅ ϝοηʔδ͕དྷ·ͨ͠ ͍͍Ͷ͞Ε·ͨ͠

  22. ೥౰࣌ͷ3ZBO%BIM

  23. ϓϩάϨεόʔ

  24. None
  25. $POOFDUJPO͕ଟ͘ͳͬͯैདྷͷΞʔΩς ΫνϟͰ͸·͔ͳ͖͑Εͳ͘ͳ͖ͬͯͨ

  26. &WFOU-PPQ ࣌ؒͷ͔͔Δ'JMF/FUXPSL*0ॲཧ Λඇಉظʹͯ͠ɺෳ਺ͷ઀ଓΛҰͭ ͷεϨουͰ࿫͏Ϟσϧ

  27. 3ZBO%BIM͕࠷ॳʹ࡞ͬͨ &WFOU-PPQϞσϧͷͻͳܗ $ݴޠͰ6OJYPOMZTVQQPSU

  28. MJCFCCΛ࡞ͬͨܦݧΛݩʹ3ZBO%BIM͸ޙʹ/PEFKT Ͱ͸ɺMJCFWMJCFJPΛ࠾༻ɺޙʹ8JOEPXTରԠΛ໨ ࢦͯ͠ɺMJCVWΛ։ൃɺϚϧνϓϥοτϑΥʔϜͰ΋ ߴ଎ͳඇಉظ*0͕࣮ݱ͞ΕΔ

  29. /PEFQSPKFDU ࢝ಈ 3ZBOͱ5JN

  30. ͜͏͍͏ײ͡Ͱಈ͔͍ͨ͠ͱ͢Δ࿩ ͷϝʔϧͷ΍ΓऔΓ͕࢒͍ͬͯΔɻ

  31. ࠷ॳ͸OFUW͍ͬͯ͏໊લͩͬͨ Β͍͠

  32. OFUW͔ΒOPEF͍ͬͯ͏໊લʹ มΘΔɻ

  33. ͔ͯ͘͠/PEFKTੜ஀ 

  34. Joyent ͱ Node

  35. 2001 2008 2009 2010 2011 2012 2015ʙ /PEFVOEFSUIF +PZFOU`TSPPG

  36. /PEFKTͷ1BB4ίϯ αϧମ੍Λ࡞Δ 'VMMUJNFDPNNJUͷମ ੍͕ඞཁɻ

  37. +PZFOUͷैۀһͱͯ͠ϑϧλΠϜίϛοτମ੍͕Ͱ͖Δɻ

  38. BDFL ༏͍͠ऴ਎ͷಠࡋऀϞσϧ

  39. #%'- جຊతʹҰਓͷϦʔμʔ͕ݖརΛ࣋ͬͯ ػೳࡦఆJTTVF؅ཧΛ͢ΔϞσϧ 1FSMͷ-BSSZ8BMMɺ3VCZͷ.BU[

  40. ഁյͱ૑଄ • API͕͔ͳΓਂࠁʹมΘΔ • ύονϨϕϧͷόʔδϣϯΞοϓͰ΋ಈ͔ͳ͘ͳΔ • Ϟδϡʔϧ໊΋҆ఆ͠ͳ͍(‘sys’ Ϟδϡʔϧ ‘util’ ϞδϡʔϧͳͲ)

    • ৽ػೳ௥Ճ༧ࠂ isolates • v0.7ͰεϨου࢖͑ΔΑ͏ʹ͢ΔΑʔ • ΍ͬͺΓ΍Ίʔʂ
  41. _:(´ཀ`ʯ ∠):_ ৼΓճ͞ΕΔ/PEFKT %FWFMPQFST

  42. 2001 2008 2009 2010 2011 2012 2015ʙ 3ZBOTUFQTBXBZ GSPN#%'-

  43. 3ZBO%BIM*TBBDT4DIMVFUFS ʹϦʔμʔ͕มߋ

  44. 3ZBO%BIM*TBBDT4DIMVFUFS ʹϦʔμʔ͕มߋ ΋͏ݚڀϑΣʔζ ഁյͱ૑଄ϑΣʔ ε ͸ऴ͑ͨ͠ɺ͜Ε͔Β͸҆ఆͱ ৴པΛٻΊͯϦʔμʔΛม͑Δ 4USFBNपΓͱ͔ΤϥʔϋϯυϦϯάपΓͰ΍ Γ͍ͨࣄ͕·ͩ·ͩ͋ΔΜͰϦʔμʔ΍Γ·͢ɻ

  45. 2001 2008 2009 2010 2011 2012 2014 *TBBDTTUFQTBXBZ GSPN#%'-

  46. *TBBDT4DIMVFUFS5+'POUBJOF ʹϦʔμʔ͕มߋ ࡾ୅໨

  47. OQNձࣾʹ͢Δ͠ɺ/PEFͷ ϦʔμʔͰ͖ͳ͍Θɺɺɺ *TBBDT4DIMVFUFS5+'POUBJOF ʹϦʔμʔ͕มߋ ࡾ୅໨ WΛग़͢ʂʂ

  48. None
  49. ઌൃ தܧ͗ ཈͑

  50. Present Node.js

  51. 2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTීٴظ

  52. 2012 ʙ 2014 ೥͸ Node.js ීٴظ

  53. socket.io ͷීٴʹΑΔ ϦΞϧλΠϜΞϓϦͷ૿Ճ

  54. FrontEnd tools (Grunt Gulp Yeoman)

  55. Desktop Application

  56. AWS Lambda

  57. Tessel(IoT)

  58. ຊ౰ʹ৭ʑ࢖ΘΕΔΑ ͏ʹͳͬͨ ʢओʹΠϕϯτۦಈͰಈ࡞͢Δ΋ͷʣ

  59. ͨͩ͠ɺ͜ͷลΓ͔Β ։ൃऀؒͷߔ͕ੜ·Ε ࢝ΊΔɻ

  60. ҆ఆΛٻΊΔ։ൃऀ vs cutting edge ΛٻΊ Δ։ൃऀ

  61. EnterpriseͰͷ׆༻

  62. Node.js ίΞʹٻΊΔ ΋ͷ͕૿͖͑ͯͨɻ 4UBCJMJUZ &4 &BTZ&SSPS)BOEMF 4QFFE JTPNPSQIJD

  63. 2014೥͔ΒίΞͷ ։ൃ͕ఀ଺͢Δɻ

  64. ϦϦʔεεέδϡʔϧͷෆಁ໌ issue/feature؅ཧ͕Ͱ͖ͯͳ͍

  65. ͜ͷ··Ͱ͸ͩΊͩ…

  66. 3Q 2014 /PEF'PSXBSE 1SPKFDU͕ൃ଍ 4Q 2014 1Q 2015 2Q 2015

    3Q 2015 2012
  67. /PEFKTΛਪ͠ਐΊΔ΂͘ɺ /PEF'PSXBSEͱ͍͏ஂମ͕Ͱ͖Δɻ #%'- Node.js Node Forward

  68. ໨త͸ఀ଺͔Βͷ୤٫

  69. None
  70. 3Q 2014 /PEFKTͷGPSLͰ͋Δ JPKT͕ϦϦʔε͞ΕΔ 4Q 2014 1Q 2015 2Q 2015

    3Q 2015 2012
  71. /PEF'PSXBSE͕/PEFKTΛGPSLͯ͠JPKTΛϦϦʔε #%'- Node.js io.js

  72. io.js v1.0 release 2015೥ 1݄13೔ ※ݸਓతʹ͸io.jsͷཚͱ໊͚͍ͮͨ

  73. Node.jsͱͷҧ͍͸Կ͔

  74. BDFLϞσϧ͔Βͷ୤٫

  75. JPKTʹ͸Ϧʔμʔ͸ډͳ͍ɻ #%'- Node.js io.js

  76. ϦʔμʔෆࡏͰͲ͏΍ͬͯػ ೳ΍issueΛ؅ཧ͢Δͷ͔

  77. io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH

  78. Technical Committee

  79. Technical Committee Ϧʔμʔ͸ډͳ͍͕ɺίΞϝϯόʔͰ ߏ੒͞Εٕͨज़ҕһձ͸͋Δɻ(16໊)

  80. Technical Committee ͜ͷҕһձͷதͰػೳ΍issueΛϋϯυϦϯά ͍ͯ͘͠ɻݴͬͯΈΕ͹ࠃձΈ͍ͨͳ΋ͷɻ

  81. Collaborator TSCͷϝϯόʔͱҰॹʹ࣮ࡍʹίʔυΛฤू मਖ਼ɺػೳ֦ு͍ͯ͘͠ਓୡ(40໊΄Ͳ)

  82. Working Group

  83. Working Group io.jsʹ͸20ݸۙ͘Working Group͕͋Δɻ Evangelism, Website, benchmark, build, etc. website

    build Evangelism
  84. Working Group ͜ͷWorking Group͕֤ʑͷ໨తʹ߹Θͤͯ ࣮ࡍͷ࡞ۀΛ׆ಈ͍ͯ͘͠ɻݴΘ͹಺ֳɻ website build Evangelism NF

  85. Semantic Versioning

  86. Semantic Versioning major.minor.patch

  87. Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ  "1*ͷޓ׵่͕ΕΔɻ NJOPSόʔδϣϯ͕มΘΔ  ػೳ͕௥Ճ͞ΕΔɻ QBUDIόʔδϣϯ͕มΘΔ

     όά͕मਖ਼͞ΕΔɻ
  88. Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ  "1*ͷޓ׵่͕ΕΔɻ NJOPSόʔδϣϯ͕มΘΔ  ػೳ͕௥Ճ͞ΕΔɻ QBUDIόʔδϣϯ͕มΘΔ

     όά͕मਖ਼͞ΕΔɻ ͜ͷSemantic Versioning ʹԊͬͯόʔδϣϯ ؅ཧ͞ΕΔɻ
  89. Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ  "1*ͷޓ׵่͕ΕΔɻ APIޓ׵͕յΕΔͱmajor όʔδϣϯ͕ มΘΔͨΊɺޓ׵Λյ͍ͯ͠ͳ͍͔࠷৽ͷ஫ҙΛ ෷ͬͯνΣοΫ͞ΕΔɻݴΘ͹ݑ๏ͷΑ͏ͳ΋ͷɻ

  90. io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH ࠃձ ๏཯JTTVFGFBUVSF

    ΛϋϯυϦϯά͢Δ ಺ֳɺ࣮ࡍͷ࡞ۀΛ࣮ࢪ ࠃձʹ๏ҊΛఏग़͢Δ ݑ๏ ˞ͨ·ʹ֦େղऍ΋͋Δॴ ΋ࣅͯΔɻ
  91. io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH ࠃձ ๏཯JTTVFGFBUVSF

    ΛϋϯυϦϯά͢Δ ಺ֳɺ࣮ࡍͷ࡞ۀΛ࣮ࢪ ࠃձʹ๏ҊΛఏग़͢Δ ݑ๏ ˞ͨ·ʹ֦େղऍ΋͋Δॴ ΋ࣅͯΔɻ ʊਓਓਓਓਓਓਓਓਓਓʊ ʼɹ·͞ʹΨόϝϯτɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^Yʉ
  92. ΦʔϓϯΨόφϯεϞσϧ

  93. None
  94. ຖिϛʔςΟϯά͕։࠵͞Εɺݱࡏio.jsͰԿ ͕ٞ࿦͞ΕͯΔͷ͔ΦʔϓϯʹͳΔ࢓૊Έɻ

  95. ٞࣄ࿥ΛgithubͰ؅ཧͯ͠ެ։͢ Δ͜ͱͰnon-nativeʹ΋΍͍͞͠

  96. io.js͸node.jsͷforkɺͦͯ͠ΦʔϓϯΨόφϯεϞ σϧΛ࠾༻͢Δ͜ͱͰಁ໌ੑͷ֬อͱίϯτϦ ϏϡʔτͷෑډΛԼ͛ΔޮՌɺBDFLͷ୅ΘΓΛૂͬ ͍ͯΔɻ

  97. 1/13ʹv1.0ϦϦʔε͞Ε͔ͯΒطʹ7ϲ݄Ͱ
 ࠓ͸v3.1.0͕ϦϦʔε͞ΕͯΔɻ ϦϦʔεස౓্͕͕Γྑ͍܏޲ʹɻ Node.js io.js

  98. ৽͍͠ίϛολʔ΋ੜ·Ε͓ͯΓɺ ྑ͍ࡉ๔॥؀͕Ͱ͖͖͍ͯͯΔɻ

  99. Future Node.js

  100. The Future of Node = io.js

  101. Node Foundation 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH /PEF 'PVOEBUJPO

    ֤छ8(΍5$΁ͷࡒݯΛ ֬อ͢Δॴ $*ͷϗεςΟϯάͩͬͨΓɺ$PMMBCPSBUPSͷ ౉ߤඅͩͬͨΓͱ͍͏ίϛολʔࢧԉɻ
  102. Node Foundation 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH /PEF 'PVOEBUJPO

    'VMMUJNFDPNNJUUFSͷඞཁ͕͋Ε͹͔͜͜Β څྉ͕ग़ΔܗʹͳΔɻ
  103. Long Term Support

  104. Long Term Support )BDLFS޲͚ Ұൠ޲͚

  105. Long Term Support &OUFSQSJTF޲͚ &OUFSQSJTF޲͚

  106. Node.js v4.0 features &4DPNQBUVQ 4JNQMF4USFBN 4USPOH4DSJQU JNQSPWFQFSG JNQSPWFEFCVHHBCJMJUZ

  107. Node.js v4.0 will be released in September (or October)

  108. ·ͱΊ

  109. ·ͱΊ • Ͳ͏ͯ͜͠͏ͳͬͨʁ • NodeίΞ΁ͷཁٻͷଟ͞ • BDFLϞσϧͷมԽ • ࠓޙͲ͏ͳΔʁ •

    Technical CommitteeʹΑΔ؅ཧ • Working GroupͰͷؔΘΓ • LTSͱnext/master ʹΑΔ҆ఆੑ
  110. Free Talk

  111. None
  112. time master brunch v0.10 v0.12 v4.x next brunch io.js v1.x

    io.js v3.x