確定拠出年金(iDeCo・企業型DC)の節税メリットを計算できる無料シミュレーターです。 掛金の所得控除効果と運用益の非課税効果を可視化できます。
会社員から自営業・フリーランスまで、5つの加入区分に対応しています。すべての計算がブラウザ内で完結し、入力データが外部に送信されることは一切ありません。
Chart.js版(グラフあり)
確定拠出年金 節税効果シミュレーター
iDeCo・企業型DCの節税メリットを可視化
詳細内訳
掛金総額
¥0
運用益
¥0
最終資産額
¥0
適用税率(参考)
–
⚠️ 注意事項
- 計算された数値は、あくまでもシミュレーションであり、将来の節税効果や運用成果等を保証するものではありません。
- 本シミュレーションは給与所得控除を前提とした簡易計算を行っています。自営業・フリーランスの方は実際の税率と異なる場合があります。
- 本シミュレーションでは、社会保険料控除、各種所得控除等を簡易的に計算しています。
免責事項
本シミュレーションは投資判断の参考となる情報提供のみを目的として作成されたもので、特定の商品の購入を推奨したり、個々の投資家の特定の投資目的、または要望を考慮しているものではありません。確定拠出年金への加入や掛金額の決定は、ご自身の判断と責任でなされるようお願いします。万一、本シミュレーションに基づいてお客様が損害を被ったとしても、当方は一切その責任を負うものではありません。
コピー用コード
<!--
================================================
WordPress カスタムHTMLブロック用コード
================================================
【セキュリティ】✅ ブラウザ内完結 ✅ 通信ゼロ
【利用規約】無償・無保証、投資判断は自己責任
================================================
-->
<!-- MSIM:STYLE-START -->
<style>
.dc-simulator * {margin:0; padding:0; box-sizing:border-box}
.dc-simulator {font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; line-height:1.6; color:#333}
.dc-simulator .container {max-width:1200px; margin:0 auto; background:#fff; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.1); padding:30px}
.dc-simulator h1 {font-size:28px; margin:0 0 10px; color:#1a1a1a; text-align:center}
.dc-simulator .subtitle {font-size:14px; color:#666; text-align:center; margin:0 0 30px}
.dc-simulator h2 {font-size:20px; margin:0 0 20px; color:#1a1a1a}
.dc-simulator h3 {font-size:16px; margin:0 0 15px; color:#555}
.dc-simulator .input-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin:0 0 30px}
.dc-simulator .input-group {display:flex; flex-direction:column}
.dc-simulator .input-group label {font-size:14px; font-weight:600; margin:0 0 8px; color:#555}
.dc-simulator .input-group input,
.dc-simulator .input-group select {padding:12px; border:2px solid #e0e0e0; border-radius:8px; font-size:16px; transition:.3s; background:#fff}
.dc-simulator .input-group input:focus,
.dc-simulator .input-group select:focus {outline:0; border-color:#2ecc71; box-shadow:0 0 0 3px rgba(46,204,113,.1)}
.dc-simulator .input-group input:hover,
.dc-simulator .input-group select:hover {border-color:#b0b0b0}
.dc-simulator .results-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin:0 0 30px; padding:20px; background:#f8f9fa; border-radius:8px}
.dc-simulator .result-item {display:flex; flex-direction:column; align-items:center; padding:15px; background:#fff; border-radius:8px; box-shadow:0 1px 3px rgba(0,0,0,.05)}
.dc-simulator .result-label {font-size:13px; color:#777; margin:0 0 8px; font-weight:500}
.dc-simulator .result-value {font-size:24px; font-weight:700; color:#2ecc71}
.dc-simulator .result-value.tax-save {color:#e74c3c}
.dc-simulator .result-value.annual {color:#3498db}
.dc-simulator .chart-section {position:relative; height:400px; margin-top:20px}
.dc-simulator .chart-section canvas {width:100%!important; height:100%!important}
.dc-simulator .breakdown-section {margin-top:30px; padding:20px; background:#f8f9fa; border-radius:8px}
.dc-simulator .breakdown-grid {display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:20px; margin-top:15px}
.dc-simulator .breakdown-item {background:#fff; padding:15px; border-radius:8px; box-shadow:0 1px 3px rgba(0,0,0,.05)}
.dc-simulator .breakdown-item h4 {font-size:14px; color:#777; margin:0 0 10px}
.dc-simulator .breakdown-item p {font-size:20px; font-weight:700; color:#333}
.dc-simulator .info-box {margin-top:30px; padding:15px; background:#e8f5e9; border-left:4px solid #2ecc71; border-radius:4px}
.dc-simulator .info-box p {font-size:14px; color:#555; margin:0 0 8px}
.dc-simulator .info-box p:last-child {margin-bottom:0}
.dc-simulator .disclaimer-section {margin-top:30px; padding:20px; background:#fff3cd; border-left:4px solid #ffc107; border-radius:4px}
.dc-simulator .disclaimer-section .disclaimer-title {font-size:13px; font-weight:600; color:#856404; margin:0 0 10px}
.dc-simulator .disclaimer-section ul {margin:0 0 15px 20px}
.dc-simulator .disclaimer-section li {font-size:12px; color:#856404; margin:0 0 6px; line-height:1.6}
.dc-simulator .disclaimer-section .disclaimer-text {font-size:12px; color:#856404; line-height:1.6; margin:0}
@media (max-width:768px) {
.dc-simulator .container {padding:20px}
.dc-simulator h1 {font-size:24px; margin-bottom:8px}
.dc-simulator .subtitle {font-size:13px; margin-bottom:20px}
.dc-simulator h2 {font-size:18px}
.dc-simulator .input-section {grid-template-columns:1fr; gap:15px}
.dc-simulator .results-section {grid-template-columns:1fr; padding:15px}
.dc-simulator .result-value {font-size:20px}
.dc-simulator .chart-section {height:300px}
.dc-simulator .breakdown-grid {grid-template-columns:1fr}
}
@media (max-width:480px) {
.dc-simulator .container {padding:15px}
.dc-simulator h1 {font-size:20px}
.dc-simulator h2 {font-size:16px}
.dc-simulator .input-group input,
.dc-simulator .input-group select {padding:10px; font-size:14px}
.dc-simulator .result-value {font-size:18px}
}
</style>
<!-- MSIM:STYLE-END -->
<!-- MSIM:HTML-START -->
<div class="dc-simulator" data-tool="dc-pension" data-version="2.0.0">
<div class="container">
<h1>確定拠出年金 節税効果シミュレーター</h1>
<p class="subtitle">iDeCo・企業型DCの節税メリットを可視化</p>
<div class="input-section">
<div class="input-group">
<label>加入区分</label>
<select data-ms-member-type>
<option value="employee">会社員(企業年金なし)</option>
<option value="employee-with-pension">会社員(企業型DC・DB等あり)</option>
<option value="public-servant">公務員</option>
<option value="self-employed">自営業・フリーランス</option>
<option value="housewife">専業主婦(夫)</option>
</select>
</div>
<div class="input-group">
<label>年収(万円)</label>
<input type="number" data-ms-annual-income value="500" min="0" max="10000" step="10">
</div>
<div class="input-group">
<label>月々の掛金(円)</label>
<input type="number" data-ms-monthly-contribution value="23000" min="0" max="68000" step="1000">
<span data-ms-limit-hint style="font-size:11px;color:#e74c3c;margin-top:4px;display:block">上限: 月23,000円</span>
</div>
<div class="input-group">
<label>掛金年数</label>
<select data-ms-contribution-years>
<option value="5">5年</option>
<option value="10">10年</option>
<option value="15">15年</option>
<option value="20" selected>20年</option>
<option value="25">25年</option>
<option value="30">30年</option>
<option value="35">35年</option>
<option value="40">40年</option>
</select>
</div>
<div class="input-group">
<label>想定運用利回り(年率%)</label>
<input type="number" data-ms-expected-return value="3" min="0" max="20" step="0.1">
</div>
</div>
<div class="results-section">
<div class="result-item">
<span class="result-label">年間節税額</span>
<span class="result-value annual" data-ms-annual-tax-save>¥0</span>
</div>
<div class="result-item">
<span class="result-label">累計節税額</span>
<span class="result-value tax-save" data-ms-total-tax-save>¥0</span>
</div>
<div class="result-item">
<span class="result-label">運用益非課税額</span>
<span class="result-value" data-ms-capital-gains-tax-save>¥0</span>
</div>
<div class="result-item">
<span class="result-label">総節税効果</span>
<span class="result-value" data-ms-total-benefit>¥0</span>
</div>
</div>
<div class="chart-section">
<canvas data-ms-canvas></canvas>
</div>
<div class="breakdown-section">
<h3>詳細内訳</h3>
<div class="breakdown-grid">
<div class="breakdown-item">
<h4>掛金総額</h4>
<p data-ms-total-contribution>¥0</p>
</div>
<div class="breakdown-item">
<h4>運用益</h4>
<p data-ms-investment-gain>¥0</p>
</div>
<div class="breakdown-item">
<h4>最終資産額</h4>
<p data-ms-final-asset>¥0</p>
</div>
<div class="breakdown-item">
<h4>適用税率(参考)</h4>
<p data-ms-tax-rate>-</p>
</div>
</div>
</div>
<div class="disclaimer-section">
<p class="disclaimer-title">⚠️ 注意事項</p>
<ul>
<li>計算された数値は、あくまでもシミュレーションであり、将来の節税効果や運用成果等を保証するものではありません。</li>
<li>本シミュレーションは給与所得控除を前提とした簡易計算を行っています。自営業・フリーランスの方は実際の税率と異なる場合があります。</li>
<li>本シミュレーションでは、社会保険料控除、各種所得控除等を簡易的に計算しています。</li>
</ul>
<p class="disclaimer-title">免責事項</p>
<p class="disclaimer-text">本シミュレーションは投資判断の参考となる情報提供のみを目的として作成されたもので、特定の商品の購入を推奨したり、個々の投資家の特定の投資目的、または要望を考慮しているものではありません。確定拠出年金への加入や掛金額の決定は、ご自身の判断と責任でなされるようお願いします。万一、本シミュレーションに基づいてお客様が損害を被ったとしても、当方は一切その責任を負うものではありません。</p>
</div>
<div style="text-align:right;margin-top:30px;color:#999;font-size:12px">
Powered by <a href="https://minna-calc.com/" target="_blank" rel="noopener" style="color:#0066cc;text-decoration:none">みんなのシミュレーター</a>
</div>
</div>
</div>
<!-- MSIM:HTML-END -->
<!-- MSIM:JS-START -->
<script>
(()=>{
"use strict";
// Chart.js 遅延読み込み
const CJ_URL = "https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js";
let loadingCJ = false, loadedCJ = !!window.Chart;
function ensureChartJs(cb) {
if (loadedCJ) { cb(); return }
if (!loadingCJ) {
loadingCJ = true;
const s = document.createElement("script");
s.src = CJ_URL;
s.defer = true;
s.onload = () => { loadedCJ = true; cb && cb() };
s.onerror = () => console.error("Chart.js load failed");
document.head.appendChild(s);
} else {
const t = setInterval(() => {
if (loadedCJ) { clearInterval(t); cb && cb() }
}, 50);
}
}
// 通貨フォーマッター
const fmt = new Intl.NumberFormat("ja-JP", {
style: "currency",
currency: "JPY",
minimumFractionDigits: 0,
maximumFractionDigits: 0
});
// 所得税率計算(簡易版)
function calcTaxRate(incomeMan) {
const income = incomeMan * 10000;
let deduction;
if (income <= 1625000) deduction = 550000;
else if (income <= 1800000) deduction = income * 0.4 - 100000;
else if (income <= 3600000) deduction = income * 0.3 + 80000;
else if (income <= 6600000) deduction = income * 0.2 + 440000;
else if (income <= 8500000) deduction = income * 0.1 + 1100000;
else deduction = 1950000;
const taxableIncome = income - deduction - 480000 - (income * 0.15);
let incomeTaxRate;
if (taxableIncome <= 1950000) incomeTaxRate = 0.05;
else if (taxableIncome <= 3300000) incomeTaxRate = 0.10;
else if (taxableIncome <= 6950000) incomeTaxRate = 0.20;
else if (taxableIncome <= 9000000) incomeTaxRate = 0.23;
else if (taxableIncome <= 18000000) incomeTaxRate = 0.33;
else if (taxableIncome <= 40000000) incomeTaxRate = 0.40;
else incomeTaxRate = 0.45;
return {
incomeTaxRate: incomeTaxRate,
residentTaxRate: 0.10,
totalRate: incomeTaxRate + 0.10
};
}
// 確定拠出年金計算
function calcDC(monthly, years, returnRate, taxRates) {
const yearlyData = [];
let cumulativeTaxSave = 0;
let totalContribution = 0;
let currentAsset = 0;
const annualContribution = monthly * 12;
const annualTaxSave = annualContribution * taxRates.totalRate;
for (let year = 1; year <= years; year++) {
currentAsset = (currentAsset + annualContribution) * (1 + returnRate / 100);
totalContribution += annualContribution;
cumulativeTaxSave += annualTaxSave;
yearlyData.push({
year: year,
contribution: Math.round(totalContribution),
asset: Math.round(currentAsset),
taxSave: Math.round(cumulativeTaxSave)
});
}
const investmentGain = Math.round(currentAsset - totalContribution);
const capitalGainsTaxSave = Math.round(investmentGain * 0.20315);
return {
yearlyData: yearlyData,
annualTaxSave: Math.round(annualTaxSave),
totalTaxSave: Math.round(cumulativeTaxSave),
capitalGainsTaxSave: capitalGainsTaxSave,
totalBenefit: Math.round(cumulativeTaxSave + capitalGainsTaxSave),
totalContribution: Math.round(totalContribution),
investmentGain: investmentGain,
finalAsset: Math.round(currentAsset),
taxRates: taxRates
};
}
// 掛金上限マップ(2024年12月改正対応)
const CONTRIBUTION_LIMITS = {
'employee': 23000,
'employee-with-pension': 20000,
'public-servant': 20000,
'self-employed': 68000,
'housewife': 23000
};
// ブート関数
function boot(root) {
let chart = null, lastData = null;
const q = s => root.querySelector(s);
const els = {
memberType: q("[data-ms-member-type]"),
annualIncome: q("[data-ms-annual-income]"),
monthlyContribution: q("[data-ms-monthly-contribution]"),
contributionYears: q("[data-ms-contribution-years]"),
expectedReturn: q("[data-ms-expected-return]"),
limitHint: q("[data-ms-limit-hint]"),
annualTaxSave: q("[data-ms-annual-tax-save]"),
totalTaxSave: q("[data-ms-total-tax-save]"),
capitalGainsTaxSave: q("[data-ms-capital-gains-tax-save]"),
totalBenefit: q("[data-ms-total-benefit]"),
totalContribution: q("[data-ms-total-contribution]"),
investmentGain: q("[data-ms-investment-gain]"),
finalAsset: q("[data-ms-final-asset]"),
taxRate: q("[data-ms-tax-rate]"),
cv: q("[data-ms-canvas]")
};
// グラフ描画
function draw(data) {
lastData = data;
if (!loadedCJ) {
ensureChartJs(() => draw(lastData));
return;
}
const labels = data.map(d => `${d.year}年`);
const contribution = data.map(d => d.contribution);
const asset = data.map(d => d.asset);
const taxSave = data.map(d => d.taxSave);
const cfg = {
type: "line",
data: {
labels,
datasets: [
{
label: "掛金累計",
data: contribution,
backgroundColor: "rgba(149,165,166,.2)",
borderColor: "rgba(149,165,166,1)",
borderWidth: 2,
fill: true,
tension: 0.4
},
{
label: "資産総額",
data: asset,
backgroundColor: "rgba(46,204,113,.2)",
borderColor: "rgba(46,204,113,1)",
borderWidth: 2,
fill: true,
tension: 0.4
},
{
label: "累計節税額",
data: taxSave,
backgroundColor: "rgba(231,76,60,.2)",
borderColor: "rgba(231,76,60,1)",
borderWidth: 2,
fill: true,
tension: 0.4
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
interaction: {mode: 'index', intersect: false},
plugins: {
legend: {
display: true,
position: "top",
labels: {
font: {size: 13, family: '-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif'},
padding: 15
}
},
tooltip: {
mode: "index",
intersect: false,
callbacks: {
label: t => (t.dataset.label ? t.dataset.label + ": " : "") + fmt.format(t.parsed.y)
},
backgroundColor: "rgba(0,0,0,.8)",
padding: 12,
titleFont: {size: 14},
bodyFont: {size: 13}
}
},
scales: {
x: {
grid: {display: false},
ticks: {font: {size: 11}}
},
y: {
beginAtZero: true,
title: {display: true, text: "金額(円)", font: {size: 12}},
ticks: {
callback: v => fmt.format(v),
font: {size: 11}
},
grid: {color: "rgba(0,0,0,.05)"}
}
},
animation: {duration: 750, easing: "easeInOutQuart"}
}
};
if (chart) { chart.destroy() }
chart = new Chart(els.cv, cfg);
}
// 掛金上限更新
function updateLimit() {
const memberType = els.memberType.value;
const limit = CONTRIBUTION_LIMITS[memberType];
els.limitHint.textContent = `上限: 月${fmt.format(limit)}`;
els.monthlyContribution.max = limit;
// 現在値が上限を超えている場合は上限に設定
if (parseFloat(els.monthlyContribution.value) > limit) {
els.monthlyContribution.value = limit;
}
}
// 更新
function update() {
const income = parseFloat(els.annualIncome.value) || 0;
const monthly = parseFloat(els.monthlyContribution.value) || 0;
const years = parseInt(els.contributionYears.value) || 1;
const returnRate = parseFloat(els.expectedReturn.value) || 0;
if (income === 0 || monthly === 0) {
els.annualTaxSave.textContent = "¥0";
els.totalTaxSave.textContent = "¥0";
els.capitalGainsTaxSave.textContent = "¥0";
els.totalBenefit.textContent = "¥0";
els.totalContribution.textContent = "¥0";
els.investmentGain.textContent = "¥0";
els.finalAsset.textContent = "¥0";
els.taxRate.textContent = "-";
if (chart) { chart.destroy(); chart = null }
return;
}
const taxRates = calcTaxRate(income);
const result = calcDC(monthly, years, returnRate, taxRates);
els.annualTaxSave.textContent = fmt.format(result.annualTaxSave);
els.totalTaxSave.textContent = fmt.format(result.totalTaxSave);
els.capitalGainsTaxSave.textContent = fmt.format(result.capitalGainsTaxSave);
els.totalBenefit.textContent = fmt.format(result.totalBenefit);
els.totalContribution.textContent = fmt.format(result.totalContribution);
els.investmentGain.textContent = fmt.format(result.investmentGain);
els.finalAsset.textContent = fmt.format(result.finalAsset);
els.taxRate.textContent = `${Math.round(taxRates.totalRate * 100)}%(所得税 ${Math.round(taxRates.incomeTaxRate * 100)}% + 住民税 10%)`;
draw(result.yearlyData);
}
// イベントリスナー
els.memberType.addEventListener("change", () => {
updateLimit();
update();
});
els.annualIncome.addEventListener("input", update);
els.monthlyContribution.addEventListener("input", update);
els.contributionYears.addEventListener("change", update);
els.expectedReturn.addEventListener("input", update);
// Chart.js 遅延読み込み(IntersectionObserver)
if ("IntersectionObserver" in window) {
const io = new IntersectionObserver(es => {
es.some(e => e.isIntersecting) && (ensureChartJs(() => {}), io.disconnect());
});
io.observe(els.cv);
}
updateLimit();
update();
}
// 初期化
window.addEventListener("DOMContentLoaded", () =>
document.querySelectorAll('.dc-simulator[data-tool="dc-pension"]').forEach(boot)
);
})();
</script>
<!-- MSIM:JS-END -->
Chart.jsなし簡易版(軽量)
確定拠出年金 節税効果シミュレーター(簡易版)
iDeCo・企業型DCの節税メリットを可視化(外部CDN不使用)
節税効果の概要
- 掛金による所得控除効果
- ¥0
- 運用益の非課税効果
- ¥0
- 合計節税効果
- ¥0
詳細内訳
掛金総額
¥0
運用益
¥0
最終資産額
¥0
適用税率(参考)
–
⚠️ 注意事項
- 計算された数値は、あくまでもシミュレーションであり、将来の節税効果や運用成果等を保証するものではありません。
- 本シミュレーションは給与所得控除を前提とした簡易計算を行っています。自営業・フリーランスの方は実際の税率と異なる場合があります。
- 本シミュレーションでは、社会保険料控除、各種所得控除等を簡易的に計算しています。
免責事項
本シミュレーションは投資判断の参考となる情報提供のみを目的として作成されたもので、特定の商品の購入を推奨したり、個々の投資家の特定の投資目的、または要望を考慮しているものではありません。確定拠出年金への加入や掛金額の決定は、ご自身の判断と責任でなされるようお願いします。万一、本シミュレーションに基づいてお客様が損害を被ったとしても、当方は一切その責任を負うものではありません。
コピー用コード
<!--
================================================
WordPress カスタムHTMLブロック用コード
確定拠出年金節税効果シミュレータ(簡易版・公的機関版)
================================================
【機能】節税効果計算、詳細内訳表示
【セキュリティ】ブラウザ内完結・通信ゼロ・外部CDN依存なし
【利用規約】無償・無保証、投資判断は自己責任
【特徴】Chart.js不使用・完全スタンドアロン・アクセシビリティ対応
【外部依存】なし
================================================
-->
<!-- MSIM:STYLE-START -->
<style>
.dc-simulator-lite * {margin:0; padding:0; box-sizing:border-box}
.dc-simulator-lite {font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; line-height:1.6; color:#333}
.dc-simulator-lite .container {max-width:1200px; margin:0 auto; background:#fff; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.1); padding:30px}
.dc-simulator-lite h1 {font-size:28px; margin:0 0 10px; color:#1a1a1a; text-align:center}
.dc-simulator-lite .subtitle {font-size:14px; color:#666; text-align:center; margin:0 0 30px}
.dc-simulator-lite h2 {font-size:20px; margin:0 0 20px; color:#1a1a1a}
.dc-simulator-lite h3 {font-size:16px; margin:0 0 15px; color:#555}
.dc-simulator-lite .input-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin:0 0 30px}
.dc-simulator-lite .input-group {display:flex; flex-direction:column}
.dc-simulator-lite .input-group label {font-size:14px; font-weight:600; margin:0 0 8px; color:#555}
.dc-simulator-lite .input-group input,
.dc-simulator-lite .input-group select {padding:12px; border:2px solid #e0e0e0; border-radius:8px; font-size:16px; transition:.3s; background:#fff}
.dc-simulator-lite .input-group input:focus,
.dc-simulator-lite .input-group select:focus {outline:0; border-color:#2ecc71; box-shadow:0 0 0 3px rgba(46,204,113,.1)}
.dc-simulator-lite .input-group input:hover,
.dc-simulator-lite .input-group select:hover {border-color:#b0b0b0}
.dc-simulator-lite .results-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:20px; margin:0 0 30px; padding:20px; background:#f8f9fa; border-radius:8px}
.dc-simulator-lite .result-item {display:flex; flex-direction:column; align-items:center; padding:15px; background:#fff; border-radius:8px; box-shadow:0 1px 3px rgba(0,0,0,.05)}
.dc-simulator-lite .result-label {font-size:13px; color:#777; margin:0 0 8px; font-weight:500}
.dc-simulator-lite .result-value {font-size:24px; font-weight:700; color:#2ecc71}
.dc-simulator-lite .result-value.tax-save {color:#e74c3c}
.dc-simulator-lite .result-value.annual {color:#3498db}
.dc-simulator-lite .summary-section {margin-top:20px; padding:20px; background:#e8f5e9; border-radius:8px; border-left:4px solid #2ecc71}
.dc-simulator-lite .summary-section h3 {color:#2ecc71; margin-bottom:15px}
.dc-simulator-lite .summary-grid {display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:15px}
.dc-simulator-lite .summary-item {padding:12px; background:#fff; border-radius:6px}
.dc-simulator-lite .summary-item dt {font-size:12px; color:#666; margin-bottom:6px}
.dc-simulator-lite .summary-item dd {font-size:20px; font-weight:700; color:#2ecc71}
.dc-simulator-lite .breakdown-section {margin-top:30px; padding:20px; background:#f8f9fa; border-radius:8px}
.dc-simulator-lite .breakdown-grid {display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:20px; margin-top:15px}
.dc-simulator-lite .breakdown-item {background:#fff; padding:15px; border-radius:8px; box-shadow:0 1px 3px rgba(0,0,0,.05)}
.dc-simulator-lite .breakdown-item h4 {font-size:14px; color:#777; margin:0 0 10px}
.dc-simulator-lite .breakdown-item p {font-size:20px; font-weight:700; color:#333}
.dc-simulator-lite .disclaimer-section {margin-top:30px; padding:20px; background:#fff3cd; border-left:4px solid #ffc107; border-radius:4px}
.dc-simulator-lite .disclaimer-section .disclaimer-title {font-size:13px; font-weight:600; color:#856404; margin:0 0 10px}
.dc-simulator-lite .disclaimer-section ul {margin:0 0 15px 20px}
.dc-simulator-lite .disclaimer-section li {font-size:12px; color:#856404; margin:0 0 6px; line-height:1.6}
.dc-simulator-lite .disclaimer-section .disclaimer-text {font-size:12px; color:#856404; line-height:1.6; margin:0}
@media (max-width:768px) {
.dc-simulator-lite .container {padding:20px}
.dc-simulator-lite h1 {font-size:24px; margin-bottom:8px}
.dc-simulator-lite .subtitle {font-size:13px; margin-bottom:20px}
.dc-simulator-lite h2 {font-size:18px}
.dc-simulator-lite .input-section {grid-template-columns:1fr; gap:15px}
.dc-simulator-lite .results-section {grid-template-columns:1fr; padding:15px}
.dc-simulator-lite .result-value {font-size:20px}
.dc-simulator-lite .summary-grid {grid-template-columns:1fr}
.dc-simulator-lite .breakdown-grid {grid-template-columns:1fr}
}
@media (max-width:480px) {
.dc-simulator-lite .container {padding:15px}
.dc-simulator-lite h1 {font-size:20px}
.dc-simulator-lite h2 {font-size:16px}
.dc-simulator-lite .input-group input,
.dc-simulator-lite .input-group select {padding:10px; font-size:14px}
.dc-simulator-lite .result-value {font-size:18px}
}
</style>
<!-- MSIM:STYLE-END -->
<!-- MSIM:HTML-START -->
<div class="dc-simulator-lite" data-tool="dc-pension" data-version="2.0.0-lite">
<div class="container">
<h1>確定拠出年金 節税効果シミュレーター(簡易版)</h1>
<p class="subtitle">iDeCo・企業型DCの節税メリットを可視化(外部CDN不使用)</p>
<div class="input-section">
<div class="input-group">
<label>加入区分</label>
<select data-ms-member-type>
<option value="employee">会社員(企業年金なし)</option>
<option value="employee-with-pension">会社員(企業型DC・DB等あり)</option>
<option value="public-servant">公務員</option>
<option value="self-employed">自営業・フリーランス</option>
<option value="housewife">専業主婦(夫)</option>
</select>
</div>
<div class="input-group">
<label>年収(万円)</label>
<input type="number" data-ms-annual-income value="500" min="0" max="10000" step="10">
</div>
<div class="input-group">
<label>月々の掛金(円)</label>
<input type="number" data-ms-monthly-contribution value="23000" min="0" max="68000" step="1000">
<span data-ms-limit-hint style="font-size:11px;color:#e74c3c;margin-top:4px;display:block">上限: 月23,000円</span>
</div>
<div class="input-group">
<label>掛金年数</label>
<select data-ms-contribution-years>
<option value="5">5年</option>
<option value="10">10年</option>
<option value="15">15年</option>
<option value="20" selected>20年</option>
<option value="25">25年</option>
<option value="30">30年</option>
<option value="35">35年</option>
<option value="40">40年</option>
</select>
</div>
<div class="input-group">
<label>想定運用利回り(年率%)</label>
<input type="number" data-ms-expected-return value="3" min="0" max="20" step="0.1">
</div>
</div>
<div class="results-section">
<div class="result-item">
<span class="result-label">年間節税額</span>
<span class="result-value annual" data-ms-annual-tax-save>¥0</span>
</div>
<div class="result-item">
<span class="result-label">累計節税額</span>
<span class="result-value tax-save" data-ms-total-tax-save>¥0</span>
</div>
<div class="result-item">
<span class="result-label">運用益非課税額</span>
<span class="result-value" data-ms-capital-gains-tax-save>¥0</span>
</div>
<div class="result-item">
<span class="result-label">総節税効果</span>
<span class="result-value" data-ms-total-benefit>¥0</span>
</div>
</div>
<div class="summary-section">
<h3>節税効果の概要</h3>
<div class="summary-grid">
<dl class="summary-item">
<dt>掛金による所得控除効果</dt>
<dd data-ms-summary-tax>¥0</dd>
</dl>
<dl class="summary-item">
<dt>運用益の非課税効果</dt>
<dd data-ms-summary-capital>¥0</dd>
</dl>
<dl class="summary-item">
<dt>合計節税効果</dt>
<dd data-ms-summary-total>¥0</dd>
</dl>
</div>
</div>
<div class="breakdown-section">
<h3>詳細内訳</h3>
<div class="breakdown-grid">
<div class="breakdown-item">
<h4>掛金総額</h4>
<p data-ms-total-contribution>¥0</p>
</div>
<div class="breakdown-item">
<h4>運用益</h4>
<p data-ms-investment-gain>¥0</p>
</div>
<div class="breakdown-item">
<h4>最終資産額</h4>
<p data-ms-final-asset>¥0</p>
</div>
<div class="breakdown-item">
<h4>適用税率(参考)</h4>
<p data-ms-tax-rate>-</p>
</div>
</div>
</div>
<div class="disclaimer-section">
<p class="disclaimer-title">⚠️ 注意事項</p>
<ul>
<li>計算された数値は、あくまでもシミュレーションであり、将来の節税効果や運用成果等を保証するものではありません。</li>
<li>本シミュレーションは給与所得控除を前提とした簡易計算を行っています。自営業・フリーランスの方は実際の税率と異なる場合があります。</li>
<li>本シミュレーションでは、社会保険料控除、各種所得控除等を簡易的に計算しています。</li>
</ul>
<p class="disclaimer-title">免責事項</p>
<p class="disclaimer-text">本シミュレーションは投資判断の参考となる情報提供のみを目的として作成されたもので、特定の商品の購入を推奨したり、個々の投資家の特定の投資目的、または要望を考慮しているものではありません。確定拠出年金への加入や掛金額の決定は、ご自身の判断と責任でなされるようお願いします。万一、本シミュレーションに基づいてお客様が損害を被ったとしても、当方は一切その責任を負うものではありません。</p>
</div>
<div style="text-align:right;margin-top:30px;color:#999;font-size:12px">
Powered by <a href="https://minna-calc.com/" target="_blank" rel="noopener" style="color:#0066cc;text-decoration:none">みんなのシミュレーター</a>
</div>
</div>
</div>
<!-- MSIM:HTML-END -->
<!-- MSIM:JS-START -->
<script>
(()=>{
"use strict";
// 通貨フォーマッター
const fmt = new Intl.NumberFormat("ja-JP", {
style: "currency",
currency: "JPY",
minimumFractionDigits: 0,
maximumFractionDigits: 0
});
// 所得税率計算(簡易版)
function calcTaxRate(incomeMan) {
const income = incomeMan * 10000;
let deduction;
if (income <= 1625000) deduction = 550000;
else if (income <= 1800000) deduction = income * 0.4 - 100000;
else if (income <= 3600000) deduction = income * 0.3 + 80000;
else if (income <= 6600000) deduction = income * 0.2 + 440000;
else if (income <= 8500000) deduction = income * 0.1 + 1100000;
else deduction = 1950000;
const taxableIncome = income - deduction - 480000 - (income * 0.15);
let incomeTaxRate;
if (taxableIncome <= 1950000) incomeTaxRate = 0.05;
else if (taxableIncome <= 3300000) incomeTaxRate = 0.10;
else if (taxableIncome <= 6950000) incomeTaxRate = 0.20;
else if (taxableIncome <= 9000000) incomeTaxRate = 0.23;
else if (taxableIncome <= 18000000) incomeTaxRate = 0.33;
else if (taxableIncome <= 40000000) incomeTaxRate = 0.40;
else incomeTaxRate = 0.45;
return {
incomeTaxRate: incomeTaxRate,
residentTaxRate: 0.10,
totalRate: incomeTaxRate + 0.10
};
}
// 確定拠出年金計算
function calcDC(monthly, years, returnRate, taxRates) {
let totalContribution = 0;
let currentAsset = 0;
const annualContribution = monthly * 12;
const annualTaxSave = annualContribution * taxRates.totalRate;
const cumulativeTaxSave = annualTaxSave * years;
for (let year = 1; year <= years; year++) {
currentAsset = (currentAsset + annualContribution) * (1 + returnRate / 100);
totalContribution += annualContribution;
}
const investmentGain = Math.round(currentAsset - totalContribution);
const capitalGainsTaxSave = Math.round(investmentGain * 0.20315);
return {
annualTaxSave: Math.round(annualTaxSave),
totalTaxSave: Math.round(cumulativeTaxSave),
capitalGainsTaxSave: capitalGainsTaxSave,
totalBenefit: Math.round(cumulativeTaxSave + capitalGainsTaxSave),
totalContribution: Math.round(totalContribution),
investmentGain: investmentGain,
finalAsset: Math.round(currentAsset),
taxRates: taxRates
};
}
// 掛金上限マップ(2024年12月改正対応)
const CONTRIBUTION_LIMITS = {
'employee': 23000,
'employee-with-pension': 20000,
'public-servant': 20000,
'self-employed': 68000,
'housewife': 23000
};
// ブート関数
function boot(root) {
const q = s => root.querySelector(s);
const els = {
memberType: q("[data-ms-member-type]"),
annualIncome: q("[data-ms-annual-income]"),
monthlyContribution: q("[data-ms-monthly-contribution]"),
contributionYears: q("[data-ms-contribution-years]"),
expectedReturn: q("[data-ms-expected-return]"),
limitHint: q("[data-ms-limit-hint]"),
annualTaxSave: q("[data-ms-annual-tax-save]"),
totalTaxSave: q("[data-ms-total-tax-save]"),
capitalGainsTaxSave: q("[data-ms-capital-gains-tax-save]"),
totalBenefit: q("[data-ms-total-benefit]"),
summaryTax: q("[data-ms-summary-tax]"),
summaryCapital: q("[data-ms-summary-capital]"),
summaryTotal: q("[data-ms-summary-total]"),
totalContribution: q("[data-ms-total-contribution]"),
investmentGain: q("[data-ms-investment-gain]"),
finalAsset: q("[data-ms-final-asset]"),
taxRate: q("[data-ms-tax-rate]")
};
// 掛金上限更新
function updateLimit() {
const memberType = els.memberType.value;
const limit = CONTRIBUTION_LIMITS[memberType];
els.limitHint.textContent = `上限: 月${fmt.format(limit)}`;
els.monthlyContribution.max = limit;
// 現在値が上限を超えている場合は上限に設定
if (parseFloat(els.monthlyContribution.value) > limit) {
els.monthlyContribution.value = limit;
}
}
// 更新
function update() {
const income = parseFloat(els.annualIncome.value) || 0;
const monthly = parseFloat(els.monthlyContribution.value) || 0;
const years = parseInt(els.contributionYears.value) || 1;
const returnRate = parseFloat(els.expectedReturn.value) || 0;
if (income === 0 || monthly === 0) {
els.annualTaxSave.textContent = "¥0";
els.totalTaxSave.textContent = "¥0";
els.capitalGainsTaxSave.textContent = "¥0";
els.totalBenefit.textContent = "¥0";
els.summaryTax.textContent = "¥0";
els.summaryCapital.textContent = "¥0";
els.summaryTotal.textContent = "¥0";
els.totalContribution.textContent = "¥0";
els.investmentGain.textContent = "¥0";
els.finalAsset.textContent = "¥0";
els.taxRate.textContent = "-";
return;
}
const taxRates = calcTaxRate(income);
const result = calcDC(monthly, years, returnRate, taxRates);
els.annualTaxSave.textContent = fmt.format(result.annualTaxSave);
els.totalTaxSave.textContent = fmt.format(result.totalTaxSave);
els.capitalGainsTaxSave.textContent = fmt.format(result.capitalGainsTaxSave);
els.totalBenefit.textContent = fmt.format(result.totalBenefit);
els.summaryTax.textContent = fmt.format(result.totalTaxSave);
els.summaryCapital.textContent = fmt.format(result.capitalGainsTaxSave);
els.summaryTotal.textContent = fmt.format(result.totalBenefit);
els.totalContribution.textContent = fmt.format(result.totalContribution);
els.investmentGain.textContent = fmt.format(result.investmentGain);
els.finalAsset.textContent = fmt.format(result.finalAsset);
els.taxRate.textContent = `${Math.round(taxRates.totalRate * 100)}%(所得税 ${Math.round(taxRates.incomeTaxRate * 100)}% + 住民税 10%)`;
}
// イベントリスナー
els.memberType.addEventListener("change", () => {
updateLimit();
update();
});
els.annualIncome.addEventListener("input", update);
els.monthlyContribution.addEventListener("input", update);
els.contributionYears.addEventListener("change", update);
els.expectedReturn.addEventListener("input", update);
updateLimit();
update();
}
// 初期化
window.addEventListener("DOMContentLoaded", () =>
document.querySelectorAll('.dc-simulator-lite[data-tool="dc-pension"]').forEach(boot)
);
})();
</script>
<!-- MSIM:JS-END -->
シミュレーターの特徴
5つの加入区分に対応
会社員(企業年金なし)、会社員(企業型DC・DB等あり)、公務員、自営業・フリーランス、専業主婦(夫)の5区分を選択できます。
各区分の掛金上限額は2024年12月の制度改正に対応しています。
区分を変更すると自動的に掛金上限が更新され、入力値が上限を超える場合は自動調整されます。
2種類の節税効果を計算
掛金による所得控除効果では、年間掛金が全額所得控除されることで軽減される税額を計算します。所得税と住民税の合計削減額が表示されます。
運用益の非課税効果では、確定拠出年金制度では運用益に課税されない特典を金額換算します。通常は約20%課税される運用益が非課税になるメリットを算出します。
視覚的なグラフ表示(通常版)
積み上げ棒グラフで掛金、運用益、節税効果の推移を表示します。
年ごとの資産増加と節税メリットの蓄積を直感的に把握できます。
リアルタイム計算
年収、掛金、掛金年数、運用利回りを変更すると即座に結果が更新されます。複数のシナリオを素早く比較できます。
完全プライバシー保護
すべての計算がブラウザ内で完結します。入力したデータが外部に送信されることは一切ありません。
インターネット接続なしでも動作します(ページ読み込み後)。
複数設置対応
同じページに複数のシミュレーターを設置できます。それぞれが独立して動作し、相互に干渉しません。
2つのバージョンについて
本シミュレーターは、利用環境に応じて2つのバージョンを提供しています。
通常版(グラフあり)
個人ブログ、アフィリエイトサイト、一般企業向けのバージョンです。Chart.jsを使用した視覚的なグラフ表示が特徴です。
積み上げ棒グラフで掛金(青色)、運用益(緑色)、節税効果(オレンジ色)を表示します。年ごとの資産形成状況が直感的に理解できます。
技術仕様
項目 | 内容 |
---|---|
グラフライブラリ | Chart.js 4.4.0(CDN経由) |
読み込み方式 | IntersectionObserverによる遅延読み込み |
グラフ種類 | 積み上げ棒グラフ(年次集計) |
外部依存 | あり(Chart.js CDN) |
こんな方におすすめ
視覚的に節税メリットを理解したい個人ユーザー。ブログやアフィリエイトサイトで金融情報を提供する運営者。
セキュリティポリシーが比較的柔軟な一般企業。
簡易版(グラフなし・概要表示のみ)
公的機関、教育機関、セキュリティポリシーが厳格な組織向けのバージョンです。Chart.jsなどの外部CDNに一切依存しません。
グラフ表示の代わりに、緑色の節税効果概要セクションで重要指標を表示します。
完全スタンドアロン設計で、Content Security Policy(CSP)の厳しい環境でも動作します。
技術仕様
項目 | 内容 |
---|---|
グラフライブラリ | 不使用 |
表示形式 | 節税効果概要セクション + 詳細内訳 |
外部依存 | なし(100%スタンドアロン) |
CSP対応 | 完全対応 |
こんな方におすすめ
自治体、学校、図書館などの公的機関。Content Security Policyが厳格に設定された組織。
外部CDNの使用が禁止されている環境。
バージョンの選び方
以下のフローチャートで最適なバージョンを選択してください。
外部CDNの使用が禁止されている?
- はい → 簡易版を選択
- いいえ → 次の質問へ
- グラフ表示が必要ですか?
- はい → 通常版を選択
- いいえ → 簡易版を選択(軽量)
- グラフ表示が必要ですか?
迷った場合は、通常版を試してください。セキュリティポリシーで動作しない場合に簡易版に切り替える方法を推奨します。
使い方
1. 加入区分を選択
5つの加入区分から自身の状況に合うものを選択してください。
加入区分 | 月額上限(2024年12月改正後) |
---|---|
会社員(企業年金なし) | 23,000円 |
会社員(企業型DC・DB等あり) | 20,000円 |
公務員 | 20,000円 |
自営業・フリーランス | 68,000円 |
専業主婦(夫) | 23,000円 |
区分を選択すると、掛金入力欄の下に上限額が表示されます。
2. 基本情報を入力
以下の4項目を入力してください。
項目 | 説明 |
---|---|
年収 | 給与収入(万円単位) |
月々の掛金 | 毎月拠出する金額(円) |
掛金年数 | 5年~40年から選択 |
想定運用利回り | 年率%(0~20%) |
3. 結果を確認
入力後、自動的に以下の情報が表示されます。
年間節税額: 掛金による所得控除で軽減される年間税額
累計節税額: 掛金期間中の節税効果の合計
運用益非課税額: 運用益が非課税になることで得られるメリット
総節税効果: 所得控除効果と運用益非課税効果の合計
4. グラフで視覚化(通常版のみ)
積み上げ棒グラフで資産形成の推移を確認できます。青色が掛金累計、緑色が運用益、オレンジ色が節税効果を表します。
年を追うごとに資産と節税メリットが蓄積していく様子が視覚的に理解できます。
5. 詳細内訳を確認
掛金総額、運用益、最終資産額、適用税率が表示されます。
適用税率は年収から自動計算されます(給与所得控除、基礎控除、社会保険料控除を簡易計算)。
シミュレーターについて
計算方法
所得控除効果の計算
年間掛金は全額が所得控除されます。所得税と住民税の軽減額を合計して節税額を算出します。
たとえば年収500万円(課税所得約300万円)で月2万円拠出する場合、次のように計算します。
年間掛金 = 20,000円 × 12ヶ月 = 240,000円
所得税率 10% + 住民税率 10% = 20%
年間節税額 = 240,000円 × 20% = 48,000円
20年継続すると累計節税額は96万円になります。
運用益非課税効果の計算
確定拠出年金では運用益に課税されません。通常の投資では運用益に20.315%の税金がかかります。
たとえば20年間、月2万円を年利3%で運用すると次のように計算します。
掛金総額 = 20,000円 × 12ヶ月 × 20年 = 4,800,000円
最終資産額 ≈ 6,550,000円(複利計算)
運用益 = 6,550,000円 – 4,800,000円 = 1,750,000円
通常なら課税される額 = 1,750,000円 × 20.315% ≈ 355,000円
この約36万円が運用益非課税効果です。
税率の推定方法
年収から給与所得控除を差し引いて給与所得を算出します。
基礎控除48万円と社会保険料控除(年収の約15%)を差し引いて課税所得を算出します。
課税所得に応じた所得税率(5%~45%)と住民税率10%を合計します。
2024年12月制度改正について
2024年12月の制度改正で、企業年金加入者と公務員の掛金上限が引き上げられました。
区分 | 改正前 | 改正後 |
---|---|---|
会社員(企業型DC・DB等あり) | 12,000円 | 20,000円 |
公務員 | 12,000円 | 20,000円 |
会社員(企業年金なし)、自営業・フリーランス、専業主婦(夫)の上限は変更されていません。
外部ライブラリについて(通常版のみ)
グラフ表示機能を提供するため、オープンソースライブラリ「Chart.js」を使用しています。
提供元: jsDelivr CDN(コンテンツ配信ネットワーク)
用途: 計算結果のグラフ表示
送信される可能性のある情報: IPアドレス、ブラウザの種類とバージョン、アクセス日時
利用者がシミュレーターに入力した数値(年収、掛金、運用利回り等)が外部に送信されることは一切ありません。
Chart.jsは遅延読み込み(lazy loading)方式で実装しています。グラフが画面に表示されるタイミングで初めて読み込まれるため、ページ表示速度への影響を最小限に抑えています。
簡易版では、Chart.jsを一切使用しないため、情報送信も発生しません。
セキュリティとプライバシー
すべての計算はブラウザ内で完結します。入力したデータが外部サーバーに送信されることは一切ありません。
Cookie、LocalStorage、SessionStorageも使用しません。トラッキングコード(Google Analytics等)も含まれていません。
注意事項
シミュレーションに含まれていない項目があります。
項目 | 説明 |
---|---|
受取時の課税 | 一時金は退職所得控除、年金は公的年金控除が適用される |
口座管理手数料 | 金融機関によって年間数千円の手数料が発生 |
運用商品の信託報酬 | 投資信託の運用コスト |
特別法人税 | 現在は凍結中だが将来復活する可能性 |
受取時には課税されるため、節税メリットは「税の繰延」効果です。ただし退職所得控除や公的年金控除により税負担は軽減されます。
金融機関によって条件が異なるため、詳細は各金融機関にご確認ください。
計算の前提条件
税率は年収が一定と仮定して計算しています。実際には年収変動により税率も変動します。
給与所得控除を前提とした簡易計算です。自営業・フリーランスの方は実際の税率と異なる場合があります。
社会保険料控除、配偶者控除、扶養控除などは簡易的に計算しています。
運用利回りは一定と仮定していますが、実際には変動します。
まとめ
確定拠出年金節税効果シミュレーターは、iDeCoや企業型DCの節税メリットを可視化できるツールです。
利用環境に応じて通常版(グラフあり)と簡易版(グラフなし)を選択できます。
公的機関や教育機関では、外部CDN依存ゼロの簡易版を推奨します。個人ブログや一般企業では、視覚的なグラフ表示が可能な通常版を推奨します。
2024年12月の制度改正に対応し、5つの加入区分それぞれの掛金上限を正確に反映しています。
すべての計算がブラウザ内で完結するため、プライバシーが完全に保護されます。老後資金計画や税金対策の検討に活用してください。
コメント