自動レイアウト

Diagrammix3 には、ダイアグラムを最適な読みやすさで自動的に配置する強力な自動レイアウト機能が搭載されています。デフォルトの Sugiyama ベースの階層レイアウトから、ツリー、放射状、円形、フォースディレクト、オーガニック、グリッド配置まで、複数のレイアウトアルゴリズムを提供しているため、ダイアグラムに最適なものを選択できます。

自動レイアウトを使うタイミング

自動レイアウトは以下のような場合に便利です:

  • Mermaid や他の形式からダイアグラムをインポートした場合
  • 多くの編集を経てダイアグラムが乱雑になった場合
  • 大量の要素をすばやく整理したい場合
  • ラフなスケッチからきれいなレイアウトにしたい場合

自動レイアウト適用前

自動レイアウトの適用

自動レイアウトは インスペクタ(Inspector) にあります。専用の配置(Arrange)メニューやツールバーボタンはありません。

  1. インスペクタ(Inspector)(右サイドバー)を開き、配置(Arrange) タブを選択します
  2. レイアウト(Layout) セクションを展開します
  3. レイアウト(Layout) ドロップダウンからアルゴリズムを選択します
  4. 必要に応じてアルゴリズムのオプションを調整します(オプションはアルゴリズムによって変わります)
  5. レイアウト(Layout) ボタンをクリックしてダイアグラムを配置します

レイアウト(Layout) ボタンは アクティブなダイアグラム全体(現在のタブにあるすべてのシェイプ)を配置するため、事前に何かを選択する必要はありません。結果が気に入らない場合は Cmd+Z で元に戻せます。

自動レイアウト適用後

レイアウトアルゴリズム

レイアウト(Layout) ドロップダウンから、データの形状に合ったアルゴリズムを選択してください:

アルゴリズム最適な用途
階層(Traditional)(デフォルト)フローチャート、組織図、依存関係グラフ — Sugiyama ベースのレイヤー化された階層構造
レイヤー(Layered)フローの方向やコネクタのスタイルを明示的にコントロールしたい有向グラフ(Dagre スタイル)
ツリー(Tree)厳格な親 → 子の階層
放射状(Radial)中央のルートから放射状に広がる階層
円形(Circular)リングの周りに配置されたノード;サイクルやピアネットワークに最適
フォースディレクト(Force-directed)一般的なグラフのための有機的で物理ベースの間隔
オーガニック(Organic)密なグラフのための自然で均等に広がるレイアウト
グリッド / パック(Grid / Pack)関連が薄い要素の整然としたグリッドまたはパック配置

ヒント: 同じダイアグラムでいくつかのアルゴリズムを試してみてください — Cmd+Z で各結果を瞬時に元に戻せるので、すばやく比較できます。

レイアウトオプション

アルゴリズムのドロップダウンの下に表示されるオプションは、選択したアルゴリズムによって変わります。最も役立つものは以下のとおりです:

方向(Direction)(レイヤーとツリー)

レイヤー(Layered) と ツリー(Tree) のアルゴリズムでは、方向(Direction) ピッカーで階層のフローを制御します:

方向最適な用途
上から下(Top → Bottom)組織図、フローチャート
下から上(Bottom → Top)デシジョンツリー
左から右(Left → Right)プロセスフロー、タイムライン
右から左(Right → Left)RTL ダイアグラム

間隔(Spacing)

間隔のコントロールはアルゴリズムごとに名前が付けられています。たとえば:

  • レイヤー(Layered): ノード間隔(Node spacing)(兄弟ノード間)と ランク間隔(Rank spacing)(レベル間)
  • ツリー(Tree): レベル、兄弟、サブツリーの間隔
  • グリッド / パック(Grid / Pack): 列数に加えて水平・垂直の間隔
  • 円形 / 放射状(Circular / Radial): 半径(またはレベル間隔)と開始角度

コネクタスタイル(レイヤー)

レイヤー(Layered) アルゴリズムでは、コネクタの描画方法も選択できます — 直線(Straight)、直交(Orthogonal)(直角)、曲線(Curved) — さらに直交ルーティングを微調整できます(シェイプバッファ、セグメントペナルティ、交差ペナルティ)。

ライブフォースレイアウト(フォースディレクトとオーガニック)

フォースディレクト(Force-directed) と オーガニック(Organic) のアルゴリズムでは、ライブ(Live) トグルでシミュレーションを継続実行できます:ノードをドラッグすると、その周りでレイアウトが再緩和されます。結果を保持するには ライブ(Live) をオフにします。

自動レイアウトの曲線

自動レイアウト(Autolayout) チェックボックスは、ノードの配置ではなくコネクタに作用します:有効にすると、接続されたシェイプを移動するたびに曲線コネクタが自動的に形状を再計算します。曲線ハンドルを完全に手動で制御したい場合はオフにします。

ヒント: 同じレイアウト(Layout)セクションには 選択したシェイプを接続(Connect selected shapes) ボタンもあり、選択したシェイプを順番に接続します — レイアウトする前にグラフをすばやく構築する方法です。

自動レイアウトインスペクタ

階層(Sugiyama)アルゴリズム

デフォルトの 階層(Traditional) アルゴリズムは、Sugiyama 法(レイヤード・グラフ描画)の完全な実装であり、以下の処理を行います:

  1. レイヤーの割り当て: 接続に基づいてノードを階層レベルに配置します
  2. 交差の削減: レイヤー間のエッジ交差を最小化します
  3. ノードの配置: エッジの長さを最小化するようにノードを配置します
  4. エッジのルーティング: きれいなコネクタパスを作成します

別の レイヤー(Layered) アルゴリズムは、これに関連する Dagre スタイルのレイヤードレイアウトで、方向とコネクタスタイルを明示的に制御できる機能を追加したものです。どちらも以下に最適です:

  • フローチャート
  • 組織図
  • 依存関係グラフ
  • UML クラス階層
  • ステートマシン

より良い結果を得るためのヒント

自動レイアウト実行前

  1. 不要な接続を削除: 余分なエッジが複雑さを増します
  2. 関連アイテムをグループ化: グループは単一ノードとして扱われます
  3. 方向を検討: レイヤーとツリーでは、ダイアグラムに適した方向を考えましょう

自動レイアウト実行後

  1. 位置の微調整: 必要に応じて個々の要素を調整します
  2. ラベルの確認: ラベルが読みやすく重なっていないことを確認します
  3. 間隔の調整: 要素が窮屈な場合は間隔を広げてから、もう一度 レイアウト(Layout) をクリックします

制限事項

  • ダイアグラム全体のみ: レイアウト(Layout)ボタンは現在の選択範囲だけでなく、アクティブなタブ全体を配置します
  • 循環グラフ: 循環参照のあるダイアグラムは完璧にレイアウトされない場合があります
  • 密なグラフ: 非常に密なダイアグラムではエッジの交差が残る場合があります
  • カスタム位置: レイアウトを実行すると、手動で設定した位置が上書きされます

元に戻す

結果が気に入らない場合は、Cmd+Z を押してレイアウトを元に戻し、以前の位置を復元できます。