構造ビューの読み方

構造ビューは「ツリー(左)+ 依存線(さらに左のレーン)」で構成されます。 ここが読めれば、Strata の大半は読めます。

行の見方

ツリー行の構成

行は左から 開閉の三角 → 種別チップ → 名前 → バッジ → 行数(LOC) の順です。

種別チップ(名前の左の四角)

チップ 種別 補足
S サービス strata.config.jsonservices で定義したグループ
M モジュール go.mod / package.json / mix.exs などの単位
P パッケージ Go のパッケージなど
· ディレクトリ / ファイル  
proto ファイル  
ƒ 関数  
RPC(gRPC)  
H HTTP エンドポイント GET /api/users/{} のように表示
G GraphQL フィールド Query.user のように表示
トピック(Pub/Sub) messaging 設定時のみ

バッジ

バッジ 意味
層 n レベル化したときの層番号。数字が大きいほど「上流(呼ぶ側)」
⚠ n(ローズ) その配下にレイヤー違反が n 件ある
↻ 循環 循環依存に含まれる
右端の数字 その行(配下を含む)の行数(LOC)。規模の目安

行にホバーすると ☆(ブックマーク)⊘(この行を非表示) が出ます。 非表示にした行はブラウザに保存され、下部ステータスの「非表示 n」から戻せます。

依存線の読み方

依存線の読み方

線は左のレーンを通ります。「どこから出て、どこに刺さるか」で向きを読みます。

記号・色 意味
● (丸) 依存元。ここから出ていく
▶ (矢じり) 依存先。ここに刺さる
グレーの線 下向きの依存(正常)。上の層が下の層を使っている
ローズ(赤)の線 上向きの依存 = レイヤー違反。下の層が上の層を呼んでいる
破線 サービス境界を越える依存(gRPC / HTTP / GraphQL / proto)
線の太さ 依存の本数(対数)。太いほど結合が強い

ホバーとクリック

  • 行にホバーすると、その行に繋がる線だけが残ります。 緑 = その行が依存する(出る線)青 = その行に依存してくる(入る線)。 破線が流れる向きが呼び出しの向きです
  • 行をクリックすると固定(フォーカス)され、右側に詳細パネルが出ます。 依存先・依存元の一覧、公開 API、経路探索が使えます

地層(レベル化)

並びを「レベル化」にすると、依存の向きからノードを層に分け、層ごとに交互の帯を敷きます。

  • 帯の上ほど「呼ぶ側」、下ほど「呼ばれる側」
  • 上向きの線が一目で分かるのがこの表示の目的です
  • 「⚠ レイヤー違反のみ」チップを押すと、その線だけが残ります(違反が 0 件なら、その旨が右上に出ます)

詳細パネル(行をクリック)

右側のパネルでは、選んだノードについて次が見られます。

  • 依存先 / 依存元: サービス単位でまとめた一覧(⚡RPC と code の内訳つき)。 展開すると関数レベルまで降りられます
  • 公開 API: そのサービスが提供する RPC / HTTP / GraphQL と、使われているかどうか
  • 経路探索: 相手ノードを指定すると、2 点間の呼び出し経路を最大 5 本まで表示します (「この画面の操作が、あのサービスにどう届くのか」を調べるときに使います)

つまずきやすいところ

  • 線が出ない: Strata は「候補が一意に決まるときだけ」線を引きます。 interface 越しの呼び出しや、同じパスのルートが複数ある場合は意図的に引きません
  • テストが混ざる: 既定でテストコードは除外していますが、testsupport のような ヘルパーは「テストを除外」チップで消せます
  • 線が多すぎる: 「概観」で畳む → 「import / call / RPC境界」で種類を絞る → サービス絞り込み、の順で減らすと読みやすくなります