プログラミング
TALAがオープンソース化
TALA Is Open-Source (d2lang.com)
要約
Terrastructの自動レイアウトアルゴリズムであるTALAが、D2と同じMPL-2.0ライセンスの下でオープンソースとして公開されました。TALAは、ソフトウェアアーキテクチャ図に特化した新しい直交レイアウトエンジンで、美しさを追求するために複数の目的を考慮します。カスタムノード位置指定の柔軟性も特徴ですが、レイアウト結果のランダム性やDAGへの最適化不足といったトレードオフも存在します。
全文翻訳
以前のアナウンスに続いて、TALA(Terrastruct's AutoLayout Algorithm)がD2と同じMPL-2.0ライセンスの下でオープンソースになりました。TALAは、ソフトウェアアーキテクチャ図を念頭に置いて設計された新しい自動レイアウトアルゴリズムです。これは主に直交レイアウトエンジンであり、一方向に成長するDAGベースのものよりも、ホワイトボードで見かけるものに近いものです。さまざまなグラフ描画研究論文のアイデア(ソースコードで引用)と独自のテクニックを組み合わせて、美しい図を実現しています。「美しさ」の複数の目的、すなわち対称性、平均距離、フロー、類似ノードのクラスタリングなどを考慮します。テキストは短くし、例を前面に出します。最初のバッチでは、TALAでレンダリングされた図と、D2に付属する他の2つのレイアウトアルゴリズムであるDagreとELKとの比較を示します。これらは手作業で選んだものではなく、GitHubで見つけた公開されているd2ファイルを使用しました。そのため、TALA以外のレイアウトを好む場合もあるでしょう。2番目のバッチは、TALAのユニークな特性を示しています。つまり、ノードの位置とサイズをカスタマイズできることです。例えば、座標を固定できます。これは、エージェント的なユースケースに特に適しています。モデルは2D空間での描画は得意ですが、TALAはまだモデルが苦労しているルーティングを担当します。これらはAIに生成させました。3番目のバッチは、一部のノードが座標を指定し、一部はレイアウトエンジンに任せるハイブリッドをサポートするTALAの能力を示しています。ノードのコレクションの特定の形状を念頭に置いている場合、座標で指定でき、TALAが残りを処理できます。これもAIが生成しました。TALAにはトレードオフがないわけではないことにも注意してください。アルゴリズムにはランダム性が含まれています。デフォルトで3つのシードを使用して最適なレイアウトを見つけ、最もスコアの高いものを選択します。同じシードと入力であれば、同じ図が生成されます。しかし、たとえばノードを1つ追加したとします。図は完全に異なるものになる可能性があります。DagreやELKでは、以前とほとんど同じように見え、追加されたノードが収容されます。これは時には望ましいことです。DAG(有向非巡回グラフ)は得意ではありません。長いフローを持つグラフが必要な場合は、DagreやELKを好むことが多いです。大きな図では実行に時間がかかる可能性があり、非線形にスケールします。他のアルゴリズムとのTALAの実行パフォーマンスのベンチマークについては、https://github.com/d2lang/d2-benchmarks を参照してください。TALAはD2 v0.9.0にバンドルされているので、インストールして--layout=talaを指定して試してみてください!または、100%クライアントサイドで実行されるhttps://play.d2lang.com にアクセスしてください。オープンソース化によってもたらされる改善を特に楽しみにしています。コミュニティからどのような改善やアイデアが提出されるか待ちきれません。TALA全体にわたる多大な貢献をしてくれたGavin Nishizawa氏、および階層アルゴリズムなどでの作業をしてくれたJúlio César Batista氏に特に感謝します。皆さんとこのような興味深い作業ができたのはとても楽しかったです。
バッチ1:比較
Fulcro RADアーキテクチャ
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
Mocha secure-enclave SoC
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
Jupyter on AWS EKS
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
Lion Reader frontend data flow
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
ROSS rotor-dynamics workflow
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
Go Queue worker architecture
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
Ouroboros Leios simulator
横並び
TALA
Dagre
ELK
D2ソース↓
TALA
SVGを開く↗
Dagre
SVGを開く↗
ELK
SVGを開く↗
図を選択して拡大してください。各レイアウトはパネルに合わせてスケーリングされています。
バッチ2:カスタム位置指定
Signal House
TALA · top / leftで位置指定
D2ソース↓
SVGを開く↗
D2ソースを表示
Atlas / Data platform
TALA · top / leftで位置指定
D2ソース↓
SVGを開く↗
D2ソースを表示
Night shift / Mission control
TALA · top / leftで位置指定
D2ソース↓
SVGを開く↗
D2ソースを表示
Friday deploy: the escape room
TALA · top / leftで位置指定
D2ソース↓
SVGを開く↗
D2ソースを表示
The Internet is a jellyfish
TALA · top / leftで位置指定
D2ソース↓
SVGを開く↗
D2ソースを表示
Orbital coffee logistics
TALA · top / leftで位置指定
D2ソース↓
SVGを開く↗
D2ソースを表示
Cloud Conservatory
TALA · top / leftで位置指定
D2 + アイコン↓
SVGを開く↗
D2ソースを表示
Velvet Rope
TALA · top / leftで位置指定
D2 + アイコン↓
SVGを開く↗
D2ソースを表示
Synthwave City
TALA · top / leftで位置指定
D2 + アイコン↓
SVGを開く↗
D2ソースを表示
バッチ3:部分的な位置指定
The Printing Room
TALA · 4つのノードを固定 / 10個の自動配置ノード
D2 + アイコン↓
SVGを開く↗
固定:4つのCMYKステーションは、固定された上部座標と等間隔の左側座標を共有し、印刷シーケンスが機械的なアライメントを維持するようにします。
自動:TALAは、フィーダー、カメラ、レジストレーションコントローラー、ドライヤー、プリプレス、仕上げのステップを配置します。上部または左側を指定したノードはありません。
位置指定宣言を表示
D2ソースを表示
MULE / Utility Rover
TALA · 4つのノードを固定 / 11個の自動配置ノード
D2 + アイコン↓
SVGを開く↗
固定:4つのモーターアセンブリは、シャーシ矩形の前面と後部の角に固定されています。
自動:TALAは、すべてのコントローラー、センサー、電源、および安全ノードをそれらの角の間または周囲に配置し、配置されていないフリートコンテナを整理します。
位置指定宣言を表示
D2ソースを表示
ソースとレンダリングの詳細
7つのレイアウト比較では、D2の実世界のフィクスチャから公開されているプロジェクト図を使用しています。各比較では、同じD2ソースとコンパイラビルドを使用し、レイアウトエンジンのみを変更しています。ソーススタイル、テーマ、明示的なグリッド制約は保持されています。一部のフィクスチャアイコンは、組み込みシェイプに置き換えられました。
SVGは、各パネルに収まるように個別にスケーリングされます。Open SVGを使用して、より大きなサイズでラベルと接続を調べます。
ソースの出所とライセンス · レンダリング設定とリビジョン
11個の位置指定例は、同じ公開D2ビルドを使用してTALAでレンダリングされた、オリジナルの架空の構成です。アイコンのダウンロードには、完全なソースとローカルのベクトルアセットが含まれています。2つの部分的な位置指定例では、指定された固定ノードにのみtop/leftが適用されます。他のすべてのノードとすべてのコンテナは自動的に配置されます。
位置指定レンダリング設定。