世界を動かす技術を、日本語で。

TALAはオープンソースです

2026年9月8日原文(d2lang.com)

概要

  • TALA はTerrastructが開発した新しい自動レイアウトアルゴリズムで、オープンソース化
  • ソフトウェアアーキテクチャ図向けに設計され、 D2 と同じMPL-2.0ライセンスで公開
  • 複数の美的目標(対称性、距離、フロー、クラスタリングなど)を考慮
  • ノード座標固定や部分固定など柔軟なカスタマイズ性を実現
  • 他レイアウトエンジン(Dagre, ELK)との比較や、TALA特有の特徴を例示

TALA(Terrastruct's AutoLayout Algorithm)オープンソース化の発表

  • TALA はTerrastructが開発した自動レイアウトアルゴリズム、 オープンソース化 (MPL-2.0)
  • 主に ソフトウェアアーキテクチャ図 向けに設計、ホワイトボードのような直交レイアウトを重視
  • 既存のグラフ描画研究の手法と独自技術を組み合わせ、美的な図を生成
  • 美的基準として 対称性・中央値距離・フロー・ノードのクラスタリング などを多目的に最適化
  • D2 v0.9.0 に標準搭載、--layout=tala指定で利用可能
  • https://play.d2lang.com でクライアントサイド動作も体験可能

他レイアウトエンジンとの比較

  • DagreELK とTALAで同じD2ファイルをレンダリングし、比較
    • Fulcro RAD architecture
    • Mocha secure-enclave SoC
    • Jupyter on AWS EKS
    • Lion Reader frontend data flow
    • ROSS rotor-dynamics workflow
    • Go Queue worker architecture
    • Ouroboros Leios simulator
  • 各図はパネルにフィットするようスケーリング
  • 一部ケースでは従来エンジン(Dagre, ELK)の方が好ましい場合も存在

TALAのカスタム位置指定・部分指定の例

  • ノード座標やサイズの固定 が可能
    • Signal House
    • Atlas / Data platform
    • Night shift / Mission control
    • Friday deploy: the escape room
    • The Internet is a jellyfish
    • Orbital coffee logistics
    • Cloud Conservatory
    • Velvet Rope
    • Synthwave City
  • 部分的な位置指定 にも対応
    • The Printing Room:4つのCMYKステーションは固定、他は自動配置
    • MULE / Utility Rover:4つのモーターアセンブリは固定、他は自動配置
  • モデルが2D空間でノード配置を指定し、TALAがルーティングを担当する エージェント的用途 にも適合

TALAのトレードオフと注意点

  • アルゴリズムに ランダム性 あり、デフォルトで3つのシードから最良レイアウトを選択
  • 同じシード・入力なら同じ結果だが、ノード追加などで大きくレイアウト変化することも
  • DagreやELK はノード追加時もレイアウトが安定しやすい
  • DAG(有向非巡回グラフ) にはDagreやELKの方が適している場合が多い
  • 大規模図では 計算時間が非線形に増加、パフォーマンス比較はベンチマーク参照

コミュニティと今後の展望

  • オープンソース化による コミュニティの改善提案やアイデア を歓迎
  • Gavin Nishizawa氏、Júlio César Batista氏らの多大な貢献に感謝
  • 今後の機能拡張と品質向上への期待

参考・レンダリング詳細

  • 比較図はD2の実プロジェクト図を使用
    • 同一D2ソース・コンパイラビルドで、レイアウトエンジンのみ変更
    • スタイル・テーマ・グリッド制約も同一条件
  • カスタム/部分配置例はオリジナルの架空構成
    • アイコン素材やベクターアセットも含む
    • 部分配置は指定ノードのみ座標固定、他は自動配置

まとめ

  • TALAは 柔軟性・美的最適化・カスタマイズ性 を備えた新アルゴリズム
  • D2 ユーザーやソフトウェアアーキテクチャ図作成者に新たな選択肢を提供
  • 今後のコミュニティ主導の進化に期待

Hackerたちの意見

ありがとう!アーキテクチャ図が際立つための重要なヒューリスティックやコンセプトって何だと思う?

d2を見つける前は、自分でダイアグラムジェネレーターを作ってたんだ。https://azriel.im/disposition でも、d2を見つけた後は、自分のプロジェクトに夢中になっちゃって切り替えられなかった。ノードの配置や、ラベルを避けてエッジをルーティングすること、ネストやランクの方向を考慮するのがどれだけ難しいかを実感したし、自分のバージョンが欲しくなったな(他の機能も含めて)。

関連情報:D2は非営利です。https://news.ycombinator.com/item?id=49589768

d2でダイアグラムを作り始めたばかりだから、これも試してみるね!

これをgraphvizに統合するのはいいアイデアかな、それとも混ぜるのは良くない?

最初の数グラフはすごく印象的で、かなり整理されてるね。Goのキューのやつは客観的に見て悪いと思う。他のバージョンはサービスとユーザーを一緒にグループ化して、左から右への流れを保ってるのに、TALAのバージョンは逆に複雑に見える。

「どれほどひどいことになるんだろう」と思ってたら、かなり驚いたよ :) 他のと比べると、これは特にわかりにくいね。

投稿の冒頭でも強調されてるね:> DAGにはあまり対応してない。長い流れるようなグラフが欲しいときは、DagreかELKの方が好きだな。

ここでD2を見るのはいつも嬉しい!前の仕事では、いくつかのアーキテクチャ図を作らなきゃいけなかったんだけど、D2を学ぶのに1日かからなかったし、それ以上に時間を節約できたよ。

いいね!D2の最初の印象は、実際よりもずっと悪かったんだ。デフォルトのレイアウトエンジンは、特定のグラフタイプにはかなりひどいからね。ELKは大きな改善だし、TALAを試したときは、ELKよりもかなり良くなることもあった。でも、仕事でD2を使ってないからTALAは買わなかったんだ。TALAの値段は「遊びのお金」以上だったしね。

これについてめっちゃ嬉しい!もっと良い自動レイアウトが必要だよね。Daedalusに追加するつもりだよ。

CSSって本当に難しい技術だと思う。人々がこれらのアルゴリズムを書くけど、iPhone SE2のiOS Safariではサイトが完全に壊れちゃうんだよね。LinearのCEOがTwitterで最高の開発者しか雇ってないって自慢してたときのことを思い出したよ。それで、壊れた横スクロールのホームページのスクリーンショットを送ったら、サポートされてないデバイスのせいだって言われたんだ。結局、1998年のCSS2の指令が問題を解決してくれたよ(私のOSは2022年のものなんだけど)。