今日から始めるC3.js
WACODE 4th
@nw_seko
@wn_seko
• Wataru Nakaseko
• ピコもん株式会社 WebApp Engineer
• Javascriptでフロントエンド、バックエンド、バッチ、 業務ツ
ールの開発などをしてる
• 機械学習やセマンテックの研究のためにPythonを触り始めた
• 休日はボードゲームとか音ゲーとか、最近はX-WINGのゲーム
にハマってる
ピコもん株式会社
ピコもん株式会社
Webサイトの案内人として、ピコもん導入サイ
ト上でキャラクターを動かし、訪問ユーザとコ
ミュニケーションを取りながらユーザが求めて
いる情報へと誘導するサービスを提供している
http://www.picomon.jp
ピコもん株式会社
トークスクリプト
アクセスログ
バッチ処理
DB
Big Query
解析データ
ピコもん株式会社
解析ページ全般でC3.jsを導入している
導入経緯
すべてはD3から始まった
• https://d3js.org/
• データドリブンなビジュアライゼーションラ
イブラリ
こんな感じのかっこいい
折れ線グラフが作れる!!
D3.jsを使用して起きた問題点
• 単純な折れ線グラフや棒グラフの作成にしては記述
量が多い
• そもそも折れ線と棒グラフくらいしか使わないのに
D3.jsはオーバースペック
• コピペが横行してバグ発生の原因になった
• コードの見通しを良くするためにWrapperが欲しい
D3.jsの代替品を探す
• 学習や実装にコストがかからないライブラリ
• 既存のグラフと共存させるためにD3のグラフ
とデザインやUIがかけ離れないこと
D3.jsの代替品を探す
• 学習や実装にコストがかからないライブラリ
• 既存のグラフと共存させるためにD3のグラフ
とデザインやUIがかけ離れないこと
C3.jsというものがあるらしい…
What’s C3.js
What’s C3.js
http://c3js.org
What’s C3.js
• チャート作成に特化したビジュアライゼーションラ
イブラリ
• D3.jsをベースにチャート描画に必要なコードをラッ
プしている
• 依存モジュールはD3.jsとjQueryのみ
• APIを通じてグラフの書き換えや操作ができる
What’s C3.js
依存モジュール
D3.js, jQuery
動作環境
HTML5が動くデバイス(IEは9以上)
Android chromeやiOS safariでも動作する
Feature
Feature
• 学習コストが低い
• インタラクティブなUI
• 動かせるサンプル
学習コストが低い
学習コストが低い
学習コストが低い
学習コストが低い
学習コストが低い
学習コストが低い
学習コストが低い
• 10行程度でグラフが書ける
• 必要なプロパティをConfigとして扱える
インタラクティブなUI
インタラクティブなUI
インタラクティブなUI
インタラクティブなUI
インタラクティブなUI
インタラクティブなUI
• 設定なしで凡例・ツールチップを出せる
• 凡例はマウスオーバーでグラフの強調、クリッ
クでグラフの表示切り替えができる
• グラフをマウスオーバーするとツールチップが
でてくる
• これらの機能はオン・オフや拡張が可能
動かせるサンプル
動かせるサンプル
動かせるサンプル
動かせるサンプル
Graphes
Graphes
• Line Chart
• Bar Chart
• Pie Chart
• Scatter Prot
Data
Data
• X軸には数値、日付、カテゴリを使用できる
• ヘッダ付きCSV, JSONを読み込み可能
• URLを指定するとリモートのCSVまたはJSON
ファイルを取得してグラフ描画する
• ローカルのファイルの読み込みには工夫がい
る
ローカルファイルの読み込み方
CORSの関係上Ajaxではfile://で始まるURLを読み込む
ことができない
• DropboxやAmazon S3などのクラウドサービスにア
ップロードする
• サーバーをたてる
• HTML5のFile APIを利用する
Examples
Line Chart
Spline Chart
Step Chart
Area Chart
Area Chart (Spline)
Area Chart (step)
Bar Chart
Stacked Bar Chart
Bar Chart (rotated)
Combination Chart
Pie Chart
Donut Chart
Gauge Chart
Gauge Chart
Gauge Chart
Gauge Chart
Scatter Plot
雑感・まとめ
C3を導入して良かった点
• 実装時間が大幅に短縮された
• ソースコードの保守性が上がった
• グラフ作成タスクへの抵抗感がなくなった
• グラフごとの個別実装がなくなりUIが統一さ
れた
C3で困った点
• やりたいことがAPIで提供されていないと辛い
• ドキュメントから機能を逆引きし辛い
• ドキュメントに機能についての説明が無い
まとめ
• C3.jsを使用すると学習コストをかけずにグラ
フの作成ができる
• 作成したグラフをインタラクティブに触るこ
とができる
たまには息抜きにJavascript
でもいかがでしょうか?
- FIN -

今日から始めるC3.js