では「値渡しと参照渡し」を 図でスライドしながら視覚的に理解できるアニメ解説 のイメージを紹介します。
- 値渡し(プリミティブ型)のアニメイメージ
- 参照渡し(オブジェクト型)のアニメイメージ
- 視覚化アニメのイメージ
- 値渡しと参照渡しを視覚的に理解できるアニメ
- 「浅いコピー(コピーして独立) vs 参照共有(同じデータを共有)」 を視覚的に比較できるインタラクティブ版
- 「ネストしたオブジェクトの浅いコピー vs 深いコピー(deep copy)」のアニメ版
- 浅いコピー・深いコピーをすべてアニメで連動表示、変更の影響が矢印や色でリアルタイムに動く教材
- JavaScriptのコピー・参照パターンを1つの教材で統合し、色・矢印・スライドで全ステップ可視化できるインタラクティブ教材
- 学習者が直接値や配列を変更できる完全インタラクティブ版
- 配列/オブジェクトを複数用意して「浅いコピー vs 深いコピー vs 参照共有」の違いを一目で比較
値渡し(プリミティブ型)のアニメイメージ
1. 変数 a に値を代入
a → 10
2. b = a でコピー
a → 10
b → 10 ← aの値がコピーされた
3. b を変更
b = 20
アニメのイメージ:
a → 10 b → 20
💡 ポイント:aとbは独立。aは変わらない!
参照渡し(オブジェクト型)のアニメイメージ
1. 配列を作る
arr1 → [1, 2, 3]
2. arr2 = arr1 で参照をコピー
arr1 → [1, 2, 3] ← メモリ上の同じ場所を指す
arr2 ↗
3. arr2[0] = 100 を変更
arr1 → [100, 2, 3]
arr2 → [100, 2, 3]
💡 ポイント:arr1とarr2は同じ配列を見ているので、どちらかを変えると両方に影響する!
視覚化アニメのイメージ
- 箱で表現:
- プリミティブ型:値が箱の中に入っていてコピーされる
- オブジェクト型:箱の中に矢印で「データの場所」を示す
プリミティブ型 参照型(オブジェクト型)
[10] a a ──> [1, 2, 3]
[10] b b ──┘
- スライドアニメ:
- aの値/参照がbにコピーされる
- bを変更するとどうなるかを色や矢印で動かす
- 変更の影響があるかないかを瞬時に見えるようにする
値渡しと参照渡しを視覚的に理解できるアニメ
See the Pen Animation of Pass-by-Value and Pass-by-Reference by MONO365 -Color your days- (@monoqlo365) on CodePen.
使い方
- 「次のステップ」ボタンを押すとアニメーションが進む
- プリミティブ型では値のコピーと独立を確認
- オブジェクト型では参照共有と変更の影響を確認
See the Pen Animation of Pass-by-Value and Pass-by-Reference #2 by MONO365 -Color your days- (@monoqlo365) on CodePen.
「浅いコピー(コピーして独立) vs 参照共有(同じデータを共有)」 を視覚的に比較できるインタラクティブ版
See the Pen Shallow Copy vs Reference Sharing Animation by MONO365 -Color your days- (@monoqlo365) on CodePen.
✅ ポイント
- 参照共有
arr1とarr2は同じ配列を指すarr2を変更するとarr1も変わる- 黄色で変更した要素をハイライト
- 浅いコピー
arr3とarr4は独立した配列arr3を変更してもarr4は変わらない
- スライドバー
- 0: 初期状態
- 1: コピー/参照作成
- 2: 変更を加えた結果
- 矢印アニメ
- コピー/参照の流れを矢印で視覚化
「ネストしたオブジェクトの浅いコピー vs 深いコピー(deep copy)」のアニメ版
この教材では以下を示します:
- 浅いコピー(ネスト内部は参照が共有される)
- 深いコピー(ネスト内部も完全にコピーされる)
- スライドバーでステップ操作、変更の影響を確認
- 配列やオブジェクトの要素を色分けして可視化
See the Pen Shallow Copy vs Deep Copy of Nested Objects by MONO365 -Color your days- (@monoqlo365) on CodePen.
✅ このアニメでわかること
- 浅いコピー
- ネストした配列やオブジェクトは参照がコピーされる
obj1.scores[0]を変更するとobj2.scores[0]も変化- ただしトップレベルのプロパティ(name)は独立
- 深いコピー
JSON.parse(JSON.stringify(...))で完全コピーobj3.scores[0]を変更してもobj4.scores[0]は変化しない- トップレベル・ネスト内部すべて独立
- スライドバー
- 0: 初期状態
- 1: コピー作成
- 2: ネスト内部変更
- 3: トップレベル変更
- 矢印アニメ
- コピーの流れを矢印で視覚化
浅いコピー・深いコピーをすべてアニメで連動表示、変更の影響が矢印や色でリアルタイムに動く教材
特徴:
- 浅いコピーと深いコピーを左右に並べて比較
- ネストしたオブジェクトや配列の変更をリアルタイムで色分け
- 矢印でコピーの流れをアニメーション表示
- スライドバーでステップ操作(コピー作成 → ネスト変更 → トップレベル変更)
See the Pen Shallow Copy vs. Deep Copy Real-Time Animation Tutorial by MONO365 -Color your days- (@monoqlo365) on CodePen.
✅ 特徴
- 浅いコピー vs 深いコピーを左右で同時表示
- 左: 浅いコピー(ネスト内部は参照共有)
- 右: 深いコピー(完全に独立)
- ネスト配列の変更をリアルタイム色分け
- 黄色: トップレベル
- 緑: ネスト配列の要素
- 矢印でコピーの流れをアニメ表示
- ステップごとに矢印が右にスライド
- スライドバーでステップ操作
- 0: 初期状態
- 1: コピー作成
- 2: ネスト内部変更
- 3: トップレベル変更
JavaScriptのコピー・参照パターンを1つの教材で統合し、色・矢印・スライドで全ステップ可視化できるインタラクティブ教材
特徴:
- プリミティブ型(値渡し)
- 独立コピーの挙動を可視化
- スライドで値の変化を確認
- オブジェクト・配列型(参照渡し)
- 参照共有と浅いコピーの違いを色で強調
- ネスト配列やオブジェクトの要素を緑でハイライト
- 深いコピー(deep copy)
- JSON.parse(JSON.stringify(…)) や structuredClone などで独立コピー
- ネスト内部も変化しないことを色分け
- 矢印でコピーの流れをアニメ表示
- スライドバーでステップ操作
- ステップ0: 初期状態
- ステップ1: コピー作成
- ステップ2: ネスト内部変更
- ステップ3: トップレベル変更
- ステップ4: 結果の比較
See the Pen JavaScript Copy and Reference Visualization Materials by MONO365 -Color your days- (@monoqlo365) on CodePen.
✅ この統合教材でわかること
- プリミティブ型
- 値渡しなので独立
bの変更はaに影響なし
- オブジェクト・配列型(浅いコピー)
- ネスト内部は参照共有
- ネスト配列を変更するとコピー側も変化
- トップレベルのプロパティは独立
- 深いコピー
- ネスト内部も完全にコピー
- 変更の影響はコピー側に及ばない
- スライドバー
- 0: 初期状態
- 1: コピー作成
- 2: ネスト内部変更
- 3: トップレベル変更
- 4: 結果比較
- 矢印 & 色分け
- コピーの流れを矢印で可視化
- ネスト配列の変更は緑でハイライト
- トップレベル変更は黄色でハイライト
学習者が直接値や配列を変更できる完全インタラクティブ版
特徴:
- プリミティブ型・浅いコピー・深いコピー を同時表示
- 配列やオブジェクトの値を直接編集可能
- 変更が即座にコピー先や参照に反映される(浅いコピーは共有部分が変化、深いコピーは独立)
- 矢印と色でコピーの影響をリアルタイム可視化
- スライドバーでステップ操作も可能
See the Pen JavaScript Copy and Reference Interactive Tutorial by MONO365 -Color your days- (@monoqlo365) on CodePen.
✅ この教材で学べること
- 参照共有
arr1とarr2は同じ配列を参照- ネスト・トップレベルの変更は両方に反映
- 浅いコピー
[...arr]でトップレベルはコピーされるが、ネスト配列の内部は参照- ネストを変更するとコピー側にも影響する
- 深いコピー
JSON.parse(JSON.stringify(...))で完全コピー- ネストもトップレベルも独立
- スライドバー操作
- 0: 初期状態
- 1: コピー作成
- 2: ネスト内部変更
- 3: トップレベル変更
- 色分けによる視覚化
- 緑色でネスト配列の変更箇所を強調
配列/オブジェクトを複数用意して「浅いコピー vs 深いコピー vs 参照共有」の違いを一目で比較
特徴:
- 左から右に「参照共有」「浅いコピー」「深いコピー」を並べる
- 複数オブジェクト/配列を用意して比較
- ネスト配列やオブジェクトの変更を色分けで視覚化
- 矢印でコピーの流れをアニメ表示
- スライドバーでステップ操作(コピー作成 → ネスト変更 → トップレベル変更 → 結果比較)
See the Pen Reference, Shallow Copy, Deep Copy Comparison Materials by MONO365 -Color your days- (@monoqlo365) on CodePen.
✅ この教材で学べること
- 参照共有
arr1とarr2は同じ配列を参照- ネスト・トップレベルの変更は両方に反映
- 浅いコピー
[...arr]でトップレベルはコピーされるが、ネスト配列の内部は参照- ネストを変更するとコピー側にも影響する
- 深いコピー
JSON.parse(JSON.stringify(...))で完全コピー- ネストもトップレベルも独立
- スライドバー操作
- 0: 初期状態
- 1: コピー作成
- 2: ネスト内部変更
- 3: トップレベル変更
- 色分けによる視覚化
- 緑色でネスト配列の変更箇所を強調

