構造ビューの読み方
構造ビューは「ツリー(左)+ 依存線(さらに左のレーン)」で構成されます。 ここが読めれば、Strata の大半は読めます。
行の見方
行は左から 開閉の三角 → 種別チップ → 名前 → バッジ → 行数(LOC) の順です。
種別チップ(名前の左の四角)
| チップ | 種別 | 補足 |
|---|---|---|
| S | サービス | strata.config.json の services で定義したグループ |
| 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境界」で種類を絞る → サービス絞り込み、の順で減らすと読みやすくなります