【ねすと】

ネスト とは?

最終更新:
💡 構造の中に、別の構造が入る「入れ子」

コードやデータなどの構造の中に、別の構造が入ること。条件分岐・JSON・HTMLの例、深さと複雑度の違い、早期リターンの注意点を解説します。

📌 このページのポイント
ネスト:外側の中に内側の構造が入る外側:if (active) { … }activeが真のとき内側を調べる内側:if (allowed) { … }allowedも真のとき処理するrun()両方の条件が真の場合にだけ実行深さと、独立した処理経路の数は別
箱の入れ子はコードの包含関係です。条件・戻り値・後処理を保って整理し、JSONやHTMLも各形式の規則に沿って必要な階層を作ります。
ひよこ ひよこ
ネストって、同じものが重なっていること?
ペンギン先生 ペンギン先生
入れ子構造のことだよ。ifの内側にifを置く例もあるけれど、ループの中に条件分岐を置くように、異なる種類でもネストと呼ぶ。データの中に別のデータ構造が入る場合もある。
ひよこ ひよこ
図の二つの条件は、どちらかを満たせばいい?
ペンギン先生 ペンギン先生
この例では両方だよ。外側のactiveが真のときだけ内側のallowedを調べ、そちらも真ならrun()を呼ぶ。内側の条件は、外側の条件を飛び越えて常に実行されるわけではない。
ひよこ ひよこ
深くなると、何が困る?
ペンギン先生 ペンギン先生
今どの条件の内側にいるかや、どの範囲が繰り返されるかを追いにくくなる場合がある。段数だけで良い・悪いを決めず、命名やまとまり、条件の意味も見よう。JSONやHTMLでは必要な階層そのものを表すこともある。
ひよこ ひよこ
早期リターンなら全部解決?
ペンギン先生 ペンギン先生
先に除外条件を判定し、関数から戻ることで主な処理を浅くできる。ただし、その後の後処理や戻り値、副作用を保てるか確認しよう。条件を同じ数だけ残すなら、深さが減っても処理経路の複雑さが減るとは限らないよ。
ひよこ ひよこ
何段まで許されるの?
ペンギン先生 ペンギン先生
全言語共通の上限はない。Linuxカーネルの規約は3段を超えるインデントを見直すよう促し、ESLintのmax-depthは既定の最大値4を設定できる。対象の規約や、何を数えるルールかを確認しよう。
もっと詳しく知りたい人へ

ネストの深さと循環的複雑度は同じ?

深さは入れ子の段数、循環的複雑度は独立した処理経路の数に関する指標です。分岐を階層から並列の早期リターンへ変えても、分岐の数を保つ場合があります。指標の値だけで動作や読みやすさを保証せず、対象のルールとコードを確認します。

JSONやHTMLもネストする?

JSONではオブジェクトや配列の値に別のオブジェクトや配列を入れられます。HTMLでも要素の親子関係がありますが、どの要素でも自由に内側へ置けるわけではありません。必要な階層と、その形式の構文・内容の規則を守ります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ネスト」って出てきたら「構造の中に別の構造が入ること」と思えばだいたいOK!
📖 おまけ:英語の意味
「Nest」 = 巣・入れ子にする
💬 ネストしたコードやデータは、外側と内側の関係を持ちます。実行の順番を矢印で結んだだけの構造や、並んだ項目とは区別します。

参考資料

← 用語集にもどる