Slide 1

Slide 1 text

io.js !ZPTVLF@GVSVLBXB ౦ژ/PEFֶԂ࣌ݶ໨ࢿྉ

Slide 2

Slide 2 text

!ZPTVLF@GVSVLBXB /PEFKT೔ຊϢʔβʔάϧʔϓ୅ද%F/"ॴଐ

Slide 3

Slide 3 text

վΊ…

Slide 4

Slide 4 text

!ZPTVLF@GVSVLBXB /PEFJPKT೔ຊϢʔβʔάϧʔϓ୅ද%F/"ॴଐ

Slide 5

Slide 5 text

io.jsͱ͸Կ͔

Slide 6

Slide 6 text

Node.jsͷ friendly fork

Slide 7

Slide 7 text

friendly fork?? લ͸sporkͬͯॻ͍ͯ͋ͬͨ

Slide 8

Slide 8 text

fork

Slide 9

Slide 9 text

spork

Slide 10

Slide 10 text

spork fork͸͢Δ͚ͲɺϑΥʔΫ΄Ͳઌ͕Θ͔Ε͍ͯͳ͍ɻ ࢥ͍͸ಉ͡ɺͱ͍͏ҙຯͰͷfriendly fork

Slide 11

Slide 11 text

Node.jsͱͷҧ͍

Slide 12

Slide 12 text

ϓϩδΣΫτͷऔΓ૊Έํ

Slide 13

Slide 13 text

io.js͸ΦʔϓϯΨόφϯεϞσϧ issue΍featureͷղܾΛΦʔϓϯʹ͢Δ࢓૊Έ

Slide 14

Slide 14 text

io.js͸ΦʔϓϯΨόφϯεϞσϧ ೋिؒʹҰճ͘Β͍ͷλΠϛϯάͰTC Meeting͕ߦΘΕɺϋϯάΞ΢τͷ࿥ ըͱٞࣄ࿥͕ల։͞ΕΔɻissue΍featureΛॲཧ͢Δͷ͸جຊతʹ߹੍ٞɺͨ ͩ͠ҙݟׂ͕ΕͨΒvoteͰܾΊΔɻ

Slide 15

Slide 15 text

ΦʔϓϯΨόφϯεʹΑͬͯissue/ featureͷಁ໌ੑΛ֬อ͠ɺίϯτϦ Ϗϡʔτ͠΍͘͢͢Δ

Slide 16

Slide 16 text

ΦʔϓϯΨόφϯεʹΑͬͯissue/ featureͷಁ໌ੑΛ֬อ͠ɺίϯτϦ Ϗϡʔτ͠΍͘͢͢Δ 1݄͚ͩͰ294ίϛοτ

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

৽͘͠Committer͕6ਓ௥Ճ

Slide 19

Slide 19 text

ΦʔϓϯΨόφϯεʹΑΔಁ໌ੑͷ֬อ ͱio.js΁ͷظ଴͔Βίϛοτ਺ɺίϯτ ϦϏϡʔλʔ਺͕૿͑ͯΞΫςΟϒʹɻ

Slide 20

Slide 20 text

Node.jsͱͷ
 ػೳ໘Ͱͷҧ͍

Slide 21

Slide 21 text

v8ͷόʔδϣϯ v4.1.0.14

Slide 22

Slide 22 text

σϑΥϧτͰ࢖͑Δ let/const generators Binary/Octal Literal Template String Literal String new methods

Slide 23

Slide 23 text

"use strict"; // const const koa = require('koa'); const app = koa(); // generator app.use(function *(next){ // let block scope let start = new Date; // yield ඇಉظݺͼग़͠ΛݮΒͤΔ yield next; let ms = new Date - start; // template string literal this.set('X-Response-Time', `${ms}ms`); }); app.use(function *(next){ let start = new Date; yield next; let ms = new Date - start; console.log(`{this.method} {this.url} - ms`); }); ͜Μͳ෩ʹॻ͚Δ

Slide 24

Slide 24 text

--es_stagingΛ͚ͭΕ͹࢖͑Δ class Enhanced Object Literal Symbol.toStringTag

Slide 25

Slide 25 text

"use strict"; // class class Person { constructor(name, age) { this.name = name this.age = age } getInfo() { let name = this.name; let age = this.age; let nextAge = this.age + 1; // enhanced object literal return { name, age, nextAge }; } } // @@toStringTag ෇͚ͳ͍ͱ [object object] Person.prototype[Symbol.toStringTag] = "Person"; var alice = new Person('alice', 13); var bob = new Person('bob', 15); console.log('' + alice); console.log(bob.getInfo()); ͜Μͳ෩ʹॻ͚Δ

Slide 26

Slide 26 text

ҎԼͷػೳ͸ݸผʹϑϥά͕ඞཁ arrow_functions proxy Array new methods unicode ΋͏͠͹͓͠଴ͪΛɻ

Slide 27

Slide 27 text

৽API௥Ճ V8

Slide 28

Slide 28 text

heap౷ܭ͕औΕΔ v8Φϓγϣϯ͕adhocʹઃఆͰ͖Δ

Slide 29

Slide 29 text

"use strict"; const v8 = require('v8'); // gcΛtrace͢ΔΦϓγϣϯΛONʹ͢Δ v8.setFlagsFromString('--trace-gc'); for (let i=0; i< 10000; i++) { // ώʔϓͷ౷ܭΛऔΔ console.log(v8.getHeapStatistics()); global.gc(); } // 10ඵ͚ؒͩv8ͷGCΛtrace͠ɺ͕࣌ؒա͗ͨΒOFFʹ͢Δ setTimeout(function(){ v8.setFlagsFromString('--notrace-gc'); }, 10 * 1000);

Slide 30

Slide 30 text

͋ͱ͸ࡉ͔͘… simple creatation Stream
 assert.deepStrictEqual util.debuglog etc…

Slide 31

Slide 31 text

Node.jsͱͷ
 ੑೳ໘Ͱͷҧ͍

Slide 32

Slide 32 text

http͚ͩͰbench

Slide 33

Slide 33 text

http͚ͩͰbench 4%΄Ͳ޲্ http_parser͸ಉ͡(2.3.0)ͷͨΊɺ
 ͦ͜·ͰมԽ͸ແ͍ɻ

Slide 34

Slide 34 text

fs, net, tlsΛؚΊͯ

Slide 35

Slide 35 text

fs, net, tlsΛؚΊͯ શମతʹ10%ఔ౓ͷ޲্ɻ

Slide 36

Slide 36 text

ͦͷଞ io.jsͷ࠷৽ χϡʔε

Slide 37

Slide 37 text

͜ΕݟΕ͹
 ͍͍ͩͨҰൃ https://www.youtube.com/watch?v=1IOukA10QeQ

Slide 38

Slide 38 text

Atom/NW.js͕io.jsʹ Travis CI΋ io.jsΛαϙʔτ Codeship΋io.jsΛαϙʔτ Tessel΋αϙʔτ…

Slide 39

Slide 39 text

io.jsͷ׆ಈΛNode Ϣʔβʔάϧʔϓ͸Ͳ ͏͢Δ͔ɻ

Slide 40

Slide 40 text

ੵۃతʹਐΊ͍ͯ͘

Slide 41

Slide 41 text

ಛʹࠓ͸Nodeͱiojs Ͳͬͪ࢖ͬͨΒ͍͍ ͔ࠞཚͯ͠Δ࣌ظ

Slide 42

Slide 42 text

օͰٞ࿦ΛਐΊ͍ͨ NodeͱiojsͷࠞཚΛ ೔ຊͰ͸๷͍͗ͨɻ

Slide 43

Slide 43 text

iojsͷ຋༁Λߦ͏ nodeͱiojsͷੑೳΛܧଓͯ͠ଌΔ ΑΓΞΫςΟϒʹٞ࿦Λߦ͑ΔΑ ͏ʹ͢Δ ۩ମతʹ

Slide 44

Slide 44 text

https://iojs-jp-slack.herokuapp.com/