FIRE(経済的自立・早期退職)シミュレーター

経済的自立と早期リタイア(FIRE)の達成に必要な資産額と年数を簡単に計算できる無料シミュレーターです。 4%ルールに基づいた必要資産額とFIRE達成年齢を視覚的に理解できます。

目次

Chart.js版(グラフあり)

FIRE(経済的自立・早期退職)シミュレーター

経済的自立・早期リタイアの達成シミュレーション

このシミュレーターは「4%ルール」に基づき、年間生活費の25倍の資産でFIRE達成とします。
達成後は年4%の運用益で生活費を賄い、資産を維持する前提です。
現在の資産と年間貯蓄額から、FIRE達成までの年数を計算します。

FIRE必要資産額 ¥0
FIRE達成年齢
達成までの年数

⚠️ 注意事項

  • 計算された数値は、あくまでもシミュレーションであり、実際のFIRE達成や資産残高を保証するものではありません。
  • 本シミュレーションは4%ルール(年4%の取り崩しで資産が維持される)を基本としていますが、市場環境により資産が枯渇するリスクがあります。
  • インフレ率、税金、社会保険料、医療費等の変動は考慮していません。
  • 運用利回りは想定値であり、元本割れのリスクがあります。

免責事項

本シミュレーションはFIRE計画の参考情報提供のみを目的として作成されたもので、特定の金融商品を推奨したり、個々のライフプランを保証するものではありません。早期リタイアの判断は、ご自身の責任で慎重に行ってください。万一、本シミュレーションに基づいて損害を被ったとしても、当方は一切その責任を負うものではありません。

コピー用コード

<!--
================================================
WordPress カスタムHTMLブロック用コード
FIRE計算機通常版
================================================
機能経済的自立早期リタイア達成シミュレーション4%ルール必要資産額計算
セキュリティ】✅ ブラウザ内完結通信ゼロ
利用規約無償無保証投資判断は自己責任
外部依存Chart.js 4.4.0 (CDN経由遅延読み込み)
================================================
-->

<!-- MSIM:STYLE-START -->
<style>
.fire-calculator * {margin:0; padding:0; box-sizing:border-box}
.fire-calculator {font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; line-height:1.6; color:#333}
.fire-calculator .container {max-width:1200px; margin:0 auto; background:#fff; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.1); padding:30px}
.fire-calculator h1 {font-size:28px; margin:0 0 10px; color:#1a1a1a; text-align:center}
.fire-calculator .subtitle {font-size:14px; color:#666; text-align:center; margin:0 0 15px}
.fire-calculator .description {font-size:13px; color:#555; text-align:center; line-height:1.8; margin:0 0 30px; padding:15px 20px; background:#f8f9fa; border-radius:8px}
.fire-calculator h2 {font-size:20px; margin:30px 0 20px; color:#1a1a1a}
.fire-calculator h3 {font-size:16px; margin:20px 0 15px; color:#555}
.fire-calculator .input-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:20px; margin:0 0 30px}
.fire-calculator .input-group {display:flex; flex-direction:column}
.fire-calculator .input-group label {font-size:14px; font-weight:600; margin:0 0 8px; color:#555}
.fire-calculator .input-group input,
.fire-calculator .input-group select {padding:12px; border:2px solid #e0e0e0; border-radius:8px; font-size:16px; transition:.3s; background:#fff}
.fire-calculator .input-group input:focus,
.fire-calculator .input-group select:focus {outline:0; border-color:#3498db; box-shadow:0 0 0 3px rgba(52,152,219,.1)}
.fire-calculator .input-group input:hover,
.fire-calculator .input-group select:hover {border-color:#b0b0b0}
.fire-calculator .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}
.fire-calculator .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)}
.fire-calculator .result-label {font-size:13px; color:#777; margin:0 0 8px; font-weight:500}
.fire-calculator .result-value {font-size:24px; font-weight:700; color:#3498db}
.fire-calculator .result-value.highlight {color:#e74c3c}
.fire-calculator .result-value.total {color:#2ecc71}
.fire-calculator .chart-section {position:relative; height:400px; margin:30px 0}
.fire-calculator .chart-section canvas {width:100%!important; height:100%!important}
.fire-calculator .disclaimer-section {margin-top:30px; padding:20px; background:#fff3cd; border-left:4px solid #ffc107; border-radius:4px}
.fire-calculator .disclaimer-section .disclaimer-title {font-size:13px; font-weight:600; color:#856404; margin:0 0 10px}
.fire-calculator .disclaimer-section ul {margin:0 0 15px 20px}
.fire-calculator .disclaimer-section li {font-size:12px; color:#856404; margin:0 0 6px; line-height:1.6}
.fire-calculator .disclaimer-section .disclaimer-text {font-size:12px; color:#856404; line-height:1.6; margin:0}

@media (max-width:768px) {
  .fire-calculator .container {padding:20px}
  .fire-calculator h1 {font-size:24px}
  .fire-calculator .input-section {grid-template-columns:1fr}
  .fire-calculator .results-section {grid-template-columns:1fr}
  .fire-calculator .chart-section {height:300px}
}
</style>
<!-- MSIM:STYLE-END -->

<!-- MSIM:HTML-START -->
<div class="fire-calculator" data-tool="fire" data-version="1.0.0">
  <div class="container">
    <h1>FIRE(経済的自立・早期退職)シミュレーター</h1>
    <p class="subtitle">経済的自立・早期リタイアの達成シミュレーション</p>
    <p class="description">このシミュレーターは「4%ルール」に基づき、年間生活費の25倍の資産でFIRE達成とします。<br>達成後は年4%の運用益で生活費を賄い、資産を維持する前提です。<br>現在の資産と年間貯蓄額から、FIRE達成までの年数を計算します。</p>

    <div class="input-section">
      <div class="input-group">
        <label>現在の年齢</label>
        <input type="number" data-ms-current-age value="30" min="20" max="60" step="1">
      </div>
      <div class="input-group">
        <label>年間生活費(万円)</label>
        <input type="number" data-ms-annual-expense value="300" min="100" max="1000" step="10">
      </div>
      <div class="input-group">
        <label>現在の資産(万円)</label>
        <input type="number" data-ms-current-assets value="500" min="0" max="100000" step="100">
      </div>
      <div class="input-group">
        <label>年間貯蓄額(万円)</label>
        <input type="number" data-ms-annual-savings value="200" min="0" max="1000" step="10">
      </div>
      <div class="input-group">
        <label>想定運用利回り(%)</label>
        <input type="number" data-ms-return-rate value="5" min="0" max="15" step="0.5">
      </div>
      <div class="input-group">
        <label>FIRE後の運用利回り(%)</label>
        <input type="number" data-ms-fire-return value="4" min="0" max="10" step="0.5">
      </div>
    </div>

    <div class="results-section">
      <div class="result-item">
        <span class="result-label">FIRE必要資産額</span>
        <span class="result-value total" data-ms-required-assets>¥0</span>
      </div>
      <div class="result-item">
        <span class="result-label">FIRE達成年齢</span>
        <span class="result-value highlight" data-ms-fire-age>-</span>
      </div>
      <div class="result-item">
        <span class="result-label">達成までの年数</span>
        <span class="result-value" data-ms-years-to-fire>-</span>
      </div>
    </div>

    <div class="chart-section">
      <canvas data-ms-canvas></canvas>
    </div>

    <div class="disclaimer-section">
      <p class="disclaimer-title">⚠️ 注意事項</p>
      <ul>
        <li>計算された数値は、あくまでもシミュレーションであり、実際のFIRE達成や資産残高を保証するものではありません。</li>
        <li>本シミュレーションは4%ルール(年4%の取り崩しで資産が維持される)を基本としていますが、市場環境により資産が枯渇するリスクがあります。</li>
        <li>インフレ率、税金、社会保険料、医療費等の変動は考慮していません。</li>
        <li>運用利回りは想定値であり、元本割れのリスクがあります。</li>
      </ul>
      <p class="disclaimer-title">免責事項</p>
      <p class="disclaimer-text">本シミュレーションはFIRE計画の参考情報提供のみを目的として作成されたもので、特定の金融商品を推奨したり、個々のライフプランを保証するものではありません。早期リタイアの判断は、ご自身の責任で慎重に行ってください。万一、本シミュレーションに基づいて損害を被ったとしても、当方は一切その責任を負うものではありません。</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:#4a90e2;text-decoration:none">みんなのシミュレーター</a>
    </div>
  </div>
</div>
<!-- MSIM:HTML-END -->

<!-- MSIM:JS-START -->
<script>
(()=>{
  "use strict";

  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 calculateFIRE(currentAge, annualExpense, currentAssets, annualSavings, returnRate, fireReturn) {
    // 4%ルール: 年間生活費の25倍が必要資産額
    const requiredAssets = annualExpense * 10000 * 25;

    // 資産シミュレーション
    let assets = currentAssets * 10000;
    let age = currentAge;
    const schedule = [];
    const maxYears = 60 - currentAge; // 最大60歳まで

    schedule.push({ age: age, assets: assets, phase: "accumulation" });

    // 資産形成フェーズ
    for (let year = 1; year <= maxYears; year++) {
      age = currentAge + year;
      assets = assets * (1 + returnRate / 100) + annualSavings * 10000;

      schedule.push({
        age: age,
        assets: Math.round(assets),
        phase: assets >= requiredAssets ? "fire" : "accumulation"
      });

      if (assets >= requiredAssets) {
        break;
      }
    }

    // FIRE達成年齢を特定
    const fireAgeData = schedule.find(d => d.phase === "fire");
    const fireAge = fireAgeData ? fireAgeData.age : null;
    const yearsToFire = fireAge ? fireAge - currentAge : null;

    // FIRE後の資産推移(95歳まで)
    if (fireAge && fireAge < 95) {
      let postFireAssets = assets;
      for (let futureAge = fireAge + 1; futureAge <= 95; futureAge++) {
        postFireAssets = postFireAssets * (1 + fireReturn / 100) - annualExpense * 10000;
        schedule.push({
          age: futureAge,
          assets: Math.round(Math.max(0, postFireAssets)),
          phase: "fire"
        });

        if (postFireAssets <= 0) break;
      }
    }

    return {
      requiredAssets: requiredAssets,
      fireAge: fireAge,
      yearsToFire: yearsToFire,
      schedule: schedule
    };
  }

  function boot(root) {
    let chart = null;
    const q = s => root.querySelector(s);
    const els = {
      currentAge: q("[data-ms-current-age]"),
      annualExpense: q("[data-ms-annual-expense]"),
      currentAssets: q("[data-ms-current-assets]"),
      annualSavings: q("[data-ms-annual-savings]"),
      returnRate: q("[data-ms-return-rate]"),
      fireReturn: q("[data-ms-fire-return]"),
      requiredAssets: q("[data-ms-required-assets]"),
      fireAge: q("[data-ms-fire-age]"),
      yearsToFire: q("[data-ms-years-to-fire]"),
      canvas: q("[data-ms-canvas]")
    };

    function draw(schedule, requiredAssets) {
      if (!loadedCJ) {
        ensureChartJs(() => draw(schedule, requiredAssets));
        return;
      }

      const labels = schedule.map(d => `${d.age}`);
      const assets = schedule.map(d => d.assets);
      const targetLine = schedule.map(() => requiredAssets);

      const backgroundColors = schedule.map(d =>
        d.phase === "fire" ? "rgba(46,204,113,.6)" : "rgba(52,152,219,.6)"
      );
      const borderColors = schedule.map(d =>
        d.phase === "fire" ? "rgba(46,204,113,1)" : "rgba(52,152,219,1)"
      );

      if (chart) chart.destroy();
      chart = new Chart(els.canvas, {
        type: "line",
        data: {
          labels,
          datasets: [{
            label: "資産推移",
            data: assets,
            borderColor: borderColors[0],
            backgroundColor: "rgba(52,152,219,.2)",
            borderWidth: 2,
            fill: true,
            tension: 0.3,
            segment: {
              borderColor: (ctx) => {
                const idx = ctx.p0DataIndex;
                return schedule[idx]?.phase === "fire" ? "rgba(46,204,113,1)" : "rgba(52,152,219,1)";
              }
            }
          }, {
            label: "FIRE必要資産額",
            data: targetLine,
            borderColor: "rgba(231,76,60,1)",
            backgroundColor: "rgba(231,76,60,.1)",
            borderWidth: 2,
            borderDash: [5, 5],
            fill: false
          }]
        },
        options: {
          responsive: true,
          maintainAspectRatio: false,
          plugins: {
            tooltip: {
              callbacks: {
                label: t => `${t.dataset.label}: ${fmt.format(t.parsed.y)}`
              }
            },
            legend: {
              display: true,
              position: "top"
            }
          },
          scales: {
            y: {
              beginAtZero: true,
              ticks: { callback: v => fmt.format(v) }
            }
          }
        }
      });
    }

    function update() {
      const age = parseInt(els.currentAge.value) || 0;
      const expense = parseFloat(els.annualExpense.value) || 0;
      const assets = parseFloat(els.currentAssets.value) || 0;
      const savings = parseFloat(els.annualSavings.value) || 0;
      const returnRate = parseFloat(els.returnRate.value) || 0;
      const fireReturn = parseFloat(els.fireReturn.value) || 0;

      if (age >= 60 || expense === 0) {
        els.requiredAssets.textContent = "¥0";
        els.fireAge.textContent = "-";
        els.yearsToFire.textContent = "-";
        return;
      }

      const result = calculateFIRE(age, expense, assets, savings, returnRate, fireReturn);
      els.requiredAssets.textContent = fmt.format(result.requiredAssets);
      els.fireAge.textContent = result.fireAge ? `${result.fireAge}` : "達成困難";
      els.yearsToFire.textContent = result.yearsToFire ? `${result.yearsToFire}` : "-";

      draw(result.schedule, result.requiredAssets);
    }

    els.currentAge.addEventListener("input", update);
    els.annualExpense.addEventListener("input", update);
    els.currentAssets.addEventListener("input", update);
    els.annualSavings.addEventListener("input", update);
    els.returnRate.addEventListener("input", update);
    els.fireReturn.addEventListener("input", update);

    if ("IntersectionObserver" in window) {
      const io = new IntersectionObserver(es => {
        es.some(e => e.isIntersecting) && (ensureChartJs(() => {}), io.disconnect());
      });
      io.observe(els.canvas);
    }

    update();
  }

  window.addEventListener("DOMContentLoaded", () =>
    document.querySelectorAll('.fire-calculator[data-tool="fire"]').forEach(boot)
  );
})();
</script>
<!-- MSIM:JS-END -->

Chart.jsなし簡易版(軽量)

FIRE(経済的自立・早期退職)シミュレーター

経済的自立・早期リタイアの達成シミュレーション

このシミュレーターは「4%ルール」に基づき、年間生活費の25倍の資産でFIRE達成とします。
達成後は年4%の運用益で生活費を賄い、資産を維持する前提です。
現在の資産と年間貯蓄額から、FIRE達成までの年数を計算します。

FIRE必要資産額 ¥0
FIRE達成年齢
達成までの年数

⚠️ 注意事項

  • 計算された数値は、あくまでもシミュレーションであり、実際のFIRE達成や資産残高を保証するものではありません。
  • 本シミュレーションは4%ルール(年4%の取り崩しで資産が維持される)を基本としていますが、市場環境により資産が枯渇するリスクがあります。
  • インフレ率、税金、社会保険料、医療費等の変動は考慮していません。
  • 運用利回りは想定値であり、元本割れのリスクがあります。

免責事項

本シミュレーションはFIRE計画の参考情報提供のみを目的として作成されたもので、特定の金融商品を推奨したり、個々のライフプランを保証するものではありません。早期リタイアの判断は、ご自身の責任で慎重に行ってください。万一、本シミュレーションに基づいて損害を被ったとしても、当方は一切その責任を負うものではありません。

コピー用コード

<!--
================================================
WordPress カスタムHTMLブロック用コード
FIRE計算機簡易版Chart.jsなし
================================================
機能経済的自立早期リタイア達成シミュレーション4%ルール必要資産額計算
セキュリティ】✅ ブラウザ内完結通信ゼロ
利用規約無償無保証投資判断は自己責任
外部依存なし完全スタンドアロン
================================================
-->

<!-- MSIM:STYLE-START -->
<style>
.fire-calculator * {margin:0; padding:0; box-sizing:border-box}
.fire-calculator {font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; line-height:1.6; color:#333}
.fire-calculator .container {max-width:1200px; margin:0 auto; background:#fff; border-radius:12px; box-shadow:0 2px 12px rgba(0,0,0,.1); padding:30px}
.fire-calculator h1 {font-size:28px; margin:0 0 10px; color:#1a1a1a; text-align:center}
.fire-calculator .subtitle {font-size:14px; color:#666; text-align:center; margin:0 0 15px}
.fire-calculator .description {font-size:13px; color:#555; text-align:center; line-height:1.8; margin:0 0 30px; padding:15px 20px; background:#f8f9fa; border-radius:8px}
.fire-calculator h2 {font-size:20px; margin:30px 0 20px; color:#1a1a1a}
.fire-calculator h3 {font-size:16px; margin:20px 0 15px; color:#555}
.fire-calculator .input-section {display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:20px; margin:0 0 30px}
.fire-calculator .input-group {display:flex; flex-direction:column}
.fire-calculator .input-group label {font-size:14px; font-weight:600; margin:0 0 8px; color:#555}
.fire-calculator .input-group input,
.fire-calculator .input-group select {padding:12px; border:2px solid #e0e0e0; border-radius:8px; font-size:16px; transition:.3s; background:#fff}
.fire-calculator .input-group input:focus,
.fire-calculator .input-group select:focus {outline:0; border-color:#3498db; box-shadow:0 0 0 3px rgba(52,152,219,.1)}
.fire-calculator .input-group input:hover,
.fire-calculator .input-group select:hover {border-color:#b0b0b0}
.fire-calculator .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}
.fire-calculator .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)}
.fire-calculator .result-label {font-size:13px; color:#777; margin:0 0 8px; font-weight:500}
.fire-calculator .result-value {font-size:24px; font-weight:700; color:#3498db}
.fire-calculator .result-value.highlight {color:#e74c3c}
.fire-calculator .result-value.total {color:#2ecc71}
.fire-calculator .disclaimer-section {margin-top:30px; padding:20px; background:#fff3cd; border-left:4px solid #ffc107; border-radius:4px}
.fire-calculator .disclaimer-section .disclaimer-title {font-size:13px; font-weight:600; color:#856404; margin:0 0 10px}
.fire-calculator .disclaimer-section ul {margin:0 0 15px 20px}
.fire-calculator .disclaimer-section li {font-size:12px; color:#856404; margin:0 0 6px; line-height:1.6}
.fire-calculator .disclaimer-section .disclaimer-text {font-size:12px; color:#856404; line-height:1.6; margin:0}

@media (max-width:768px) {
  .fire-calculator .container {padding:20px}
  .fire-calculator h1 {font-size:24px}
  .fire-calculator .input-section {grid-template-columns:1fr}
  .fire-calculator .results-section {grid-template-columns:1fr}
}
</style>
<!-- MSIM:STYLE-END -->

<!-- MSIM:HTML-START -->
<div class="fire-calculator" data-tool="fire" data-version="1.0.0">
  <div class="container">
    <h1>FIRE(経済的自立・早期退職)シミュレーター</h1>
    <p class="subtitle">経済的自立・早期リタイアの達成シミュレーション</p>
    <p class="description">このシミュレーターは「4%ルール」に基づき、年間生活費の25倍の資産でFIRE達成とします。<br>達成後は年4%の運用益で生活費を賄い、資産を維持する前提です。<br>現在の資産と年間貯蓄額から、FIRE達成までの年数を計算します。</p>

    <div class="input-section">
      <div class="input-group">
        <label>現在の年齢</label>
        <input type="number" data-ms-current-age value="30" min="20" max="60" step="1">
      </div>
      <div class="input-group">
        <label>年間生活費(万円)</label>
        <input type="number" data-ms-annual-expense value="300" min="100" max="1000" step="10">
      </div>
      <div class="input-group">
        <label>現在の資産(万円)</label>
        <input type="number" data-ms-current-assets value="500" min="0" max="100000" step="100">
      </div>
      <div class="input-group">
        <label>年間貯蓄額(万円)</label>
        <input type="number" data-ms-annual-savings value="200" min="0" max="1000" step="10">
      </div>
      <div class="input-group">
        <label>想定運用利回り(%)</label>
        <input type="number" data-ms-return-rate value="5" min="0" max="15" step="0.5">
      </div>
      <div class="input-group">
        <label>FIRE後の運用利回り(%)</label>
        <input type="number" data-ms-fire-return value="4" min="0" max="10" step="0.5">
      </div>
    </div>

    <div class="results-section">
      <div class="result-item">
        <span class="result-label">FIRE必要資産額</span>
        <span class="result-value total" data-ms-required-assets>¥0</span>
      </div>
      <div class="result-item">
        <span class="result-label">FIRE達成年齢</span>
        <span class="result-value highlight" data-ms-fire-age>-</span>
      </div>
      <div class="result-item">
        <span class="result-label">達成までの年数</span>
        <span class="result-value" data-ms-years-to-fire>-</span>
      </div>
    </div>

    <div class="disclaimer-section">
      <p class="disclaimer-title">⚠️ 注意事項</p>
      <ul>
        <li>計算された数値は、あくまでもシミュレーションであり、実際のFIRE達成や資産残高を保証するものではありません。</li>
        <li>本シミュレーションは4%ルール(年4%の取り崩しで資産が維持される)を基本としていますが、市場環境により資産が枯渇するリスクがあります。</li>
        <li>インフレ率、税金、社会保険料、医療費等の変動は考慮していません。</li>
        <li>運用利回りは想定値であり、元本割れのリスクがあります。</li>
      </ul>
      <p class="disclaimer-title">免責事項</p>
      <p class="disclaimer-text">本シミュレーションはFIRE計画の参考情報提供のみを目的として作成されたもので、特定の金融商品を推奨したり、個々のライフプランを保証するものではありません。早期リタイアの判断は、ご自身の責任で慎重に行ってください。万一、本シミュレーションに基づいて損害を被ったとしても、当方は一切その責任を負うものではありません。</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:#4a90e2;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 calculateFIRE(currentAge, annualExpense, currentAssets, annualSavings, returnRate) {
    const requiredAssets = annualExpense * 10000 * 25;
    let assets = currentAssets * 10000;
    let age = currentAge;
    const maxAge = 60;

    for (let year = 1; year <= maxAge - currentAge; year++) {
      age = currentAge + year;
      assets = assets * (1 + returnRate / 100) + annualSavings * 10000;
      if (assets >= requiredAssets) break;
    }

    const fireAge = assets >= requiredAssets ? age : null;
    const yearsToFire = fireAge ? fireAge - currentAge : null;

    return {
      requiredAssets,
      fireAge,
      yearsToFire
    };
  }

  function boot(root) {
    const q = (sel) => root.querySelector(sel);
    const els = {
      currentAge: q("[data-ms-current-age]"),
      annualExpense: q("[data-ms-annual-expense]"),
      currentAssets: q("[data-ms-current-assets]"),
      annualSavings: q("[data-ms-annual-savings]"),
      returnRate: q("[data-ms-return-rate]"),
      fireReturn: q("[data-ms-fire-return]"),
      requiredAssets: q("[data-ms-required-assets]"),
      fireAge: q("[data-ms-fire-age]"),
      yearsToFire: q("[data-ms-years-to-fire]")
    };

    function update() {
      const currentAge = parseInt(els.currentAge.value) || 0;
      const annualExpense = parseFloat(els.annualExpense.value) || 0;
      const currentAssets = parseFloat(els.currentAssets.value) || 0;
      const annualSavings = parseFloat(els.annualSavings.value) || 0;
      const returnRate = parseFloat(els.returnRate.value) || 0;

      if (currentAge >= 60 || annualExpense === 0) {
        els.requiredAssets.textContent = "\uffe50";
        els.fireAge.textContent = "-";
        els.yearsToFire.textContent = "-";
        return;
      }

      const result = calculateFIRE(currentAge, annualExpense, currentAssets, annualSavings, returnRate);

      els.requiredAssets.textContent = fmt.format(result.requiredAssets);
      els.fireAge.textContent = result.fireAge ? `${result.fireAge}\u6b73` : "\u9054\u6210\u56f0\u96e3";
      els.yearsToFire.textContent = result.yearsToFire ? `${result.yearsToFire}\u5e74` : "-";
    }

    els.currentAge.addEventListener("input", update);
    els.annualExpense.addEventListener("input", update);
    els.currentAssets.addEventListener("input", update);
    els.annualSavings.addEventListener("input", update);
    els.returnRate.addEventListener("input", update);
    els.fireReturn.addEventListener("input", update);

    update();
  }

  window.addEventListener("DOMContentLoaded", () => {
    document.querySelectorAll('.fire-calculator[data-tool="fire"]').forEach(boot);
  });
})();
</script>
<!-- MSIM:JS-END -->

FIREとは

FIREは「Financial Independence, Retire Early」の略です。経済的自立と早期退職を目指すライフスタイルを指します。

十分な資産を築いて労働収入に依存せず生活することが目標です。投資収益だけで生活費をまかなう状態を実現します。

シミュレーターの基本機能

できること

4%ルールに基づいてFIRE必要資産額を自動計算します。現在の資産と年間貯蓄額からFIRE達成年齢を予測します。

資産形成の進捗状況を視覚的に確認できます。FIRE後の資産推移もシミュレーションできます(Chart.js版のみ)。

4%ルールとは

年間生活費の25倍の資産があれば、資産の4%を取り崩しても資産が枯渇しないという理論です。アメリカの歴史的データに基づく統計的な法則です。

例えば年間生活費が300万円なら7,500万円の資産が必要です。この資産を4%の運用利回りで運用しながら年300万円を引き出します。

計算方式

すべての計算がブラウザ内で完結します。サーバーとの通信はゼロです。

データベース接続やCookie使用もありません。入力した情報が外部に送信されることは一切ありません。

使い方

現在の年齢を入力

あなたの現在の年齢を20歳から60歳の範囲で入力します。FIRE達成までの期間を計算する基準になります。

若いほど複利効果で資産形成が有利になります。年齢が高い場合は必要な年間貯蓄額が増加します。

年間生活費を設定

FIRE後の年間生活費を万円単位で入力します。この金額がFIRE必要資産額の計算基準になります。

一般的には200〜400万円程度です。現在の生活費より控えめに見積もる人が多い傾向があります。

現在の資産を入力

現時点で保有している投資可能な資産額を万円単位で入力します。貯金、株式、投資信託などの合計金額です。

生活防衛資金を除いた投資に回せる金額を入力してください。不動産などの流動性が低い資産は含めないことを推奨します。

年間貯蓄額を設定

毎年投資に回せる金額を万円単位で入力します。収入から生活費を引いた金額が目安です。

貯蓄率が高いほどFIRE達成が早まります。一般的に50%以上の貯蓄率が推奨されます。

想定運用利回りを設定

資産形成期間中の年間平均運用利回りを設定します。投資する資産クラスによって変動します。

参考値

投資対象想定利回り
預貯金のみ0%
債券中心のポートフォリオ2〜3%
バランス型(株式50%・債券50%)4〜5%
株式中心(全世界株式等)5〜7%

過去の実績は将来を保証しません。控えめな利回りで計算することを推奨します。

FIRE後の運用利回りを設定

FIRE達成後の資産運用利回りを設定します。4%ルールに基づくなら4%と設定してください。

FIRE後はリスクを抑えたポートフォリオに変更する人が多い傾向があります。資産形成期より低い利回りで設定するのが安全です。

計算結果の見方

FIRE必要資産額

年間生活費の25倍の金額が表示されます。4%ルールに基づいた計算結果です。

この金額を達成すればFIREが可能な目安です。余裕を持たせるなら30倍以上を目標にする人もいます。

FIRE達成年齢

現在の貯蓄ペースでFIREを達成できる年齢が表示されます。複利運用を考慮した計算結果です。

「達成困難」と表示される場合は年間貯蓄額を増やすか想定利回りを上げる必要があります。生活費を下げることも有効な戦略です。

達成までの年数

現在からFIRE達成までに必要な年数が表示されます。具体的な目標期間として活用できます。

10〜15年を目標にする人が多い傾向があります。20年以上かかる場合は計画の見直しを検討してください。

グラフの見方(Chart.js版のみ)

折れ線グラフで年齢ごとの資産推移が表示されます。青色の部分は資産形成期間です。

緑色の部分はFIRE達成後の期間です。赤色の点線はFIRE必要資産額のラインです。

シミュレーション例

例1:30歳から堅実にFIREを目指す

設定

  • 現在の年齢:30歳
  • 年間生活費:300万円
  • 現在の資産:500万円
  • 年間貯蓄額:200万円
  • 想定運用利回り:5%
  • FIRE後の運用利回り:4%

結果

  • FIRE必要資産額:7,500万円
  • FIRE達成年齢:約48歳
  • 達成までの年数:約18年

標準的なFIREプランです。年200万円の貯蓄を18年間継続します。

例2:25歳からアグレッシブにFIREを目指す

設定

  • 現在の年齢:25歳
  • 年間生活費:250万円
  • 現在の資産:300万円
  • 年間貯蓄額:300万円
  • 想定運用利回り:6%
  • FIRE後の運用利回り:4%

結果

  • FIRE必要資産額:6,250万円
  • FIRE達成年齢:約38歳
  • 達成までの年数:約13年

高貯蓄率により30代でのFIREが可能です。年収の60%以上を貯蓄に回す計算です。

例3:40歳からセミリタイアを目指す

設定

  • 現在の年齢:40歳
  • 年間生活費:200万円
  • 現在の資産:2,000万円
  • 年間貯蓄額:150万円
  • 想定運用利回り:4%
  • FIRE後の運用利回り:3%

結果

  • FIRE必要資産額:5,000万円
  • FIRE達成年齢:約53歳
  • 達成までの年数:約13年

生活費を抑えることで50代前半でのリタイアが可能です。既に一定の資産があることが有利に働きます。

よくある質問

4%ルールは日本でも適用できますか?

4%ルールはアメリカの歴史的データに基づいています。日本の低金利環境では3〜3.5%程度がより安全です。

保守的に計算するなら年間生活費の30倍を目標にすることを推奨します。インフレリスクも考慮する必要があります。

FIREに失敗するリスクはありますか?

想定より運用成績が悪い場合は資産が枯渇するリスクがあります。予想外の大きな支出が発生する可能性もあります。

インフレで生活費が上昇するリスクにも注意が必要です。余裕を持った資産額とバッファを確保することが重要です。

完全リタイアとセミリタイアはどちらがいいですか?

完全リタイアは一切働かないスタイルです。セミリタイアは少し働きながら資産収入で補完するスタイルです。

セミリタイアの方がリスクは低く現実的です。必要資産額も少なくて済みます。

FIREまでの貯蓄率はどれくらいが目安ですか?

一般的に50%以上の貯蓄率が推奨されます。70%以上の超高貯蓄率なら10年以内のFIREも可能です。

貯蓄率30%以下だとFIRE達成に20年以上かかります。生活費を下げることで貯蓄率を上げることが重要です。

このツールは無料ですか?

完全無料でご利用いただけます。会員登録も不要です。

何度でもシミュレーションを試せます。スマートフォンでもパソコンでも利用可能です。

プライバシーとセキュリティ

ブラウザ内完結の設計

すべての計算がブラウザ内で完結します。サーバーとの通信はゼロです。

データベース接続なし、Cookie/LocalStorage不使用、個人情報の取得・送信なしです。入力した資産額や年齢が外部に送信されることは一切ありません。

Chart.js(グラフ描画ライブラリ)について

グラフ表示機能を提供するため、オープンソースライブラリ「Chart.js」を使用しています(Chart.js版のみ)。

提供元: jsDelivr CDN(コンテンツ配信ネットワーク)

用途: 計算結果のグラフ表示

送信される可能性のある情報:

  • IPアドレス
  • ブラウザの種類とバージョン
  • アクセス日時

これらの情報は、JavaScriptライブラリファイルを取得する際に、通常のWebサイト閲覧と同様に自動的に送信されるものです。

利用者が計算ツールに入力した数値(資産額、年齢、生活費等)が外部に送信されることは一切ありません。すべての計算処理は利用者のブラウザ内で完結します。

Chart.jsライセンス: MIT License(オープンソース)

jsDelivrのプライバシーポリシー: https://www.jsdelivr.com/privacy-policy-jsdelivr-net

Chart.jsなし簡易版について: 外部ライブラリを一切使用したくない場合は、Chart.jsなし簡易版をご利用ください。こちらは完全にスタンドアロンで動作します。

注意事項

免責事項

計算結果は参考値であり、FIRE達成を保証するものではありません。資産運用の判断は自己責任でお願いします。

投資には元本割れのリスクがあります。想定利回りは過去の実績であり将来を保証しません。

FIRE計画を立てる際は、金融の専門家に相談することを推奨します。

まとめ

FIRE計算機は、経済的自立と早期リタイアの達成計画を簡単に試算できる無料ツールです。年齢、生活費、資産額、貯蓄額を入力するだけで即座に計算できます。

4%ルールに基づいた必要資産額とFIRE達成年齢が一目でわかります。プライバシー完全保護で安心してご利用いただけます。

FIRE達成に向けた資金計画を立てる際に、ぜひご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次