
D3.js(Data-Driven Documents)は2011年にMike Bostockがスタンフォード大学Vis Groupで発表した、JavaScript製のデータ可視化ライブラリです。先行プロジェクトProtovisを発展させた後継として誕生し、データ配列をDOM要素にバインドし、SVGやCanvasに直接マッピングする宣言的アプローチを確立しました。棒グラフや折れ線のような既製チャートではなく、スケール、軸、レイアウト、補間といった部品を組み合わせてオリジナルの可視化を組み立てる「低レベル」な設計が特徴で、The New York Timesの報道グラフィックスや学術論文の図表に長年採用されてきました。本記事ではD3の思想と現在の立ち位置を整理します。
この記事の目次
- データバインドとEnter/Update/Exitパターン
- 誕生から10年の進化と影響
- 報道グラフィックスと学術論文での採用
- 学習コストと現代スタックでの位置付け
- まとめ
データバインドとEnter/Update/Exitパターン

D3の根幹はselection.data()によるデータバインドにあります。CSSセレクタで取得したDOM要素群にJavaScript配列を結びつけ、要素数とデータ数の差分から「新しく追加すべき要素(enter)」「すでに存在し更新すべき要素(update)」「データから外れて削除すべき要素(exit)」の3つの仮想集合を生成します。開発者はそれぞれにappend()、attr()、remove()を呼ぶだけで、差分パッチがSVGに反映されるという仕組みです。この発想はReactの仮想DOM登場(2013年)より2年早く、宣言的UIの先駆例の一つに数えられています。
v4以降はモジュール分割が進み、d3-scale、d3-shape、d3-axis、d3-geo、d3-forceなど30以上のサブパッケージに整理されました。スケール関数linear/log/timeはピクセル空間とデータ空間を写像する基盤で、d3-shapeはパスジェネレータ(line、area、arc)を提供し、d3-forceは粒子間の引力斥力をシミュレートするネットワーク可視化エンジンです。必要なモジュールだけをimportできるため、バンドルサイズも最適化しやすくなりました。
誕生から10年の進化と影響

Mike Bostockはスタンフォード大学Jeffrey Heer教授の研究室でProtovisを共同開発した後、博士論文としてD3を発表しました。2011年のInfoVisカンファレンスで「D3: Data-Driven Documents」論文を発表し、ベストペーパー賞を受賞しました。同年GitHub上にOSSとして公開され、瞬く間にWebの標準的可視化ライブラリとなり、ニューヨーク・タイムズのインタラクティブグラフィックス部門でBostock自身がレッドチームを率いた時期もありました。
2017年にはBostockがObservableを設立し、D3を活用したノートブック型可視化プラットフォームへと活動の軸を移しました。D3本体はLGPL系のISCライセンスで公開され続けており、v7(2021年)でES Modules化、Promise APIの全面採用が進みました。後発のChart.jsやEChartsが「すぐ使える既製チャート」を提供する一方で、D3は「自分でゼロから設計したい人」のための言語として独自の地位を保ち続けています。
報道グラフィックスと学術論文での採用

D3が真価を発揮するのは、定型グラフでは表現できない独自設計の可視化です。NYTの「Is It Better to Rent or Buy?」「How Class Works」のような長編記事では、スクロール連動アニメーションやマウス追従ツールチップが組み合わさり、読者の理解を深める「ナラティブ・ビジュアライゼーション」を実現しています。同社の元グラフィックスエディターAmanda Coxは、D3を使って報道の語り口そのものを変えたと評価されてきました。
学術領域でも、IEEE VISやACM CHIに採択される可視化研究の多くがD3でプロトタイプを実装しています。サンキーダイアグラム、コードダイアグラム、ボロノイ図、フォースシミュレーションなどd3-shape系の高度なレイアウトは、論文の図表として表現力が高いためです。OSS統計の世界でもMozillaのMDN、WikimediaのStatistics、GitHubの貢献グラフなど、データジャーナリズム的な大規模ダッシュボードでD3が活用されてきました。
学習コストと現代スタックでの位置付け

D3の弱点は学習コストです。selection、scale、axis、path、transitionといった独自の概念を順に理解する必要があり、公式チュートリアルだけでも数日かかります。さらにReact/Vueと組み合わせる場合、仮想DOMとD3のDOM操作が衝突するため、RechartsやvisxといったReact向けラッパーを経由するか、D3のscale/shape部分だけを利用してレンダリングはReactに任せる「Use D3 for math, React for DOM」パターンが定着しています。
それでもD3が現役であり続けるのは、抽象度の低さこそが表現の幅を決めるからです。インフォグラフィック、選挙速報、金融可視化のように「他にない図」を描きたい場面では、Chart.jsやEChartsの設定では到達できない領域にD3だけが踏み込めます。学習コストを払う価値があるかは要件次第ですが、データ可視化エンジニアにとってD3を読み書きできる力は今も基本リテラシーの一つです。
まとめ
D3.jsは「データをDOMにバインドして自由に描く」という発想で、Webにおける可視化の地平を切り開きました。既製チャートで足りる場面ではChart.jsやEChartsの方が手軽ですが、報道グラフィックスのようにオリジナル設計が必要な領域ではD3が今も第一選択です。Observableの登場で習得導線も整い、スケールやレイアウトといった部品単位の活用も広がっています。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント