//==============================================================================
        // 関数
        //==============================================================================
        /// <summary>
        /// テキストの表示範囲を可視化します
        /// </summary>
        public static void Show(float outlineSize, Color outlineColor)
        {
            var data = new TMP_RectVisualizerData
                       (
                outlineSize: outlineSize,
                outlineColor: outlineColor
                       );

            Show(data);
        }
        /// <summary>
        /// テキストの表示範囲を可視化します
        /// </summary>
        public static void Show(TMP_RectVisualizerData data)
        {
            // すでに可視化している場合はいったん非表示にします
            Hide();

            // すべてのシーンのルートオブジェクトを取得します
            var rootObjects = GetAllScenes()
                              .SelectMany(c => c.GetRootGameObjects())
            ;

            // すべての Text コンポーネントを取得します
            var textList = rootObjects
                           .SelectMany(c => c.GetComponentsInChildren <Text>(true))
                           .OfType <MaskableGraphic>()
            ;

            // すべての TextMeshProUGUI コンポーネントを取得します
            var textMeshProUGUIList = rootObjects
                                      .SelectMany(c => c.GetComponentsInChildren <TextMeshProUGUI>(true))
                                      .OfType <MaskableGraphic>()
            ;

            // Text と TextMeshProUGUI のリストを結合します
            var list = textList.Concat(textMeshProUGUIList);

            // アウトラインのサイズと色をキャッシュします
            var outlineSize  = data.OutlineSize;
            var outlineColor = data.OutlineColor;

            foreach (var n in list)
            {
                // アウトラインを表示するためのゲームオブジェクトを作成します
                var go = new GameObject("Outline");

                // テキストオブジェクトの子供にします
                go.transform.SetParent(n.transform);

                // アウトラインのゲームオブジェクトは Hierarchy に表示しないかつ
                // シーンに保存しない設定にします
                go.hideFlags = HideFlags.HideAndDontSave;

                // アウトラインを表示するためのコンポーネントをアタッチします
                go.AddComponent <CanvasRenderer>();

                var squareUI = go.AddComponent <OutlineSquareUI>();

                // アウトラインのサイズと色を設定します
                // また、タップ判定から除外します
                squareUI.raycastTarget = false;
                squareUI.OutlineSize   = outlineSize;
                squareUI.color         = outlineColor;

                // アウトラインのサイズをテキストオブジェクトに合わせます
                var rectTransform = go.GetComponent <RectTransform>();

                rectTransform.anchoredPosition = Vector3.zero;
                rectTransform.anchorMin        = Vector2.zero;
                rectTransform.anchorMax        = Vector2.one;
                rectTransform.offsetMin        = Vector2.zero;
                rectTransform.offsetMax        = Vector2.zero;

                // 非表示にするためのリストに追加します
                m_list.Add(go);
            }
        }