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

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

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

Yosuke Furukawa
PRO

August 22, 2015
Tweet

More Decks by Yosuke Furukawa

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. index
    • Past
    • Node.js ੒Γཱͪ
    • Joyent ͱ Node.js
    • BDFL Ϟσϧ
    • Present
    • Node.js։ൃఀ଺
    • io.jsͷ୆಄
    • TCϞσϧ
    • Future
    • The Future of Node
    • LTS
    • Nodeͷࠓޙ

    View Slide

  5. The History of Node

    View Slide

  6. 2001 2008 2009 2010 2011 2012 2015ʙ

    View Slide

  7. Past Node.js

    View Slide

  8. Node.js੒Γཱͪ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. View Slide

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

    View Slide

  15. Node.js in brief
    • Server-Side JavaScript
    • Evented, Non-Blocking I/O Similar to
    EventMachine
    • Built on Google’s V8
    ͳΜͰ/PEFKT͸͜͏͍͏ߏ
    ੒ΛબΜͩͷ͔

    View Slide

  16. 2001 2008 2009 2010 2011 2012 2015ʙ
    $,1SPCMFN

    View Slide

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

    ޙ͸෼͔Δͳɻɻɻ

    View Slide

  18. 2001 2008 2009 2010 2011 2012 2015ʙ
    8FC
    ೥d

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  22. ೥౰࣌ͷ3ZBO%BIM

    View Slide

  23. ϓϩάϨεόʔ

    View Slide

  24. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. /PEFQSPKFDU
    ࢝ಈ 3ZBOͱ5JN

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. ͔ͯ͘͠/PEFKTੜ஀

    View Slide

  34. Joyent ͱ Node

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. ഁյͱ૑଄
    • API͕͔ͳΓਂࠁʹมΘΔ
    • ύονϨϕϧͷόʔδϣϯΞοϓͰ΋ಈ͔ͳ͘ͳΔ
    • Ϟδϡʔϧ໊΋҆ఆ͠ͳ͍(‘sys’ Ϟδϡʔϧ ‘util’ ϞδϡʔϧͳͲ)
    • ৽ػೳ௥Ճ༧ࠂ isolates
    • v0.7ͰεϨου࢖͑ΔΑ͏ʹ͢ΔΑʔ
    • ΍ͬͺΓ΍Ίʔʂ

    View Slide

  41. _:(´ཀ`ʯ ∠):_
    ৼΓճ͞ΕΔ/PEFKT
    %FWFMPQFST

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    WΛग़͢ʂʂ

    View Slide

  48. View Slide

  49. ઌൃ
    தܧ͗
    ཈͑

    View Slide

  50. Present Node.js

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  54. FrontEnd tools
    (Grunt Gulp Yeoman)

    View Slide

  55. Desktop Application

    View Slide

  56. AWS Lambda

    View Slide

  57. Tessel(IoT)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  61. EnterpriseͰͷ׆༻

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  69. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  74. BDFLϞσϧ͔Βͷ୤٫

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  78. Technical Committee

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  82. Working Group

    View Slide

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

    View Slide

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

    View Slide

  85. Semantic Versioning

    View Slide

  86. Semantic Versioning
    major.minor.patch

    View Slide

  87. Semantic Versioning
    major.minor.patch
    NBKPSόʔδϣϯ͕มΘΔ

    "1*ͷޓ׵่͕ΕΔɻ
    NJOPSόʔδϣϯ͕มΘΔ

    ػೳ͕௥Ճ͞ΕΔɻ
    QBUDIόʔδϣϯ͕มΘΔ

    όά͕मਖ਼͞ΕΔɻ

    View Slide

  88. Semantic Versioning
    major.minor.patch
    NBKPSόʔδϣϯ͕มΘΔ

    "1*ͷޓ׵่͕ΕΔɻ
    NJOPSόʔδϣϯ͕มΘΔ

    ػೳ͕௥Ճ͞ΕΔɻ
    QBUDIόʔδϣϯ͕มΘΔ

    όά͕मਖ਼͞ΕΔɻ
    ͜ͷSemantic Versioning ʹԊͬͯόʔδϣϯ
    ؅ཧ͞ΕΔɻ

    View Slide

  89. Semantic Versioning
    major.minor.patch
    NBKPSόʔδϣϯ͕มΘΔ

    "1*ͷޓ׵่͕ΕΔɻ
    APIޓ׵͕յΕΔͱmajor όʔδϣϯ͕
    มΘΔͨΊɺޓ׵Λյ͍ͯ͠ͳ͍͔࠷৽ͷ஫ҙΛ
    ෷ͬͯνΣοΫ͞ΕΔɻݴΘ͹ݑ๏ͷΑ͏ͳ΋ͷɻ

    View Slide

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

    View Slide

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

    View Slide

  92. ΦʔϓϯΨόφϯεϞσϧ

    View Slide

  93. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  97. 1/13ʹv1.0ϦϦʔε͞Ε͔ͯΒطʹ7ϲ݄Ͱ

    ࠓ͸v3.1.0͕ϦϦʔε͞ΕͯΔɻ
    ϦϦʔεස౓্͕͕Γྑ͍܏޲ʹɻ
    Node.js io.js

    View Slide

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

    View Slide

  99. Future Node.js

    View Slide

  100. The Future of Node = io.js

    View Slide

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

    View Slide

  102. Node Foundation
    5FDIOJDBM
    $PNNJUUFF
    8PSLJOH
    (SPVQ
    4FNBOUJD
    7FSTJPOJOH
    /PEF
    'PVOEBUJPO
    'VMMUJNFDPNNJUUFSͷඞཁ͕͋Ε͹͔͜͜Β
    څྉ͕ग़ΔܗʹͳΔɻ

    View Slide

  103. Long Term Support

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  108. ·ͱΊ

    View Slide

  109. ·ͱΊ
    • Ͳ͏ͯ͜͠͏ͳͬͨʁ
    • NodeίΞ΁ͷཁٻͷଟ͞
    • BDFLϞσϧͷมԽ
    • ࠓޙͲ͏ͳΔʁ
    • Technical CommitteeʹΑΔ؅ཧ
    • Working GroupͰͷؔΘΓ
    • LTSͱnext/master ʹΑΔ҆ఆੑ

    View Slide

  110. Free Talk

    View Slide

  111. View Slide

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

    View Slide