Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

The History of Node

Slide 6

Slide 6 text

2001 2008 2009 2010 2011 2012 2015ʙ

Slide 7

Slide 7 text

Past Node.js

Slide 8

Slide 8 text

Node.js੒Γཱͪ

Slide 9

Slide 9 text

2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTJTCPSO

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

3ZBO%BIM 5IF'BUIFSPG/PEF

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

8FC࣌୅͸4/4࣌୅

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

೥౰࣌ͷ3ZBO%BIM

Slide 23

Slide 23 text

ϓϩάϨεόʔ

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

/PEFQSPKFDU ࢝ಈ 3ZBOͱ5JN

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

͔ͯ͘͠/PEFKTੜ஀

Slide 34

Slide 34 text

Joyent ͱ Node

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

ઌൃ தܧ͗ ཈͑

Slide 50

Slide 50 text

Present Node.js

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

2012 ʙ 2014 ೥͸ Node.js ීٴظ

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

FrontEnd tools (Grunt Gulp Yeoman)

Slide 55

Slide 55 text

Desktop Application

Slide 56

Slide 56 text

AWS Lambda

Slide 57

Slide 57 text

Tessel(IoT)

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

EnterpriseͰͷ׆༻

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

͜ͷ··Ͱ͸ͩΊͩ…

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

໨త͸ఀ଺͔Βͷ୤٫

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

Node.jsͱͷҧ͍͸Կ͔

Slide 74

Slide 74 text

BDFLϞσϧ͔Βͷ୤٫

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

Technical Committee

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

Working Group

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

Semantic Versioning

Slide 86

Slide 86 text

Semantic Versioning major.minor.patch

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

No content

Slide 94

Slide 94 text

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

Slide 95

Slide 95 text

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

Slide 96

Slide 96 text

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

Slide 97

Slide 97 text

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

Slide 98

Slide 98 text

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

Slide 99

Slide 99 text

Future Node.js

Slide 100

Slide 100 text

The Future of Node = io.js

Slide 101

Slide 101 text

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

Slide 102

Slide 102 text

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

Slide 103

Slide 103 text

Long Term Support

Slide 104

Slide 104 text

Long Term Support )BDLFS޲͚ Ұൠ޲͚

Slide 105

Slide 105 text

Long Term Support &OUFSQSJTF޲͚ &OUFSQSJTF޲͚

Slide 106

Slide 106 text

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

Slide 107

Slide 107 text

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

Slide 108

Slide 108 text

·ͱΊ

Slide 109

Slide 109 text

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

Slide 110

Slide 110 text

Free Talk

Slide 111

Slide 111 text

No content

Slide 112

Slide 112 text

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