- D2 は、テキストベースでダイアグラムを作成できる スクリプト言語 であり、コードによって視覚資料を自動生成する方法を提供
- ユーザーはシンプルな文法でノードと関係を定義すると、自動レイアウトエンジン がそれを視覚的に配置
- 文書内の各コードスニペットは Playground で直接実行・修正 できるため、すぐに結果を確認可能
- ただし、import を使用する一部の例 については、Playground ですぐに実行できない例外が存在
- 開発者にとって、視覚的ドキュメント化の自動化とコラボレーション効率 を高めるツールとして意義がある
D2 概要
- D2 は、ダイアグラムをコードで記述できる 宣言的スクリプト言語 であり、複雑な構造をテキストで定義し、自動的に可視化する機能を提供
- ユーザーはノード、エッジ、グループなどをシンプルな文法で記述
- 出力結果は自動で整列され、さまざまなスタイルを適用可能
- この言語は バージョン管理とコラボレーション に有利であり、コードレビューやドキュメント自動化パイプラインに容易に統合可能
Playground 機能
- D2 ドキュメント内の各コードスニペットには、Playground でそのまま開いて修正・実行 できるインタラクティブ機能を提供
- ユーザーがスニペット上にマウスを置くと、Playground リンクが有効化される
- これにより、ダイアグラムをリアルタイムで調整し、結果を視覚的に確認可能
- ただし、import 文を使用するスニペット は外部リソースを必要とするため、Playground で即座に実行できないという制限がある
活用の意義
- D2 は 視覚的ドキュメント化の自動化 を支援し、システム設計やデータフローをコードとともに管理できる利点を提供
- 開発者とデザイナーが同じ言語でダイアグラムを定義することで、コラボレーション効率 が向上
- オープンソースエコシステムにおいて、コードベースのダイアグラム作成の標準化 を促進するツールとして評価されている
1件のコメント
Hacker Newsのコメント
D2の共同制作者として、最近 アニメーション機能拡張 のアイデアを構想中とのこと。
関連する議論を GitHub Discussion に投稿してあるので、意見を聞きたいそうです。
主に mermaid を使っているが、D2 がより 柔軟なインターフェース を提供できるのか気になっているそうです。
LLM と連携する ツール呼び出し機能 や MCP のようなユーザーフレンドリーなインターフェースを計画しているかも知りたいとのことです。
多数のオブジェクトをレンダリングするときにもエンジンと格闘しなくて済むのがよかったそうです。
ただし sdk/d2lib のドキュメントが不足していて、最初は試行錯誤が必要だったとのことです。
ただ 派手なアニメーション は必須だとは思わないそうです。強調が必要なときは、単に色を変えるほうが直感的だという意見です。
ただ、テキスト変更によって図全体が揺れるのは、むしろ気が散る可能性があるとのこと。
また スイムレーン図 を正式サポートしてほしいという声もあります。
D2 や Penrose のようなツールを Python でラップして、データ駆動のダイアグラムスクリプティング を試しているとのこと。
ただ、大半の宣言的ツールは「declare, then tweak」というワークフローをサポートしておらず不便だそうです。
Penrose は修正しやすい一方で、結果が ランダムで予測不能 な面があるとのことです。
オープンソースエンジンでは不可能だが、Freehand 機能 によって一部調整は可能だそうです。
D2 の文法を一般的なプログラミング言語でどこまで近く実装できるのか気になったとのこと。
Python では演算子オーバーロードの制約により完全に同一の DSL は難しいが、文字列演算子オーバーロード で似た形を試せるそうです。
a <- b | "edge"のような文法を真似できるとのこと。ただ実際に使ったら 幽霊になって取り憑く と冗談を言っています。
"x" --> "y" | "hello world"のような DSL を作れるとのこと。ただし乱用は望ましくないそうです。
x >> y << "label"という形で簡単な 内部 DSL を実装できるとのこと。Diagram クラスでオブジェクトモデルを作り、レンダラーをつなぐこともできるそうです。
mgmt プロジェクト のメイン作者として、DAG を多く扱っているとのこと。
ノードやエッジを追加・削除するとき、視覚的に安定してアニメーション遷移できる ダイアグラムが必要だそうです。
Graphviz はスナップショットごとにレイアウトが揺れてしまい不便だとのことです。
D2 の Sketch モード と インタラクティブ機能 は本当に有用とのこと。
ツールチップとリンク によってダイアグラムの活用度が大きく高まるそうです。
D2 を長く使っており、社内でも積極的に勧めているとのこと。
ただし エンタープライズライセンス料金 が高すぎて、個人用途でしか使っていないそうです。
TALA ライセンスは年 3000 ドル、個人用でも 120 ドルで負担が大きいとのこと。
Helm chart やシステム説明を LLM に投入して 自動ダイアグラム生成 する機能は革新的だと考えているそうです。
最近 D2 の ASCII レンダリング対応 が話題になったとのこと。
関連する議論は 以前の投稿 から続いています。
D2 はかなり前からあるが、今でも mermaid ほどは知られていない 印象だとのこと。
機能面でははるかに優れているので、もっと多くの人に知られてほしいという声です。
自分たちの AI プラットフォーム zo.computer で ダイアグラム生成ツール として D2 を採用したとのこと。
mermaid より表現力が高く、AI ベースの可視化 に向いているそうです。
D2 は素晴らしいが、PlantUML や mermaid と比べて 決定的な差別化要素 が足りないとの意見もあります。
依然として「ダイアグラムコードのキラーアプリ」を待っているとのことです。
npm のインストールが不要なのも気に入っているそうです。
ただ、mermaid は Obsidian などとの統合性に優れています。