この教材は、原論文が使ったデータそのものを使えていません。そこで代わりのデータで同じ問いを追いかけ、結論の向き(増える/減る、強い/弱い)が原論文と一致するかを確かめます。「同じ数値が出る」ことは目標にしていません。
| 原論文が使ったデータ | SSDSE・社会福祉施設等調査・国勢調査 分析単位:市区町村 中核手法:記述統計量・線形モデル・残差分析・相関分析 |
|---|---|
| この教材が使うデータ |
|
| 原論文(PDF) | 人口規模によって異なる保育所数・保育所在所児数・定員充足率の関係 優秀賞/小野島 昂洋(早稲田大学大学院教育学研究科) |
▶ ここに書いてある分析は、ページ下部の「🐍 ブラウザで動かす」でそのまま実行できます(インストール不要)。動かしているのは code/2018_U2_yushu.py(299 行)そのものです。
このページで実SSDSEから実再現できるのは図2(保育所等数×在所児数の回帰)だけです。コードの編集は不要です。図1・図3・図4は、原論文が市区町村(1668自治体)と定員数(社会福祉施設等調査)を使っており、市区町村の粒度・定員数が現行SSDSEに無いため、原論文の報告値を転記して可視化します。
data/raw/ フォルダに入れます。html/figures/ に自動保存されます。図2は SSDSE-B の保育所等数(J2503)・在所児数(J2506・2015年)から実再現、図1・図3・図4は原論文の報告値から可視化します。
「保活」という言葉に象徴されるように、待機児童問題は都市部で深刻な一方、地方の周辺農村部では多くの保育所等が定員割れを起こしている。政府は待機児童数を市区町村ベースで把握しているが、保育所等の定員は国全体のレベルでしか報告されていない。著者はここに着目した。
そこで本研究は、保育の受け皿の実態が市区町村レベルでどう違うかを明らかにするため、保育所等数・保育所等在所児数・定員充足率の3つの関係を検討する。とくに市区町村の人口規模によってこれらの関係性に差があるかを、記述統計・定数項なし回帰・残差分析・相関で丁寧にたどる。国全体の指標では見えない地域差を、政策立案の基礎資料として示すことが狙いである。
大学生・一般の部・優秀賞 SSDSE(保育所等数・在所児数) 定数項なし回帰・残差分析 人口規模による層別・相関
原論文は1668市区町村(保育所等数・在所児数がともに0の自治体を除外)を単位に、2015年の2つの統計を結合している。分析はすべて R ver 3.3.2 で行われた。
| 役割 | 変数 | 出典(SSDSE 列名) | 本ページでの扱い |
|---|---|---|---|
| 説明 | 保育所等数 | 社会福祉施設等調査 → SSDSE(J2503) | 実再現(都道府県粒度) |
| 被説明 | 保育所等在所児数 | 社会福祉施設等調査 → SSDSE(J2506) | 実再現(都道府県粒度) |
| 層別キー | 人口総数(5万・20万・50万で4区分) | 国勢調査 → SSDSE(A1101) | 報告値(市区町村区分は再現不可) |
| 加工 | 定員充足率=在所児数÷定員数×100 | 社会福祉施設等調査(定員数はSSDSE未収録) | 報告値の可視化 |
市区町村を人口総数で5万人未満(1125)・5〜20万人(414)・20〜50万人(94)・50万人以上(35)の4区分に分け、「保育所等1つあたり在所児数=在所児数÷保育所等数」の平均・中央値・標準偏差を比べる。実数のまま比べると規模に引っ張られるため、1あたりに直して層を横並びにしている。
「在所児数=β×保育所等数」という定数項なしの線形モデルを当てる。保育所が0なら在所児も0という原点を通す発想だ。値の大きい自治体に引っ張られないよう平方根変換したモデルも併用し、両者の分散説明率(R²)と残差を比べる。
回帰の残差(保育所等数で説明できなかった在所児数のズレ)と定員充足率の相関係数を、人口規模の層ごとに計算する。同じ関係が全層で成り立つのか、規模で変わるのかを確かめるのが狙いである。
まず原論文の出発点である「保育所等1つあたり在所児数は人口規模で違うのか」を見る。市区町村を人口規模で層別した集計は47都道府県では作れないため、原論文 表2 の報告値を転記して可視化する(再計算ではない)。
DataFrame に転記する。このブロックは数値を作り出さず、原論文の報告値を読み込むだけ。以降の図1・図3・図4はすべてこの報告値を出発点にする。56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | # 原論文(小野島 2018)の本文・表から転記した報告値。いずれも市区町村(1668自治体) # を単位とする 2015 年データの集計値であり、このブロックで数値を作り出してはいない。 # (A)人口規模別の「保育所等1つあたり在所児数」要約統計量(原論文 表2) POP_STATS = pd.DataFrame([ # 区分, 市区町村数, 最小値, 中央値, 平均値, 最大値, 標準偏差 ['0〜5万人', 1125, 5.0, 74.67, 79.22, 309.00, 37.13], ['5〜20万人', 414, 46.0, 96.78, 99.83, 196.00, 23.16], ['20〜50万人', 94, 74.49, 100.62, 101.46, 154.09, 15.10], ['50万人以上', 35, 82.72, 101.91, 104.62, 156.54, 15.75], ], columns=['人口規模', '市区町村数', '最小値', '中央値', '平均値', '最大値', '標準偏差']) # (B)保育所等数×在所児数の定数項なし回帰の報告値(原論文 4.2・4.3、市区町村1668) REPORT_REG = { '実数': {'beta': 98.344, 'resid_sd': 577.0, 'r2': 0.9701}, '平方根': {'beta': 9.6536, 'resid_sd': 4.71, 'r2': 0.9839}, } # (C)平方根変換モデルで残差が正で大きい市区町村(原論文 4.2 の表) RESID_TOP = pd.DataFrame([ ['福岡県', '福岡市', 40.01, '指定都市'], ['広島県', '広島市', 25.68, '指定都市'], ['愛知県', '豊橋市', 20.28, '中核市'], ['大阪府', '大阪市', 17.81, '指定都市'], ['大阪府', '堺市', 17.31, '指定都市'], ['岡山県', '岡山市', 16.21, '指定都市'], ['京都府', '宇治市', 14.35, '市'], ['愛知県', '岡崎市', 14.09, '中核市'], ['富山県', '富山市', 13.80, '中核市'], ], columns=['都道府県', '市区町村', '残差', '都市区分']) # (D)人口規模別「定員充足率×回帰残差」の相関係数(原論文 4.3) CORR_BY_POP = pd.DataFrame([ ['0〜5万人', 0.45], ['5〜20万人', 0.23], ['20〜50万人', 0.00], ['50万人以上', 0.11], ], columns=['人口規模', '相関係数']) |
=== [1] 原論文の報告値(市区町村1668・2015年)の読み込み === 表2:人口規模別 保育所等1つあたり在所児数(報告値) 人口規模 市区町村数 最小値 中央値 平均値 最大値 標準偏差 0〜5万人 1125 5.00 74.67 79.22 309.00 37.13 5〜20万人 414 46.00 96.78 99.83 196.00 23.16 20〜50万人 94 74.49 100.62 101.46 154.09 15.10 50万人以上 35 82.72 101.91 104.62 156.54 15.75 定数項なし回帰の報告値(在所児数 = β × 保育所等数): 実数モデル: β=98.344, 残差標準偏差=577.0, 分散説明率R²=0.9701 平方根モデル: β=9.6536, 残差標準偏差=4.71, 分散説明率R²=0.9839 残差が正で大きい市区町村(平方根変換モデル・報告値): 都道府県 市区町村 残差 都市区分 福岡県 福岡市 40.01 指定都市 広島県 広島市 25.68 指定都市 愛知県 豊橋市 20.28 中核市 大阪府 大阪市 17.81 指定都市 大阪府 堺市 17.31 指定都市 岡山県 岡山市 16.21 指定都市 京都府 宇治市 14.35 市 愛知県 岡崎市 14.09 中核市 富山県 富山市 13.80 中核市 定員充足率×残差の相関係数(人口規模別・報告値): 人口規模 相関係数 0〜5万人 0.45 5〜20万人 0.23 20〜50万人 0.00 50万人以上 0.11
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | # 原論文 表2 の報告値(平均値と標準偏差)を人口規模区分ごとに棒グラフ化する。 # 元データは市区町村版 SSDSE(現行 SSDSE-B には市区町村の粒度が無い)ため、これは # 再計算ではなく報告値の可視化。エラーバー=標準偏差で「ばらつきの大きさ」も示す。 labels = POP_STATS['人口規模'].tolist() means = POP_STATS['平均値'].values sds = POP_STATS['標準偏差'].values xpos = np.arange(len(labels)) fig1, ax1 = plt.subplots(figsize=(9, 6)) bars = ax1.bar(xpos, means, yerr=sds, capsize=8, width=0.6, color=['#E65100', '#1565C0', '#2E7D32', '#6A1B9A'], alpha=0.85, edgecolor='white', error_kw={'elinewidth': 1.8, 'ecolor': '#444'}) for xi, m, s in zip(xpos, means, sds): ax1.text(xi, m + s + 3, f'平均 {m:.1f}\n(SD {s:.1f})', ha='center', fontsize=10) ax1.set_xticks(xpos) ax1.set_xticklabels(labels, fontsize=11) ax1.set_ylabel('保育所等1つあたりの在所児数(人)', fontsize=11) ax1.set_ylim(0, 160) ax1.set_title('図1 人口規模別 保育所等1つあたりの在所児数(平均±標準偏差)\n' '【原論文 表2 の報告値の可視化(再計算ではない・市区町村1668)】', fontsize=12, fontweight='bold', pad=12) ax1.grid(axis='y', alpha=0.3) plt.tight_layout() fig1.savefig(os.path.join(FIG_DIR, '2018_U2_fig1.png'), bbox_inches='tight') plt.close(fig1) |
=== [2] 図1: 人口規模別の保育所等1つあたり在所児数(報告値の可視化) === 人口規模が小さいほど平均が小さく、標準偏差(ばらつき)は大きい: 0〜5万人 : 平均 79.22 / SD 37.13(最も低く・最もばらつく) 50万人以上: 平均 104.62 / SD 15.75(最も高く・最も安定) 平均の差(50万以上 − 0〜5万)= 25.40 人 SDの比(0〜5万 ÷ 50万以上) = 2.36 倍 saved: html/figures/2018_U2_fig1.png
本研究の中心が「在所児数=β×保育所等数」という定数項なしの比例モデル(原論文 4.2)だ。保育所等数(J2503)・在所児数(J2506)は現行 SSDSE-B に実在するので、ここは唯一 実データで再現できる。原論文と同じ2015年で回帰を当て、報告値と照合する。ただし原論文は市区町村1668、SSDSE-Bは都道府県47で粒度が異なる。
cp932 で読み(先頭列が年度・単位行は skiprows=[1])、原論文と同じ 年度==2015 の都道府県データで保育所等数(J2503)と在所児数(J2506)を取り出す。定数項なし最小二乗 β=Σxy/Σx² と分散説明率 R² を、実数モデルと平方根変換モデルで計算し、散布図と回帰直線を描く。151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | # 原論文 4.2 の中心的な関係「在所児数 = β × 保育所等数(定数項なし)」を、実データで # 再現する。原論文は市区町村1668だが、現行 SSDSE-B は都道府県47。ここでは原論文と # 同じ 2015 年の都道府県データを使い、粒度差を明示したうえで関係の再現を試みる。 # データ仕様:cp932・先頭列 'SSDSE-B-2026' が年度・2行目(単位行)は skiprows=[1]。 df = pd.read_csv(DATA_B, encoding='cp932', skiprows=[1]) d15 = df[df['SSDSE-B-2026'] == 2015].copy() # 原論文と同じ 2015 年 x = d15['J2503'].astype(float).values # 保育所等数 y = d15['J2506'].astype(float).values # 保育所等在所児数 def fit_no_intercept(xv, yv): """定数項なし最小二乗 β=Σxy/Σx²、分散説明率 R²=1−Σ残差²/Σy²。""" beta = (xv * yv).sum() / (xv * xv).sum() resid = yv - beta * xv r2 = 1.0 - (resid ** 2).sum() / (yv ** 2).sum() return beta, resid, r2 b_raw, res_raw, r2_raw = fit_no_intercept(x, y) # 実数モデル b_sqrt, res_sqrt, r2_sqrt = fit_no_intercept(np.sqrt(x), np.sqrt(y)) # 平方根変換 fig2, (axL, axR) = plt.subplots(1, 2, figsize=(13, 6)) # 左:実数 axL.scatter(x, y, s=45, color='#1565C0', alpha=0.75, edgecolor='white', zorder=3) xl = np.linspace(0, x.max(), 100) axL.plot(xl, b_raw * xl, color='crimson', lw=2.2, zorder=4, label=f'実再現 β={b_raw:.3f}(原論文報告 98.344)') axL.set_title('左:実数モデル', fontsize=12) axL.set_xlabel('保育所等数 J2503(所)', fontsize=11) axL.set_ylabel('保育所等在所児数 J2506(人)', fontsize=11) axL.legend(loc='upper left', fontsize=10) axL.grid(alpha=0.3) # 右:平方根変換 axR.scatter(np.sqrt(x), np.sqrt(y), s=45, color='#2E7D32', alpha=0.75, edgecolor='white', zorder=3) xs = np.linspace(0, np.sqrt(x).max(), 100) axR.plot(xs, b_sqrt * xs, color='crimson', lw=2.2, zorder=4, label=f'実再現 β={b_sqrt:.4f}(原論文報告 9.6536)') axR.set_title('右:平方根変換モデル', fontsize=12) axR.set_xlabel('√保育所等数', fontsize=11) axR.set_ylabel('√保育所等在所児数', fontsize=11) axR.legend(loc='upper left', fontsize=10) axR.grid(alpha=0.3) fig2.suptitle('図2 保育所等数 × 保育所等在所児数(定数項なし回帰)\n' '【実SSDSE-B-2026・2015年・都道府県47の実再現:市区町村1668とは粒度が異なる】', fontsize=12.5, fontweight='bold') plt.tight_layout(rect=[0, 0, 1, 0.94]) fig2.savefig(os.path.join(FIG_DIR, '2018_U2_fig2.png'), bbox_inches='tight') plt.close(fig2) |
=== [3] 図2: 保育所等数×在所児数 定数項なし回帰(実SSDSE-B 2015・都道府県粒度・実再現) === 対象年: 2015 分析単位: 都道府県 47(原論文は市区町村1668) 定数項なし回帰の実再現値 vs 原論文の報告値(市区町村): 実数モデル : β実再現=96.781 / 報告値=98.344 R²実再現=0.9860 / 報告 0.9701 平方根モデル: β実再現=9.7124 / 報告値=9.6536 R²実再現=0.9959 / 報告 0.9839 → 粒度が違う(47県 vs 1668市区町村)にもかかわらず、強い比例関係(R²≒0.99)は 都道府県データでも再現され、βも報告値に近い。原論文の核心的主張は頑健である。 saved: html/figures/2018_U2_fig2.png
比例モデルのR²は0.97と高いが、原論文は「いくつかの市区町村は正の方向に大きな残差を持つ」(原論文 4.2)と指摘する。残差=保育所等数では説明できなかった在所児数のズレだ。市区町村ごとの残差は市区町村版データがないと再現できないため、原論文の表を報告値としてランキング可視化する。
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 | # 原論文 4.2 の「平方根変換モデルで残差が正に大きい市区町村」の報告値を横棒で並べる。 # 残差=保育所等数では説明できなかった在所児数のずれ。市区町村版データが現行SSDSEに # 無いため再計算はできず、原論文の報告値をそのまま可視化する。都市区分で色分け。 resid_df = RESID_TOP.sort_values('残差') citycolor = {'指定都市': '#C62828', '中核市': '#E65100', '市': '#1565C0'} colors = [citycolor[c] for c in resid_df['都市区分']] ylab = [f"{r['市区町村']}({r['都道府県']})" for _, r in resid_df.iterrows()] fig3, ax3 = plt.subplots(figsize=(9.5, 6.5)) ax3.barh(range(len(resid_df)), resid_df['残差'], color=colors, alpha=0.88, edgecolor='white') ax3.set_yticks(range(len(resid_df))) ax3.set_yticklabels(ylab, fontsize=10) for i, v in enumerate(resid_df['残差']): ax3.text(v + 0.4, i, f'{v:.2f}', va='center', fontsize=9) handles = [plt.Rectangle((0, 0), 1, 1, color=c) for c in citycolor.values()] ax3.legend(handles, citycolor.keys(), title='都市区分', loc='lower right', fontsize=10) ax3.set_xlabel('平方根変換モデルの正の残差(原論文 報告値)', fontsize=11) ax3.set_xlim(0, 46) ax3.set_title('図3 保育所等数で説明されない在所児数(正の残差)が大きい市区町村\n' '【原論文 4.2 の報告値の可視化(再計算ではない)】', fontsize=12, fontweight='bold', pad=12) ax3.grid(axis='x', alpha=0.3) plt.tight_layout() fig3.savefig(os.path.join(FIG_DIR, '2018_U2_fig3.png'), bbox_inches='tight') plt.close(fig3) |
=== [4] 図3: 残差が正で大きい市区町村ランキング(報告値の可視化) === 上位9市のうち 指定都市・中核市 が 8 を占める(残りは「市」1)。 最大残差: 福岡市 40.01(指定都市) → 比例関係だけでは説明できない系統的な誤差が、大都市に偏って残っている。 saved: html/figures/2018_U2_fig3.png
最後に原論文の結論を支える数値を見る。残差(保育所等数で説明できない在所児数)と定員充足率の相関係数を人口規模別に見ると、規模で相関の強さが変わる(原論文 4.3)。定員数(社会福祉施設等調査)はSSDSE未収録で定員充足率を計算できないため、原論文の報告値を可視化する。
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | # 原論文 4.3 の結論を支える数値。人口規模ごとに「定員充足率」と「回帰残差」の相関係数 # を報告値のまま棒グラフ化する。定員充足率は社会福祉施設等調査由来で SSDSE に列が # 無く再現不能のため、報告値の可視化にとどめる。人口規模が小さいほど相関が強い。 cpos = np.arange(len(CORR_BY_POP)) cvals = CORR_BY_POP['相関係数'].values fig4, ax4 = plt.subplots(figsize=(9, 6)) bars = ax4.bar(cpos, cvals, width=0.6, color=['#E65100', '#F9A825', '#90A4AE', '#78909C'], alpha=0.9, edgecolor='white') for xi, v in zip(cpos, cvals): ax4.text(xi, v + 0.012, f'r = {v:.2f}', ha='center', fontsize=12, fontweight='bold') ax4.set_xticks(cpos) ax4.set_xticklabels(CORR_BY_POP['人口規模'], fontsize=11) ax4.set_ylabel('定員充足率 × 回帰残差 の相関係数', fontsize=11) ax4.set_ylim(0, 0.55) ax4.axhline(0, color='#333', lw=0.8) ax4.set_title('図4 人口規模別「定員充足率 × 回帰残差」の相関係数\n' '【原論文 4.3 の報告値の可視化(再計算ではない)】', fontsize=12, fontweight='bold', pad=12) ax4.grid(axis='y', alpha=0.3) plt.tight_layout() fig4.savefig(os.path.join(FIG_DIR, '2018_U2_fig4.png'), bbox_inches='tight') plt.close(fig4) |
=== [5] 図4: 人口規模別の定員充足率×残差の相関係数(報告値の可視化) === 人口規模が小さいほど、定員充足率が残差(=保育所数で説明されない在所児数)を よく説明する(相関が強い): 0〜5万人 : r = 0.45 5〜20万人 : r = 0.23 20〜50万人 : r = 0.00 50万人以上 : r = 0.11 → 町村では定員が充足しているほど残差が大きい(正の相関)。都市部では相関が消え、 残差のばらつきは定員充足率以外の要因で説明される必要がある。 saved: html/figures/2018_U2_fig4.png
著者は3つの分析から、次の3点を読み解いた(原論文 5章)。
人口5万人未満の市区町村では、保育所等1つあたりの平均在所児数が少ない(79.22)一方、市区町村間のばらつきが大きい(標準偏差37.13)。保育所が1〜2か所しかない町村では、少数の施設が地域の保育を担うため、1施設あたりの人数が極端に振れやすい。「国全体の平均」では見えない地方の多様性がここに表れている。
保育所等数と在所児数には明確な比例関係(R²=0.9701)があるが、指定都市・中核市には大きな正の残差が残る(福岡市40.01など)。比例だけでは説明できないズレが都市部に偏る、というのが残差分析の発見だ。都市部では1施設あたりの受け入れが多い、あるいは大規模施設が多いといった要因が示唆される。
残差と定員充足率の相関は、人口規模が小さいほど強い(0.45→0.11)。町村では「定員が充足しているほど在所児数が上振れる」正の関係があるが、大都市では定員充足率のばらつき自体が小さく、残差のばらつきは定員充足率とは別の要因で説明される必要がある。
本研究は、保育所等数・在所児数・定員充足率の関係が市区町村の人口規模で異なるかという問いに、層別記述統計・定数項なし回帰・残差分析・相関で迫った。結果、小さい町村ほど1あたり在所児数は少なくばらつき、比例関係の残差は指定都市・中核市に偏り、定員充足率と残差の相関は人口規模が小さいほど強い(0.45→0.11)という3点を報告した。著者は「待機児童解消などの政策は、国全体の指標ではなく人口規模による地域差を勘案すべき」と結論した。本ページでは、保育所等数・在所児数を実SSDSEで実再現し(図2)、人口規模の層別・定員充足率は報告値として可視化して切り分けた。
このページの図は、以下から再現できます。
🐍 再現コード(.py) 📊 SSDSE-B-2026.csv
※ 図2(保育所等数×在所児数の定数項なし回帰)はSSDSE-B-2026の2015年・都道府県データから算出した実再現です(原論文は市区町村1668で粒度が異なるため係数は完全一致しません)。図1(人口規模別の1あたり在所児数)・図3(残差が大きい市区町村)・図4(定員充足率×残差の相関)は、原論文が市区町村版SSDSEや定員数(社会福祉施設等調査)を用いており現行SSDSEに収録が無いため、原論文の報告値を転記して可視化したものです(新たな数値の捏造はしていません)。
この研究を読むとき・まねするときに陥りやすい誤解を整理する。
クリックすると各用語の詳しい解説ページに移動できます。
この研究の中心である定数項なし回帰・残差分析・層別相関を、注意点まで順に説明する。
この研究の「都市部に残差が偏る/規模で相関が変わる」という発見は、次の研究の出発点になる。
再現コードを少し変えるだけで試せる課題を、易しい順に用意した。
年度==2015。ここを 2023 に変えて、都道府県での回帰係数βと分散説明率R²がどう変わるか見てみよう(2023年でもR²は0.99前後で強い比例関係が保たれる)。J2506 / J2503 で都道府県ごとの「1あたり在所児数」を計算し、原論文の全体平均86.12(市区町村・報告値)と比べてみよう。粒度が違うと平均も変わることを体感できる。res_raw を都道府県名と並べて降順に表示し、原論文で残差上位だった大都市(福岡・大阪など)を含む府県が、都道府県粒度でも上位に来るか確かめよう。numpy.polyfit(x, y, 1) で定数項ありの回帰を当て、傾き・R²が定数項なしモデルとどう違うかを比較しよう。なぜ本研究が定数項なしを選んだのかを考える。「比例モデルを当て、残差の偏りに地域差を読む」発想は、行政・インフラ・ビジネスの現場で広く使われている。
この研究を読んで浮かびやすい疑問に答える。
この論文を理解できたか、クリックで確認しましょう。間違えても解説が出ます。
このページの分析は、この画面の中でそのまま実行できます。
Python をインストールする必要も、CSV をダウンロードする必要もありません。
下のセルの 「▶ ブラウザで実行」 を上から順に押すか、
「▶ 最初から全部実行」 で一気に流してください。
表示されるのは、本文の図表とまったく同じ計算の結果です
(動かしているのは再現スクリプト code/2018_U2_yushu.py そのもの)。
コードは書き換えられます。「✏️ 書き換える」で数字や変数を変えて ▶ を押すと、 結果がどう変わるかをその場で確かめられます(元に戻すボタンつき)。 ページを開いた時点で裏で実行環境の準備が始まっているので、待ち時間はほとんどありません。 初回だけ実行環境の取得にインターネット接続が必要です。