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-REDでソーシャルデータ分析
自己紹介
氏名: 古城 篤(Atsushi Kojo)	

所属: 株式会社ウフル / データサイエンス研究所	

役割: 所長 / 主席研究員	

特徴: 元営業マンの技術屋	

ウフル技術ブログのメイン執筆者(現在)

http://def...
Node-REDはIoT向け?
http://nodered.org/
flowの例は以下にたくさんある
http://flows.nodered.org/
このflowをインポートするには…
http://flows.nodered.org/flow/6c3b201624588e243f82
このJSONをコピー
以下のように貼付けると…
ここにペースト
こうなる(nodeがないとこうなる)
色々なflowを見ていくとNode-REDは…
見た通りストリームデータを処理することができる	

node(プラグイン)として拡張できるため各種APIに対応できる	

Node-RED自体がWebサーバなのでWebインタラクションが可能	

e...
言い換えると…
見た通りストリームデータを処理することができる

→IoTやソーシャルなどのストリームデータとの親和性が高い	

node(プラグイン)として拡張できるため各種APIに対応できる

→ストリームデータの発生源を拡張できる

→ス...
なんでもストリームデータ?
そもそもセンサーやソーシャルデータやWebのトラッキングデータもストリームデータ	

言わずもがなですが人や自動車の移動履歴データも解りやすいストリームデータ	

IFTTT、Zapier、myThingsなどと連携...
ソーシャルデータ分析事例の紹介
やりたいこと	

ある製品についてのソーシャル上の言及を収集したい

(Twitter、facebook、フォーラム、ニュース、ブログ)	

ひとつの言及がソーシャル上で与えた影響度を知りたい	

継続的に観測し...
ソーシャルデータの収集はRadian6
Radian6 nodeを作りました(まだ公開してませんが公開予定)
作ってみたらこうなった…
よ、要約すると…
Radian6から取得したデータを1件づつ処理するためにloopさせる	

TwitterデータはさらにTwitter APIで本文データを取得	

Twitterやfacebookで紹介された短縮URLを展開する(元に戻す)...
解決していった問題
Twitterデータの本文取得 → Twitter nodeで取得(API制限問題)	

短縮URL問題 → URLを展開する(元に戻す)nodeを作成(公開予定)	

影響度の算出 → SharedCount(非常に助かっ...
nodeの作り方(基本)
input
module.exports = function(RED) {	

function LowerCaseNode(config) {	

RED.nodes.createNode(this,config);	...
nodeの作り方(発展)
Node-REDは簡単に他のWebサーバに組み込める

http://nodered.org/docs/embedding.html	

Node-REDをnpm moduleとして組み込み上書き(デザインなど)	

...
こんなこともできます
https://youtu.be/TrnUC3Xi164
nodeを作成する時の心がけ
まず最初に本当にnodeとして必要かどうか考える

(例えばhttp headerに静的なAPI keyを含めるだけなら要らない)	

ひとつのnodeが受け持つ役割を膨らませすぎない

(他のnodeの役割を理解...
使い込めば直面するloop問題
• loopが枝分かれして増えていく…	

• loopの終了判定は…?
sub flowを使えばシンプルになる?
http://flows.nodered.org/flow/43501a1b424434de0ffb
配列の要素を分岐できるnode
https://www.npmjs.com/package/node-red-contrib-splitter
Node-REDコミュニティ?
Node-REDは今後も色々なシチュエーションで利用される(願望)	

色々なユースケースで想定していなかった問題に直面する	

nodeやflowとしてオープンにすることでディスカッションできる	

より良いno...
“ご清聴ありがとうございました”
Upcoming SlideShare
Loading in …5
×

Node redでソーシャルデータ分析

3,605 views

Published on

Node redでソーシャルデータ分析してインフルエンサーを特定した事例とnodeの作り方発展型とloop地獄問題の解決法など

Published in: Data & Analytics

Node redでソーシャルデータ分析

  1. 1. Node-REDでソーシャルデータ分析
  2. 2. 自己紹介 氏名: 古城 篤(Atsushi Kojo) 所属: 株式会社ウフル / データサイエンス研究所 役割: 所長 / 主席研究員 特徴: 元営業マンの技術屋 ウフル技術ブログのメイン執筆者(現在)
 http://deferloader.blog.uhuru.co.jp/ Twitter: joeartsea Blog: http://artsnet.jp/
  3. 3. Node-REDはIoT向け? http://nodered.org/
  4. 4. flowの例は以下にたくさんある http://flows.nodered.org/
  5. 5. このflowをインポートするには… http://flows.nodered.org/flow/6c3b201624588e243f82 このJSONをコピー
  6. 6. 以下のように貼付けると… ここにペースト
  7. 7. こうなる(nodeがないとこうなる)
  8. 8. 色々なflowを見ていくとNode-REDは… 見た通りストリームデータを処理することができる node(プラグイン)として拡張できるため各種APIに対応できる Node-RED自体がWebサーバなのでWebインタラクションが可能 ex. Node-RED を使用してリアルタイムのチャット・アプリケーションを 5 分で作成する
 http://www.ibm.com/developerworks/jp/cloud/library/cl-rtchat-app/
  9. 9. 言い換えると… 見た通りストリームデータを処理することができる
 →IoTやソーシャルなどのストリームデータとの親和性が高い node(プラグイン)として拡張できるため各種APIに対応できる
 →ストリームデータの発生源を拡張できる
 →ストリームデータ処理の後続処理を拡張できる Node-RED自体がWebサーバなのでWebインタラクションが可能
 →Webインタラクションもストリームデータになる
  10. 10. なんでもストリームデータ? そもそもセンサーやソーシャルデータやWebのトラッキングデータもストリームデータ 言わずもがなですが人や自動車の移動履歴データも解りやすいストリームデータ IFTTT、Zapier、myThingsなどと連携したWebサービスのデータや操作もストリームデータ kimonolabなどWebページを定期的にスクレイピングしてWeb API化するサービスと連携して取得したコンテ ンツもストリームデータ 毎秒数十人カメラの前を通過する人たちの性別や年齢を顔認識エンジンを使って推測して継続的に流してい くデータもストリームデータ CRMデータのデモグラフィック属性の変化や在庫システムの入出庫量などのスナップショット、つまりは変 更履歴データもストリームデータ そう考えると夢が拡がりますね!次ページからの事例もそんな考察から得た着想です
  11. 11. ソーシャルデータ分析事例の紹介 やりたいこと ある製品についてのソーシャル上の言及を収集したい
 (Twitter、facebook、フォーラム、ニュース、ブログ) ひとつの言及がソーシャル上で与えた影響度を知りたい 継続的に観測して影響度の高い言及者を知りたい 影響度の高い言及者の新たな言及をリアルタイムに補足したい
  12. 12. ソーシャルデータの収集はRadian6 Radian6 nodeを作りました(まだ公開してませんが公開予定)
  13. 13. 作ってみたらこうなった…
  14. 14. よ、要約すると… Radian6から取得したデータを1件づつ処理するためにloopさせる TwitterデータはさらにTwitter APIで本文データを取得 Twitterやfacebookで紹介された短縮URLを展開する(元に戻す) 対象のURLのソーシャル上での共有数などをSharedCountで取得 URLの言及者や属性情報をMySQLとTreasure Dataに投入 製品別、言語別、ランキング、影響度などの集計処理 独自実装したダッシュボードでURLや言及者を表現(非公開) 影響度の高い言及者(インフルエンサー)を特定しリアルタイムに観測
  15. 15. 解決していった問題 Twitterデータの本文取得 → Twitter nodeで取得(API制限問題) 短縮URL問題 → URLを展開する(元に戻す)nodeを作成(公開予定) 影響度の算出 → SharedCount(非常に助かったサービス) 短期間集計 → MySQL nodeに対してストアドのcall文を流す 長期間集計 → 並行してTreasure Dataに投入してスケジューリングバッチ 影響度の判定 → システムは判定しやすくするだけ(判定は人)
  16. 16. nodeの作り方(基本) input module.exports = function(RED) { function LowerCaseNode(config) { RED.nodes.createNode(this,config); var node = this; this.on('input', function(msg) { msg.payload = msg.payload.toLowerCase(); node.send(msg); }); } RED.nodes.registerType("lower-case",LowerCaseNode); } output • メインのデータはmsg.payload • グローバルはcontext.global node(プラグイン)
  17. 17. nodeの作り方(発展) Node-REDは簡単に他のWebサーバに組み込める
 http://nodered.org/docs/embedding.html Node-REDをnpm moduleとして組み込み上書き(デザインなど) Node-REDの画面の一部を変更するnode(debug nodeがヒント) これらを駆使すると…
  18. 18. こんなこともできます https://youtu.be/TrnUC3Xi164
  19. 19. nodeを作成する時の心がけ まず最初に本当にnodeとして必要かどうか考える
 (例えばhttp headerに静的なAPI keyを含めるだけなら要らない) ひとつのnodeが受け持つ役割を膨らませすぎない
 (他のnodeの役割を理解して汎用性を保つ) nodeとflowの役割とユースケースを解りやすくする
 (これは今後コミュニティ全体として向上してほしい…)
  20. 20. 使い込めば直面するloop問題 • loopが枝分かれして増えていく… • loopの終了判定は…?
  21. 21. sub flowを使えばシンプルになる? http://flows.nodered.org/flow/43501a1b424434de0ffb
  22. 22. 配列の要素を分岐できるnode https://www.npmjs.com/package/node-red-contrib-splitter
  23. 23. Node-REDコミュニティ? Node-REDは今後も色々なシチュエーションで利用される(願望) 色々なユースケースで想定していなかった問題に直面する nodeやflowとしてオープンにすることでディスカッションできる より良いnode、flow、プロダクト、コミュニティとして発展する ここまでオープンだからこそ発展のスピードが上がる(と思う)
  24. 24. “ご清聴ありがとうございました”

×