SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
どんなデータでもキレイに魅せる!
~HTML5/JavaScriptでグラフを描画する今どき手法~
たけうち ひでゆき
自己紹介
自己紹介
● 株式会社ユーザベース
● チーフテクノロジスト (=CTØ)
/ イノベーション担当執行役員
● 技術特性: 広く浅く時々深く
パソコンが関わる事なら大体何でも好き
3
たけうち ひでゆき @chimerast
E2D3紹介
● OSSプロジェクト
● 全ての人にデータ可視化技術を
● Excel上でデータを入力し、人の作った
データ可視化プログラムで可視化を行える
● 30人ぐらいの人がコントリビュータとして
ゆるく関わっています
4
E2D3: Excel to D3.js
後ほどもうちょっと詳しく説明します
提 供
全ての人にデータ可視化技術を
データ可視化
自己紹介
データ可視化の必要性
最近のデータ可視化
D3.jsを使ったデータ可視化
D3.jsを使ってみる
オープンソースプロジェクト「E2D3」の紹介
8
データ可視化の必要性
● データドリブンな意思決定への需要の高まり
● 大きな(複雑なデータ)を素早く理解しなければならない
● データを人の目で知覚可能な形へと「可視化」する
● データビジュアライゼーションへの注目
9
データ可視化の例
10
県ごとのコンビニ店舗数の可視化
データビジュアライゼーションの定義
● あるデータセットが、予め用意されたアルゴリズムを用い
て、コンピュータによって描画されること。
● その描画によってデータセットを眺めているだけではわから
ない傾向や特徴が明らかになっていること。
● アルゴリズムはコーディングによって定義され、形式知化/
可視化されていること。
● ソート、フィルター、トグルなどのインタラクションが可能で、
その場でその結果がすぐ得られること。
11
出典: http://visualizing.jp/infograph_vs_dataviz/
インフォグラフィックスとの対比
12
● データをありのままに見せ、
見る人にデータを触らせる
● どちらかというとエンジニア
サイドから出てきたもの
● 管理画面・ダッシュボードで
使われることが多い
● ストーリーに沿うようにデータを選
択してわかりやすく見せる
● どちらかというとデザイナサイドか
ら出てきたもの
● ニュース記事で使われることが多
い
インフォグラフィックスデータビジュアライズ
最近のデータ可視化
自己紹介
データ可視化の必要性
最近のデータ可視化
D3.jsを使ったデータ可視化
オープンソースプロジェクト「E2D3」の紹介
14
ブラウザ上でのデータ可視化
The Wealth & Health of Nations
http://bost.ocks.org/mike/nations/
Four Ways to Slice Obama’s 2013 Budget Proposal
http://www.nytimes.com/interactive/2012/02/13/us/politics/2013-budget-proposal-graphic.html
The Facebook Offering: How It Compares
http://www.nytimes.com/interactive/2012/05/17/business/dealbook/how-the-facebook-offering-
compares.html
dc.js
http://dc-js.github.io/dc.js/
15
最近データ可視化の流れ
ウェブブラウザの機能が増え表現力が上がってきた
ユーザの操作によるインタラクティブな表現の増加
いままでIE6,7,8がネックだった
報道にもデータ可視化の技術が使われるようになってきた
データジャーナリズム
報道機関各社にデータビジュアライズ専門の部署ができは
じめている
20
D3.jsを使ったデータ可視化
データ可視化の必要性
自己紹介
最近のデータ可視化
D3.jsを使ったデータ可視化
オープンソースプロジェクト「E2D3」の紹介
22
http://d3js.org/
23
D3.jsについて
● Data Driven Document の略
● データビジュアライズを作るのに必要なものを
集めたライブラリ
● ビジュアライズそのものを提供しているものではない
● Mike Bostock 作
○ 今はThe New York Timesで
グラフィックエディターをしている
● http://bost.ocks.org/mike/
24
D3.jsの良いところ
● とにかくサンプルが多い
● d3.js Gallery (https://github.
com/mbostock/d3/wiki/Gallery)
● bl.ocks.org
(http://bl.ocks.org/)
○ Gistに上がっているデータ可視化表現を描画してく
れるサイト
● Mike Bostock のものを見るだけでもお
なかいっぱい(849個)
(http://bl.ocks.org/mbostock)
25
Core データ操作や取得、アニメーション、色等の共通機能群
Scales データと描画座標の間の変換する機能群
SVG SVGのオブジェクトを作るための便利機能群
Time 時間の操作や文字列との間の変換機能群
Layouts データによる配置に関する機能群
Geography 地理データの射影などを行う機能群
Geometry ボロノイ図等の2次元の可視化表現を扱うための機能群
Behaviors ドラッグやズームなどを扱う機能群
D3.jsが提供する機能
26
https://github.com/mbostock/d3/wiki/API-Reference
D3.jsを試すのに便利な環境
JSFiddle
http://jsfiddle.net/
HTML + CSS + JavaScript をブラウザ上で試せる環境
左側の「Frameworks & Extensions」から「D3」を選択すると
D3.jsを簡単に試せる
27
SVG: Smart Vector Graphics
XMLをベースにした2次元ベクター画像フォーマット
最近のブラウザがサポート: IE9以上, Firefox, Chrome
28
<svg width="120" height="120">
<rect x="10" y="10" width="100" height="100"rx="15" ry="15" />
</svg>
基本D3.jsはSVG DOM Nodeを
いじって最終的な画像を作り出す
SVG + CSS
29
rect {
fill: #fcc;
stroke: black;
stroke-width: 5px;
}
<svg width="120" height="120">
<rect x="10" y="10" width="100" height="100"rx="15" ry="15" />
</svg>
D3.jsのビジュアライズの基本
SVGのDOMをいじって
● あたらしく図形を追加したり削除したり
● パスを変化させたり
● 地図を書いたり
30
D3のDOM操作の基本
jQueryと同じようなSelectorを使ってDOMを選択し、
それに対して操作を行います。
http://jsfiddle.net/chimerast/7f5L0Lc3/
d3.select(‘svg’).selectAll(‘rect’) // svgの中のrectを選択
.data(array) // 選択されたrectの集合にデータを紐付ける
.enter().append(‘rect’) // データの数に足りない分だけrectを増やす
.attr(‘width’, function (d) { return d.width; }); // データを使って属性変更
31
.enter() と .exit()
.enter()
● selectAll()で取り出したDOM要素より紐付けられたデータが多ければ、その差
分の個数だけ空の箱を作成し返す
● 普通はその箱に対して.append()で要素を追加
● 必要になったDOM要素をフェードインや画面外からのアニメーションで追加出来
る
.exit()
● .enter()の逆でDOMが多い分だけそのDOM要素を返す
● いらなくなったDOM要素をフェードアウトさせつつ消したり出来る
32
.enter()
33
.data()
.selectAll()
.enter()
http://jsfiddle.net/chimerast/bakt43od/1/
.exit()
34
.data()
.selectAll()
.exit()
Scale
ある範囲の値を別の範囲の値に射影する関数を返す仕組み
データを実際の画面上の距離に変換するのに使う
http://jsfiddle.net/chimerast/d6yguho8/
var x = d3.scale.linear()
.range([0, 100]) // 0から100の範囲に
.domain([-100, 200]); // -100から200の値を射影する
x(-100); // -> 0
x(100); // -> 66.66666
35
Transition
数値や属性を目的の値に徐々に変化させる仕組み
アニメーションをするのに使う
http://jsfiddle.net/chimerast/fdf6u5x7/
.attr('height', 0) // 元々の高さが0で
.transition()
.delay(2000) // 2秒間で
.attr('height', 100); // 100の高さにする
36
Event
要素に対してイベントを追加する仕組み
jQueryの.on()と変わらない
http://jsfiddle.net/chimerast/g0b7sywe/
.on('click', function (d) {
alert(d);
})
37
http://jsfiddle.net/chimerast/9bw84gdt/
まとめとして棒グラフを書いてみる
38
例: http://bl.ocks.org/mbostock/3943967
並んだ棒グラフと積み上げをボタン一つで切り替え
※通常はふたつのグラフを並べる必要がある
棒グラフ(Bar Chart)もこんなリッチに
39
Coffee Flavour Wheel
http://www.jasondavies.com/coffee-wheel/
木構造が表現可能 -> 視覚的にブレイクダウンできる
円グラフ(Pie Chart)もこんなリッチに
40
Word Cloud
http://www.jasondavies.com/wordcloud/#%2F%2Fwww.jasondavies.
com%2Fwordcloud%2Fabout%2F
もちろんExcelではできないことも
41
「E2D3」の紹介
自己紹介
データ可視化の必要性
最近のデータ可視化
D3.jsを使ったデータ可視化
オープンソースプロジェクト「E2D3」の紹介
43
OSSプロジェクト「E2D3」
E2D3: Excel to D3.js http://e2d3.org/
GitHub: https://github.com/e2d3/e2d3/
Officeストア にて配信中
Excel2013以上 もしくは ブラウザのOffice365上で動作
現在絶賛開発中
求むコントリビュータ—!
44
プロジェクトのミッション
全ての人にデータ可視化技術を
データ可視化を作り上げるのはとても大変!
見かけたものをちょっと使ってみたいなと思っても
特にノンプラグラマには絶対無理
エンジニアが作ったデータ可視化のテンプレートに
Excelからデータを流し込めると良いのでは?
45
デモ
ユースケース
営業・コンサルタント
データを地図等にマッピング
収集したデータをインタラクティブに可視化
Webニュース記者・編集者
データジャーナリズム
読者にデータを触らせて気づかせる
47
E2D3の仕組み
Excel2013 および Office365 には、
HTMLとJavaScriptで作られたアプリを
追加する機能があるのでそれを利用
Apps for Office
https://msdn.microsoft.com/JA-JP/library/office/jj220060.aspx
JavaScript API for Office
https://msdn.microsoft.com/ja-jp/library/office/fp142185.aspx
48
テンプレート開発はとっても簡単
https://github.com/e2d3/e2d3-
contrib/tree/master/barchart-javascript
main.jsを書くだけ
● root変数に描画すべき先のDOMノードが入っている
● update(data) 関数を定義するとシステム側から呼び出され
dataにExcelのセルのデータが入ってくる
● dataを各種形式に変換する便利関数があります
49
Excelが無くても開発出来ます
ブラウザとエディタとnode.jsさえあればOK
将来的にはブラウザだけで開発したい
ファイルを保存すると勝手にブラウザの再読込がされる
LiveReload機能付き!
CoffeeScript, React(JSX)でも直接かけます!
実はD3.js使わずthree.jsつかったりもできる(IE11以上要)
50
E2D3の直近の開発予定
データ可視化テンプレートを簡単に公開・検索できる機能
現在はe2d3-contribレポジトリに追加すると公開
任意のGitHubのレポジトリ等を配信可能に
可視化されたデータを共有・利用できる機能
FacebookやTwitter等に可視化したデータをシェア
JS/CSS/データを塊としてExportしブログ等に追加
51
OSSへのコントリビュート
詳しくはWikiを参照
https://github.com/e2d3/e2d3/wiki/Getting-Started
https://github.com/e2d3/e2d3-contrib/wiki/Let's-add-a-map-by-E2D3
チャートを作ったらe2d3-contribにpull requestを投げてくださ
い
よくわからなかったらTwitterで #e2d3 つけてつぶやく
e2d3やe2d3-serverへの機能追加も歓迎です
52
まとめ
● モダンブラウザの普及によりデータビジュアライズが当たり
前の技術になり始めています
● D3.jsを使うとデータビジュアライズを比較的簡単に作れま
す
● E2D3が普及すると、プログラマ以外もデータビジュアライズ
の恩恵を受けられるようになります
53
提 供
全ての人にデータ可視化技術を

Más contenido relacionado

Destacado

Destacado (6)

2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」
2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」 2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」
2015/08/24 第15回 HTML5+JS 勉強会【TechBuzz】資料「HTML5とデータ可視化とExcel」
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
 
E2D3 introduction
E2D3 introductionE2D3 introduction
E2D3 introduction
 
グラフ共有コミュニティー E2D3にみる "教育・共創・オープンテクノロジー"
グラフ共有コミュニティーE2D3にみる"教育・共創・オープンテクノロジー"グラフ共有コミュニティーE2D3にみる"教育・共創・オープンテクノロジー"
グラフ共有コミュニティー E2D3にみる "教育・共創・オープンテクノロジー"
 
E2D3 ver. 0.2 開発の手順書
E2D3 ver. 0.2 開発の手順書E2D3 ver. 0.2 開発の手順書
E2D3 ver. 0.2 開発の手順書
 
E2D3に見るオープンイノベーション
E2D3に見るオープンイノベーションE2D3に見るオープンイノベーション
E2D3に見るオープンイノベーション
 

Similar a どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜

Similar a どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜 (20)

業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet業務アプリケーション開発を支える.NET技術 #ngtnet
業務アプリケーション開発を支える.NET技術 #ngtnet
 
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
Open Cloud Innovation2016 day1(これからのデータ分析者とエンジニアに必要なdatascienceexperienceツールと...
 
.net micro framework for toppers
.net micro framework for toppers.net micro framework for toppers
.net micro framework for toppers
 
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
物体認識 IoT サービスを支える技術 〜クラウドアーキテクチャから組込み深層学習まで〜
 
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
もっとデータ可視化をカジュアルに! OSSプロジェクト「E2D3」
 
20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps
 
05.日本マイクロソフト(株)_発表資料
05.日本マイクロソフト(株)_発表資料05.日本マイクロソフト(株)_発表資料
05.日本マイクロソフト(株)_発表資料
 
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
AI/ML開発・運用ワークフロー検討案(日本ソフトウェア科学会 機械学習工学研究会 本番適用のためのインフラと運用WG主催 討論会)
 
【Tech-Circle #3 & OCDET #7 SDS勉強会】 Ceph on SoftLayer
【Tech-Circle #3 & OCDET #7 SDS勉強会】 Ceph on SoftLayer【Tech-Circle #3 & OCDET #7 SDS勉強会】 Ceph on SoftLayer
【Tech-Circle #3 & OCDET #7 SDS勉強会】 Ceph on SoftLayer
 
デジタルトランスフォーメーション時代を生き抜くためのビジネス力 ~ AI、Advanced Analytics の使いどころ ~
デジタルトランスフォーメーション時代を生き抜くためのビジネス力 ~ AI、Advanced Analytics の使いどころ ~デジタルトランスフォーメーション時代を生き抜くためのビジネス力 ~ AI、Advanced Analytics の使いどころ ~
デジタルトランスフォーメーション時代を生き抜くためのビジネス力 ~ AI、Advanced Analytics の使いどころ ~
 
Iot algyan jhirono 20190111
Iot algyan jhirono 20190111Iot algyan jhirono 20190111
Iot algyan jhirono 20190111
 
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
 
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
 
TwilioとLINEとSlackを繫いで、電話の伝言メッセージをLINEとSlackで確認する+音声認識+メール
TwilioとLINEとSlackを繫いで、電話の伝言メッセージをLINEとSlackで確認する+音声認識+メールTwilioとLINEとSlackを繫いで、電話の伝言メッセージをLINEとSlackで確認する+音声認識+メール
TwilioとLINEとSlackを繫いで、電話の伝言メッセージをLINEとSlackで確認する+音声認識+メール
 
IoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimoIoTあるじゃん北海道#1 by poggimo
IoTあるじゃん北海道#1 by poggimo
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)
 
Slides mkmk5
Slides mkmk5Slides mkmk5
Slides mkmk5
 
HTML5 conference 2013
HTML5 conference 2013HTML5 conference 2013
HTML5 conference 2013
 
ロボットサービス開発の現場から
ロボットサービス開発の現場からロボットサービス開発の現場から
ロボットサービス開発の現場から
 
Data Scientists Love SQL Server
Data Scientists Love SQL ServerData Scientists Love SQL Server
Data Scientists Love SQL Server
 

Más de Hideyuki Takeuchi

Real-Time 3D Programming in Scala
Real-Time 3D Programming in ScalaReal-Time 3D Programming in Scala
Real-Time 3D Programming in Scala
Hideyuki Takeuchi
 

Más de Hideyuki Takeuchi (7)

SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
SPEEDA/NewsPicksを支える価値を生み出す技術の選定手法
 
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
とあるCTØの切込隊長日誌(スタートアップ) ビジネス篇
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 
Reactive Programming
Reactive ProgrammingReactive Programming
Reactive Programming
 
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigiScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
 
Real-Time 3D Programming in Scala
Real-Time 3D Programming in ScalaReal-Time 3D Programming in Scala
Real-Time 3D Programming in Scala
 
Communication between Wicket and Flex
Communication between Wicket and FlexCommunication between Wicket and Flex
Communication between Wicket and Flex
 

どんなデータでもキレイに魅せる! 〜HTML5/JavaScriptでグラフを描画する今時の手法〜