Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Node.js Streamについて
2016/01/26 ASG勉強会
株式会社リクルートテクノロジーズ APソリューショングループ
伊藤 瑛
Page 2
自己紹介
■名前
伊藤 瑛
■所属
リクルートテクノロジーズ アプリケーションソリューションG
2015年度新卒入社 / Node歴 6ヶ月
■やっていること
Node製の大規模Push基盤Pusna-RSの運用開発
Page 3
Stream API
 データの”流れ”を綺麗に扱うためのAPI
 データを一括で読み込むのではなく、破片ごとに読み
処理することができる
 各Streamをpipe()で連結することができる
Readable
• I/Oな...
Page 4
Node.jsのStream APIの変遷
実装Ver 安全性 後方互換性
Stream 1 - △
データの取りこぼしやStream
のpause(), resume()が頻繁
に呼ばれ、パフォーマンスが
劣化する危険性
-
S...
Page 5
Node.jsのStream APIの変遷
実装Ver 安全性 後方互換性
Stream 1 - △
データの取りこぼしやStream
のpause(), resume()が頻繁
に呼ばれ、パフォーマンスが
劣化する危険性
-
S...
Page 6
Stream 3
Page 7
Stream3 on Node.js 4.x
Page 8
Stream3 on Node.js 4.x (Simple)
Page 10
非同期処理をStreamでラップする
 callback hell
Page 11
非同期処理をStreamでラップする
 Streamで書く
Page 12
StreamのちょっとしたTips1
 リトライ処理
Page 13
ブラウザにもStreamが実装された!
 Google Chrome 43+で実装
 fetch APIのresponse.bodyに対してgetReader()を呼
び出すとReadableStreamが返ってくる
 r...
Page 14
サンプルコード
Page 15
@domenicさんに聞いてみた
 Node学園祭の時にNodeのStreamとブラウザの
Streamの仕様を合わせてほしいと言ってみた。
 @domenicさん
「Nodeの時にStreamの仕様がいろいろぶれた反省が
...
Page 16
まとめ
 Node.jsのStream APIの紹介と事例の共有
 ブラウザにもStreamが実装された。
Page 17
ありがとうございました!
Upcoming SlideShare
Loading in …5
×

Node.jsStreamについて

2,175 views

Published on

2016/01/27 リクルートテクノロジーズ社内勉強会での、伊藤の資料になります

Published in: Technology
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Node.jsStreamについて

  1. 1. Node.js Streamについて 2016/01/26 ASG勉強会 株式会社リクルートテクノロジーズ APソリューショングループ 伊藤 瑛
  2. 2. Page 2 自己紹介 ■名前 伊藤 瑛 ■所属 リクルートテクノロジーズ アプリケーションソリューションG 2015年度新卒入社 / Node歴 6ヶ月 ■やっていること Node製の大規模Push基盤Pusna-RSの運用開発
  3. 3. Page 3 Stream API  データの”流れ”を綺麗に扱うためのAPI  データを一括で読み込むのではなく、破片ごとに読み 処理することができる  各Streamをpipe()で連結することができる Readable • I/Oなどからの 読み込み Readable / Writable (Transform) • データの整形 Writable • I/Oなどへの書 き出し
  4. 4. Page 4 Node.jsのStream APIの変遷 実装Ver 安全性 後方互換性 Stream 1 - △ データの取りこぼしやStream のpause(), resume()が頻繁 に呼ばれ、パフォーマンスが 劣化する危険性 - Stream 2 v0.10 ◯ 内部バッファの実装により I/Oの不安定な流れに強く なった。 △ following mode (Stream1互 換モード)とpuase modeを交 互に行き交えない Stream 3 v0.12 ◯ ◯ Stream 3 = Stream 1 + Stream2
  5. 5. Page 5 Node.jsのStream APIの変遷 実装Ver 安全性 後方互換性 Stream 1 - △ データの取りこぼしやStream のpause(), resume()が頻繁 に呼ばれ、パフォーマンスが 劣化する危険性 - Stream 2 v0.10 ◯ 内部バッファの実装により I/Oの不安定な流れに強く なった。 △ following mode (Stream1互 換モード)とpuase modeを交 互に行き交えない Stream 3 v0.12 ◯ ◯ Stream 3 = Stream 1 + Stream2 現行バージョン
  6. 6. Page 6 Stream 3
  7. 7. Page 7 Stream3 on Node.js 4.x
  8. 8. Page 8 Stream3 on Node.js 4.x (Simple)
  9. 9. Page 10 非同期処理をStreamでラップする  callback hell
  10. 10. Page 11 非同期処理をStreamでラップする  Streamで書く
  11. 11. Page 12 StreamのちょっとしたTips1  リトライ処理
  12. 12. Page 13 ブラウザにもStreamが実装された!  Google Chrome 43+で実装  fetch APIのresponse.bodyに対してgetReader()を呼 び出すとReadableStreamが返ってくる  read()を呼び出すとPromiseが返ってくる仕様。 Promiseを解決してデータを取り出す Node.jsのStreamとは仕様が違う
  13. 13. Page 14 サンプルコード
  14. 14. Page 15 @domenicさんに聞いてみた  Node学園祭の時にNodeのStreamとブラウザの Streamの仕様を合わせてほしいと言ってみた。  @domenicさん 「Nodeの時にStreamの仕様がいろいろぶれた反省が あるから、ブラウザのStreamについては慎重に動いて いる」
  15. 15. Page 16 まとめ  Node.jsのStream APIの紹介と事例の共有  ブラウザにもStreamが実装された。
  16. 16. Page 17 ありがとうございました!

×