SlideShare a Scribd company logo
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などからの
読み込み
Readable /
Writable
(Transform)
• データの整形
Writable
• I/Oなどへの書
き出し
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
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
現行バージョン
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が返ってくる
 read()を呼び出すとPromiseが返ってくる仕様。
Promiseを解決してデータを取り出す
Node.jsのStreamとは仕様が違う
Page 14
サンプルコード
Page 15
@domenicさんに聞いてみた
 Node学園祭の時にNodeのStreamとブラウザの
Streamの仕様を合わせてほしいと言ってみた。
 @domenicさん
「Nodeの時にStreamの仕様がいろいろぶれた反省が
あるから、ブラウザのStreamについては慎重に動いて
いる」
Page 16
まとめ
 Node.jsのStream APIの紹介と事例の共有
 ブラウザにもStreamが実装された。
Page 17
ありがとうございました!

More Related Content

PDF
リクルートのWebサービスを支える「RAFTEL」
PDF
リクルートのWebサービスを支える共通インフラ「RAFTEL」
PDF
リクルートの利用事例から考える AWSの各サービスとセキュリティ
PDF
Struggle against cross-domain data complexity in Recruit group
PDF
JJUG CCC リクルートの Java に対する取り組み
PDF
[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支え...
PDF
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
PDF
RANCHERを使ったDev(Ops)
リクルートのWebサービスを支える「RAFTEL」
リクルートのWebサービスを支える共通インフラ「RAFTEL」
リクルートの利用事例から考える AWSの各サービスとセキュリティ
Struggle against cross-domain data complexity in Recruit group
JJUG CCC リクルートの Java に対する取り組み
[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支え...
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
RANCHERを使ったDev(Ops)

What's hot (20)

PDF
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
PDF
リクルートにおけるPaaS活用事例
PDF
リクルート式AIの活用法
PPTX
システム高速化フォーラム向け プッシュ通知基盤のアーキテクチャ
PDF
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
PPTX
何故DeNAがverticaを選んだか?
PDF
Spring “BigData”
PDF
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
PDF
DeNAインフラの今とこれから - 今編 -
PPTX
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
PDF
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
PDF
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
PDF
変わる!? リクルートグループのデータ解析基盤
PDF
AWSでのセキュリティ運用 ~ IAM,VPCその他
PPTX
DeNA private cloudのその後 #denatechcon
PPTX
<インフラ管理者向け>チームでのAI開発を支援するAI開発プラットフォームKAMONOHASHI
PDF
MLflowによる機械学習モデルのライフサイクルの管理
PPTX
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
PDF
Docomo Cloud Package
PPTX
DLモデル開発中の雑務が嫌で支援プラットフォームを作った話
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
リクルートにおけるPaaS活用事例
リクルート式AIの活用法
システム高速化フォーラム向け プッシュ通知基盤のアーキテクチャ
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
何故DeNAがverticaを選んだか?
Spring “BigData”
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
DeNAインフラの今とこれから - 今編 -
DLLAB Engineer Days:AIチームが履歴やリソース管理で疲弊してたので開発基盤作ってOSS化した話
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
マルチレイヤコンパイラ基盤による、エッジ向けディープラーニングの実装と最適化について
変わる!? リクルートグループのデータ解析基盤
AWSでのセキュリティ運用 ~ IAM,VPCその他
DeNA private cloudのその後 #denatechcon
<インフラ管理者向け>チームでのAI開発を支援するAI開発プラットフォームKAMONOHASHI
MLflowによる機械学習モデルのライフサイクルの管理
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
Docomo Cloud Package
DLモデル開発中の雑務が嫌で支援プラットフォームを作った話
Ad

Similar to Node.jsStreamについて (20)

PDF
OpenStack Object Storage; Usage
PDF
クラウドと共に進むエンジニアの進化
PDF
AWSの最新動向と事例から知る クラウド利用の進化と真価
PPTX
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
PDF
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
PDF
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラス...
PDF
20190925_DBTS_PGStrom
PDF
20191211_Apache_Arrow_Meetup_Tokyo
PDF
エンタープライズワークロードにおけるAmazon Auroraの活用
PDF
20190516_DLC10_PGStrom
PDF
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
PDF
[de:code 2019 振り返り Night!] Data Platform
PPTX
サーバーの脆弱性管理に関して(OpenStack + Vuls) - OpenStack最新情報セミナー(2016年12月)
PDF
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
PPTX
Azure Datalake 大全
PPTX
Japan elasticusergroup01 Acroquest
PDF
災害対策セミナー 「検証プロジェクト報告と事例紹介」
PDF
IPv6 アプリケーション開発入門
PDF
ceph acceleration and storage architecture
PDF
Guide to Cassandra for Production Deployments
OpenStack Object Storage; Usage
クラウドと共に進むエンジニアの進化
AWSの最新動向と事例から知る クラウド利用の進化と真価
[db tech showcase Tokyo 2017] A15: レプリケーションを使用したデータ分析基盤構築のキモ(事例)by 株式会社インサイトテ...
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラスタリ...
[DB tech showcase Tokyo 2015] B37 :オンプレミスからAWS上のSAP HANAまで高信頼DBシステム構築にHAクラス...
20190925_DBTS_PGStrom
20191211_Apache_Arrow_Meetup_Tokyo
エンタープライズワークロードにおけるAmazon Auroraの活用
20190516_DLC10_PGStrom
ちょっと理解に自信がないな という皆さまに贈るHadoop/Sparkのキホン (IBM Datapalooza Tokyo 2016講演資料)
[de:code 2019 振り返り Night!] Data Platform
サーバーの脆弱性管理に関して(OpenStack + Vuls) - OpenStack最新情報セミナー(2016年12月)
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
Azure Datalake 大全
Japan elasticusergroup01 Acroquest
災害対策セミナー 「検証プロジェクト報告と事例紹介」
IPv6 アプリケーション開発入門
ceph acceleration and storage architecture
Guide to Cassandra for Production Deployments
Ad

More from Recruit Technologies (20)

PDF
新卒2年目が鍛えられたコードレビュー道場
PDF
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
PDF
Tableau活用4年の軌跡
PDF
HadoopをBQにマイグレしようとしてる話
PDF
LT(自由)
PDF
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
PDF
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
PDF
銀行ロビーアシスタント
PDF
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
PDF
ユーザー企業内製CSIRTにおける対応のポイント
PDF
ユーザーからみたre:Inventのこれまでと今後
PDF
EMRでスポットインスタンスの自動入札ツールを作成する
PDF
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
PDF
ユーザー企業内製CSIRTにおける対応のポイント
PDF
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
PDF
「リクルートデータセット」 ~公開までの道のりとこれから~
PDF
運用で泣かないアーキテクチャで動く原稿作成支援システム ~リクルートにおけるDeepLearning活用事例~
PDF
リクルートにおける画像解析事例紹介と周辺技術紹介
PDF
Case study of DevOps for Hadoop in Recruit.
PDF
A3RT -The details and actual use cases of“Analytics & Artificial intelligence...
新卒2年目が鍛えられたコードレビュー道場
カーセンサーで深層学習を使ってUX改善を行った事例とそこからの学び
Tableau活用4年の軌跡
HadoopをBQにマイグレしようとしてる話
LT(自由)
リクルートグループの現場事例から見る AI/ディープラーニング ビジネス活用の勘所
Company Recommendation for New Graduates via Implicit Feedback Multiple Matri...
銀行ロビーアシスタント
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
ユーザー企業内製CSIRTにおける対応のポイント
ユーザーからみたre:Inventのこれまでと今後
EMRでスポットインスタンスの自動入札ツールを作成する
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
ユーザー企業内製CSIRTにおける対応のポイント
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
「リクルートデータセット」 ~公開までの道のりとこれから~
運用で泣かないアーキテクチャで動く原稿作成支援システム ~リクルートにおけるDeepLearning活用事例~
リクルートにおける画像解析事例紹介と周辺技術紹介
Case study of DevOps for Hadoop in Recruit.
A3RT -The details and actual use cases of“Analytics & Artificial intelligence...

Node.jsStreamについて