SlideShare una empresa de Scribd logo
1 de 67
今日から始める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 -

Más contenido relacionado

La actualidad más candente

フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
abend_cve_9999_0001
 
メルカリ_サービス説明資料
メルカリ_サービス説明資料メルカリ_サービス説明資料
メルカリ_サービス説明資料
Find Job Startup
 
【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料
Find Job Startup
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
bleis tift
 

La actualidad más candente (20)

Linuxカーネル超入門
Linuxカーネル超入門Linuxカーネル超入門
Linuxカーネル超入門
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
 
Workspace ONE テクニカルガイド MDM
Workspace ONE テクニカルガイド MDMWorkspace ONE テクニカルガイド MDM
Workspace ONE テクニカルガイド MDM
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
情シス必要論
情シス必要論 情シス必要論
情シス必要論
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
メルカリ_サービス説明資料
メルカリ_サービス説明資料メルカリ_サービス説明資料
メルカリ_サービス説明資料
 
Outlook アドイン開発入門
Outlook アドイン開発入門Outlook アドイン開発入門
Outlook アドイン開発入門
 
【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料【企画書】omiai:IVS_LAUNCH PAD用資料
【企画書】omiai:IVS_LAUNCH PAD用資料
 
What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?What's new in Spring Boot 2.6 ?
What's new in Spring Boot 2.6 ?
 
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
 
VyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 BridgeVyOSで作るIPv4 Router/IPv6 Bridge
VyOSで作るIPv4 Router/IPv6 Bridge
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
TextMeshProを使った絵文字対応について
TextMeshProを使った絵文字対応についてTextMeshProを使った絵文字対応について
TextMeshProを使った絵文字対応について
 
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版-  ~How To Output Intellectual Constipa...20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版-  ~How To Output Intellectual Constipa...
20210113「アウトプットしないのは知的な便秘」の影響力 -2020年版- ~How To Output Intellectual Constipa...
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版
 
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato KinugawaCODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
CODE BLUE 2014 : バグハンターの愉しみ by キヌガワマサト Masato Kinugawa
 
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用システム間連携を担うSpring Integrationのエンタープライズ開発での活用
システム間連携を担うSpring Integrationのエンタープライズ開発での活用
 

Similar a 今日から始めるC3.js

リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
Masakazu Muraoka
 

Similar a 今日から始めるC3.js (20)

2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
HTML5から始まる技術革新
HTML5から始まる技術革新HTML5から始まる技術革新
HTML5から始まる技術革新
 
皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!皆さん!ふくてんが来ましたよ!!
皆さん!ふくてんが来ましたよ!!
 
Docker meetup tokyo_public_r001
Docker meetup tokyo_public_r001Docker meetup tokyo_public_r001
Docker meetup tokyo_public_r001
 
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
世界最安値!? 鯖江産コンピューターIchigoJam 〜福井技術者の集い その2〜
 
データセンター事業と関連業界のご紹介
データセンター事業と関連業界のご紹介データセンター事業と関連業界のご紹介
データセンター事業と関連業界のご紹介
 
What is tmcn for isit
What is tmcn for isitWhat is tmcn for isit
What is tmcn for isit
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
Pythonを始めよう
Pythonを始めようPythonを始めよう
Pythonを始めよう
 
Inside CyberAgent's Game Development
Inside CyberAgent's Game DevelopmentInside CyberAgent's Game Development
Inside CyberAgent's Game Development
 
Beatroboでのハードウェアプロトタイピング
BeatroboでのハードウェアプロトタイピングBeatroboでのハードウェアプロトタイピング
Beatroboでのハードウェアプロトタイピング
 
Sakura infini band-20180424
Sakura infini band-20180424Sakura infini band-20180424
Sakura infini band-20180424
 
3Dプリント×Python ~コードからアプローチする3Dプリンティング~
3Dプリント×Python ~コードからアプローチする3Dプリンティング~3Dプリント×Python ~コードからアプローチする3Dプリンティング~
3Dプリント×Python ~コードからアプローチする3Dプリンティング~
 
PWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたいPWA+WebARをECサイトで使ってみたい
PWA+WebARをECサイトで使ってみたい
 
My portfolio
My portfolioMy portfolio
My portfolio
 
世界を変えるクラウドサインの取り組み
世界を変えるクラウドサインの取り組み世界を変えるクラウドサインの取り組み
世界を変えるクラウドサインの取り組み
 
Cybozu lt2017
Cybozu lt2017Cybozu lt2017
Cybozu lt2017
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
 
さくらのクラウドの研究活用
さくらのクラウドの研究活用さくらのクラウドの研究活用
さくらのクラウドの研究活用
 

Último

Último (10)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

今日から始めるC3.js