足場計算アプリ【架け郎】くさび足場用|無料で材料拾いを自動化

この記事はプロモーションが含まれています。
<style>
.kakerou-page{
  --bg:#f7fafc;
  --card:#ffffff;
  --text:#1f2937;
  --muted:#5b6472;
  --line:#e5e7eb;
  --main:#0ea5e9;
  --main-dark:#0284c7;
  --accent:#10b981;
  --accent-dark:#059669;
  --sub:#fff7ed;
  --shadow:0 10px 30px rgba(15,23,42,.08);
  --radius:18px;
  font-family:"Helvetica Neue", Arial, sans-serif;
  color:var(--text);
  line-height:1.8;
}
.kakerou-page *{box-sizing:border-box;}
.kakerou-page{
  background:var(--bg);
  padding:20px 14px 48px;
}
.kakerou-wrap{
  max-width:1100px;
  margin:0 auto;
}
.kakerou-breadcrumb{
  font-size:14px;
  color:var(--muted);
  margin:0 0 18px;
}
.kakerou-breadcrumb a{
  color:var(--main-dark);
  text-decoration:none;
}
.kakerou-breadcrumb a:hover{
  text-decoration:underline;
}
.kakerou-hero{
  background:linear-gradient(135deg,#e0f2fe 0%,#f0fdf4 100%);
  border-radius:24px;
  padding:32px 24px;
  box-shadow:var(--shadow);
  margin-bottom:24px;
}
.kakerou-badge-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-bottom:14px;
}
.kakerou-badge{
  display:inline-block;
  background:#fff;
  color:#0f172a;
  border:1px solid rgba(2,132,199,.15);
  border-radius:999px;
  padding:6px 12px;
  font-size:13px;
  font-weight:700;
}
.kakerou-hero h1{
  font-size:clamp(28px,4vw,40px);
  line-height:1.35;
  margin:0 0 12px;
}
.kakerou-lead{
  font-size:17px;
  color:#334155;
  margin:0 0 18px;
}
.kakerou-actions{
  display:flex;
  flex-wrap:wrap;
  gap:12px;
  margin-top:18px;
}
.kakerou-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:50px;
  padding:12px 22px;
  border-radius:999px;
  text-decoration:none;
  font-weight:700;
  transition:.2s ease;
}
.kakerou-btn-primary{
  color:#fff;
  background:linear-gradient(135deg,var(--main),var(--main-dark));
  box-shadow:0 8px 20px rgba(14,165,233,.28);
}
.kakerou-btn-primary:hover{
  transform:translateY(-2px);
  filter:brightness(1.03);
}
.kakerou-btn-secondary{
  color:#0f172a;
  background:#fff;
  border:1px solid #cbd5e1;
}
.kakerou-btn-secondary:hover{
  background:#f8fafc;
}
.kakerou-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:22px;
}
.kakerou-card{
  background:var(--card);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:24px 20px;
}
.kakerou-card h2{
  font-size:26px;
  line-height:1.45;
  margin:0 0 14px;
}
.kakerou-card h3{
  font-size:21px;
  line-height:1.5;
  margin:0 0 10px;
}
.kakerou-card p{
  margin:0 0 14px;
}
.kakerou-note{
  background:#eff6ff;
  border-left:4px solid var(--main);
  padding:14px 16px;
  border-radius:12px;
}
.kakerou-warning{
  background:#fffbeb;
  border-left:4px solid #f59e0b;
  padding:14px 16px;
  border-radius:12px;
}
.kakerou-soft{
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:14px;
  padding:16px;
}
.kakerou-list,
.kakerou-ol{
  margin:0;
  padding-left:1.25em;
}
.kakerou-list li,
.kakerou-ol li{
  margin-bottom:8px;
}
.kakerou-links{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.kakerou-linkcard{
  display:block;
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  padding:16px;
  text-decoration:none;
  color:var(--text);
  transition:.2s ease;
}
.kakerou-linkcard:hover{
  transform:translateY(-2px);
  box-shadow:var(--shadow);
}
.kakerou-linkcard strong{
  display:block;
  margin-bottom:6px;
  color:#0f172a;
}
.kakerou-linkcard span{
  display:block;
  color:var(--muted);
  font-size:14px;
  line-height:1.7;
}
.kakerou-compare{
  width:100%;
  border-collapse:collapse;
  overflow:hidden;
  border-radius:14px;
}
.kakerou-compare th,
.kakerou-compare td{
  border:1px solid var(--line);
  padding:12px 10px;
  text-align:left;
  vertical-align:top;
}
.kakerou-compare th{
  background:#f8fafc;
}
.kakerou-form-wrap{
  background:#ffffff;
  border:1px solid var(--line);
  border-radius:16px;
  padding:18px;
}
.kakerou-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px 18px;
}
.kakerou-form-full{
  grid-column:1 / -1;
}
.kakerou-page label{
  display:block;
  font-weight:700;
  margin-bottom:6px;
}
.kakerou-page input[type="text"],
.kakerou-page select{
  width:100%;
  padding:12px 12px;
  border:1px solid #cbd5e1;
  border-radius:12px;
  background:#fff;
  font-size:16px;
}
.kakerou-page input[type="text"]:focus,
.kakerou-page select:focus{
  outline:none;
  border-color:var(--main);
  box-shadow:0 0 0 4px rgba(14,165,233,.12);
}
.kakerou-submit{
  margin-top:8px;
  border:none;
  cursor:pointer;
  width:100%;
}
.kakerou-result-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.kakerou-result-box{
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px;
  min-height:82px;
}
.kakerou-result-box h4{
  margin:0 0 8px;
  font-size:16px;
}
.kakerou-faq details{
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  padding:14px 16px;
  margin-bottom:12px;
}
.kakerou-faq summary{
  cursor:pointer;
  font-weight:700;
}
.kakerou-qr{
  max-width:300px;
  margin:18px auto 0;
  text-align:center;
}
.kakerou-qr img{
  width:100%;
  height:100%;
  border-radius:14px;
  box-shadow:var(--shadow);
}
.kakerou-center{
  text-align:center;
}
.kakerou-mini{
  font-size:14px;
  color:var(--muted);
}
.kakerou-highlight{
  background:linear-gradient(transparent 60%, rgba(253,224,71,.55) 60%);
  font-weight:700;
}
@media (max-width: 767px){
  .kakerou-links,
  .kakerou-form-grid,
  .kakerou-result-grid{
    grid-template-columns:1fr;
  }
  .kakerou-hero{
    padding:24px 18px;
  }
  .kakerou-card{
    padding:20px 16px;
  }
  .kakerou-card h2{
    font-size:23px;
  }
}
</style>

<div class="kakerou-page">
  <div class="kakerou-wrap">

    <p class="kakerou-breadcrumb">
      <a href="https://towakasetsu.com/株式会社藤羽/tool/簡易計算アプリ架け郎/">架け郎トップページ</a>
      &nbsp;›&nbsp; 架け郎 くさび足場用 材料拾いページ
    </p>

    <section class="kakerou-hero">
      <div class="kakerou-badge-row">
        <span class="kakerou-badge">完全無料</span>
        <span class="kakerou-badge">登録不要</span>
        <span class="kakerou-badge">スマホ対応</span>
        <span class="kakerou-badge">くさび足場用</span>
      </div>


      <p class="kakerou-lead">
        架け郎は、<strong>くさび足場の材料拾いを無料で行える足場計算アプリ</strong>です。
        スパン数や段数を入力するだけで、先行手すり・アンチ・手すり・巾木・支柱などの必要数を自動で確認できます。
        <span class="kakerou-highlight">現場でサッと確認したい時</span>や、
        <span class="kakerou-highlight">まずは簡単に数量を把握したい時</span>に便利です。
      </p>

      <div class="kakerou-actions">
        <a class="kakerou-btn kakerou-btn-primary" href="#scaffoldFormSection">今すぐ無料で計算する</a>
        <a class="kakerou-btn kakerou-btn-secondary" href="https://towakasetsu.com/株式会社藤羽/tool/簡易計算アプリ架け郎/">架け郎トップページへ戻る</a>
      </div>
    </section>

    <div class="kakerou-grid">

      <section class="kakerou-card">
        <h2>このページでできること</h2>
        <div class="kakerou-links">
          <div class="kakerou-soft">
            <strong>① くさび足場の材料拾い</strong>
            <span>スパン数・幅・アンチの段数などを入力し、必要部材数を自動で確認できます。</span>
          </div>
          <div class="kakerou-soft">
            <strong>② 現場での簡易確認</strong>
            <span>スマホからでも使いやすく、現場でそのまま確認しやすい構成です。</span>
          </div>
          <div class="kakerou-soft">
            <strong>③ 架け郎トップページへ移動</strong>
            <span>架け郎の他ページや関連情報へ戻りやすい導線を設置しています。</span>
          </div>
          <div class="kakerou-soft">
            <strong>④ 上位版ASIBA+へ移動</strong>
            <span>より本格的な積算や見積・請求書作成が必要な方はASIBA+へ進めます。</span>
          </div>
        </div>
      </section>

      <section class="kakerou-card">
        <h2>手作業の材料拾いが大変な理由</h2>
        <ol class="kakerou-ol">
          <li>図面や現場状況を見ながら、外周や段数、スパン数を確認する</li>
          <li>くさび足場の組立パターンに応じて必要部材を拾い出す</li>
          <li>支柱・手すり・アンチ・布材などを手計算する</li>
          <li>拾い漏れや二重カウントがないか再確認する</li>
        </ol>
        <p class="kakerou-warning">
          手作業は慣れていても時間がかかりやすく、忙しい現場ほど確認ミスが起こりやすくなります。
          その負担を減らすための入口として、架け郎のような<strong>無料の足場計算アプリ</strong>は相性が良いです。
        </p>
      </section>

      <section class="kakerou-card">
        <h2>架け郎とASIBA+の違い</h2>
        <p>
          このページは<strong>架け郎(簡易・無料)</strong>の実ページです。
          一方で、より高機能な積算や書類出力が必要な場合は、上位版の<strong>ASIBA+</strong>が向いています。
        </p>

        <div style="overflow-x:auto;">
          <table class="kakerou-compare">
            <thead>
              <tr>
                <th>比較項目</th>
                <th>架け郎</th>
                <th>ASIBA+</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>利用料金</td>
                <td>無料</td>
                <td>機能に応じたプランあり</td>
              </tr>
              <tr>
                <td>主な役割</td>
                <td>現場向けの簡易計算</td>
                <td>本格的な積算・書類作成</td>
              </tr>
              <tr>
                <td>入力の手軽さ</td>
                <td>◎ シンプル</td>
                <td>◎ 実務向けに高機能</td>
              </tr>
              <tr>
                <td>見積書・請求書作成</td>
                <td>×</td>
                <td>◎</td>
              </tr>
              <tr>
                <td>建物4面モードなどの拡張性</td>
                <td>×</td>
                <td>◎</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="kakerou-actions" style="margin-top:16px;">
          <a class="kakerou-btn kakerou-btn-primary" href="https://towakasetsu.com/株式会社藤羽/tool/asiba/zairyo-hiroi/">ASIBA+を確認する</a>
          <a class="kakerou-btn kakerou-btn-secondary" href="https://towakasetsu.com/株式会社藤羽/tool/簡易計算アプリ架け郎/">架け郎トップページを見る</a>
        </div>
      </section>

      <section class="kakerou-card" id="scaffoldFormSection">
        <h2>材料拾い計算フォーム</h2>
        <p>
          以下の項目を入力すると、くさび足場の必要部材数を自動計算できます。
          <strong>約30秒ほどで確認できる構成</strong>なので、まずは気軽に試してください。
        </p>

        <p class="kakerou-note">
          このフォームは、現場での簡易確認や概算把握に向いています。
          より詳細な積算や保存・見積・請求書出力まで行いたい場合は、
          <a href="https://towakasetsu.com/株式会社藤羽/tool/asiba/zairyo-hiroi/">ASIBA+</a>もあわせてご確認ください。
        </p>

        <div class="kakerou-form-wrap">
          <div id="errorMessage" style="color:#dc2626;font-weight:700;margin-bottom:10px;"></div>

          <form id="scaffoldForm">
            <div class="kakerou-form-grid">
              <div>
                <label for="type">組み立てパターン</label>
                <select id="type">
                  <option value="pattern1">地組+嵩上げ(腰まで)</option>
                  <option value="pattern2">地組+嵩上げ(頭まで)</option>
                  <option value="pattern3">地組+嵩上げ(+1800)</option>
                  <option value="pattern4">嵩上げ(腰→腰)</option>
                  <option value="pattern5">嵩上げ(腰→頭)</option>
                  <option value="pattern6">嵩上げ(腰→+1800)</option>
                  <option value="pattern7">嵩上げ(+1800→腰)</option>
                  <option value="pattern8">嵩上げ(+1800→頭)</option>
                  <option value="pattern9">嵩上げ(+1800→+1800)</option>
                </select>
              </div>

              <div>
                <label for="width">幅</label>
                <select id="width">
                  <option value="600">600幅</option>
                  <option value="900">900幅</option>
                  <option value="1200">1200幅</option>
                </select>
              </div>

              <div class="kakerou-form-full">
                <label>スパン数の入力</label>
              </div>

              <div>
                <label for="spans1800">1800スパン数</label>
                <input id="spans1800" type="text" placeholder="例: 10">
              </div>
              <div>
                <label for="spans1500">1500スパン数</label>
                <input id="spans1500" type="text" placeholder="例: 5">
              </div>
              <div>
                <label for="spans1200">1200スパン数</label>
                <input id="spans1200" type="text" placeholder="例: 3">
              </div>
              <div>
                <label for="spans900">900スパン数</label>
                <input id="spans900" type="text" placeholder="例: 5">
              </div>
              <div>
                <label for="spans600">600スパン数</label>
                <input id="spans600" type="text" placeholder="例: 0">
              </div>

              <div>
                <label for="levels">アンチの段数</label>
                <select id="levels">
                  <option value="0">0</option>
                  <option value="1">1</option>
                  <option value="2">2</option>
                  <option value="3">3</option>
                  <option value="4">4</option>
                  <option value="5">5</option>
                  <option value="6">6</option>
                  <option value="7">7</option>
                  <option value="8">8</option>
                  <option value="9">9</option>
                  <option value="10">10</option>
                  <option value="11">11</option>
                  <option value="12">12</option>
                  <option value="13">13</option>
                  <option value="14">14</option>
                  <option value="15">15</option>
                  <option value="16">16</option>
                  <option value="17">17</option>
                  <option value="18">18</option>
                  <option value="19">19</option>
                  <option value="20">20</option>
                  <option value="21">21</option>
                  <option value="22">22</option>
                  <option value="23">23</option>
                  <option value="24">24</option>
                  <option value="25">25</option>
                  <option value="26">26</option>
                  <option value="27">27</option>
                  <option value="28">28</option>
                  <option value="29">29</option>
                  <option value="30">30</option>
                  <option value="31">31</option>
                  <option value="32">32</option>
                  <option value="33">33</option>
                  <option value="34">34</option>
                  <option value="35">35</option>
                  <option value="36">36</option>
                  <option value="37">37</option>
                  <option value="38">38</option>
                  <option value="39">39</option>
                  <option value="40">40</option>
                  <option value="41">41</option>
                  <option value="42">42</option>
                  <option value="43">43</option>
                  <option value="44">44</option>
                  <option value="45">45</option>
                  <option value="46">46</option>
                  <option value="47">47</option>
                  <option value="48">48</option>
                  <option value="49">49</option>
                  <option value="50">50</option>
                </select>
              </div>

              <div class="kakerou-form-full">
                <button class="kakerou-btn kakerou-btn-primary kakerou-submit" type="submit">計算する</button>
              </div>
            </div>
          </form>
        </div>
      </section>

      <section class="kakerou-card">
        <h2>計算結果</h2>
        <p class="kakerou-mini">数量が1以上の部材のみ表示されます。</p>

        <div class="kakerou-result-grid">
          <div class="kakerou-result-box"><h4>1800スパン結果</h4><div id="result1800"></div></div>
          <div class="kakerou-result-box"><h4>1500スパン結果</h4><div id="result1500"></div></div>
          <div class="kakerou-result-box"><h4>1200スパン結果</h4><div id="result1200"></div></div>
          <div class="kakerou-result-box"><h4>900スパン結果</h4><div id="result900"></div></div>
          <div class="kakerou-result-box"><h4>600スパン結果</h4><div id="result600"></div></div>
          <div class="kakerou-result-box"><h4>布材・端部手すり</h4><div id="resultNuno"></div></div>
          <div class="kakerou-result-box"><h4>ジャッキベース</h4><div id="resultBase"></div></div>
          <div class="kakerou-result-box"><h4>支柱3600</h4><div id="resultSithuu36"></div></div>
          <div class="kakerou-result-box"><h4>支柱2700</h4><div id="resultSithuu27"></div></div>
          <div class="kakerou-result-box"><h4>支柱1800</h4><div id="resultSithuu18"></div></div>
          <div class="kakerou-result-box"><h4>支柱900</h4><div id="resultSithuu9"></div></div>
        </div>
      </section>

      <section class="kakerou-card">
        <h2>架け郎が向いている人</h2>
        <ul class="kakerou-list">
          <li>現場でとにかく早く数量を確認したい方</li>
          <li>無料で使える足場計算アプリを探している方</li>
          <li>まずは簡易的に、くさび足場の材料拾いをしたい方</li>
          <li>事務所だけでなくスマホでも確認したい方</li>
        </ul>
        <p class="kakerou-warning">
          反対に、保存機能・見積・請求・より細かな実務対応を重視する方は
          <a href="https://towakasetsu.com/株式会社藤羽/tool/足場計算アプリasiba/">ASIBA+</a>の方が向いています。
        </p>
      </section>

      <section class="kakerou-card">
        <h2>関連ページ</h2>
        <div class="kakerou-links">
          <a class="kakerou-linkcard" href="https://towakasetsu.com/株式会社藤羽/tool/簡易計算アプリ架け郎/">
            <strong>架け郎トップページ</strong>
            <span>架け郎の各ページの入口です。まず全体像を見たい方はこちら。</span>
          </a>

          <a class="kakerou-linkcard" href="https://towakasetsu.com/次世代足場の使用部材自動計算アプリの使い方/">
            <strong>架け郎の使い方</strong>
            <span>入力方法や見方を詳しく確認したい方向けの説明ページです。</span>
          </a>

          <a class="kakerou-linkcard" href="https://towakasetsu.com/株式会社藤羽/tool/足場計算アプリasiba/">
            <strong>ASIBA+(上位版)</strong>
            <span>より本格的な足場積算・見積書・請求書作成まで行いたい方はこちら。</span>
          </a>

          <a class="kakerou-linkcard" href="https://towakasetsu.com/足場積載荷重の正確な計算方法:専門家が解説/">
            <strong>足場積載荷重の解説ページ</strong>
            <span>荷重計算の考え方を知りたい方に役立つ関連コンテンツです。</span>
          </a>
        </div>
      </section>

      <section class="kakerou-card kakerou-faq">
        <h2>よくある質問</h2>

        <details>
          <summary>架け郎は本当に無料ですか?</summary>
          <p>はい。架け郎は無料で使える簡易計算ツールです。登録不要で使える入口ツールとして活用できます。</p>
        </details>

        <details>
          <summary>スマホでも使えますか?</summary>
          <p>はい。スマホからでも使いやすい構成です。現場で数量を確認したい時にも向いています。</p>
        </details>

        <details>
          <summary>このページで見積書や請求書も作れますか?</summary>
          <p>このページの架け郎は簡易計算向けです。見積書や請求書の作成まで行いたい場合はASIBA+をご確認ください。</p>
        </details>

        <details>
          <summary>荷重計算もできますか?</summary>
          <p>このページの計算フォームは主に材料拾い向けです。荷重計算については、関連ページの積載荷重解説もあわせてご確認ください。</p>
        </details>
      </section>

      <section class="kakerou-card kakerou-center">
        <h2>QRコードで社内共有も簡単です</h2>
        <p>
          こちらのQRコードを使えば、架け郎のページをスマホですぐ開けます。
          会社の方や現場担当の方と共有したい時にも便利です。
        </p>

        <div class="kakerou-qr">
          <img src="https://towakasetsu.com/wp-content/uploads/2024/01/QR_718164-1.png" alt="足場計算アプリ 架け郎のQRコード">
        </div>

        <div class="kakerou-actions" style="justify-content:center;">
          <a class="kakerou-btn kakerou-btn-primary" href="#scaffoldFormSection">このページで計算する</a>
          <a class="kakerou-btn kakerou-btn-secondary" href="https://towakasetsu.com/株式会社藤羽/tool/簡易計算アプリ架け郎/">架け郎トップページへ戻る</a>
        </div>
      </section>

    </div>
  </div>
</div>

<script>
function toHalfWidth(str) {
  return str.replace(/[0-9]/g, function(s) {
    return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
  });
}

function getInputValueOrZero(inputElement) {
  var halfWidthValue = toHalfWidth(inputElement.value.trim());
  return halfWidthValue === '' ? 0 : Number(halfWidthValue);
}

function validateAllInputs(inputs) {
  let isValid = true;
  inputs.forEach(function(input) {
    const halfWidthInput = toHalfWidth(input.value);
    if (!/^[0-9\s]*$/.test(halfWidthInput)) {
      showError("入力は数字と空白のみです。");
      setTimeout(clearError, 2000);
      isValid = false;
    }
  });
  return isValid;
}

function showError(message) {
  var el = document.getElementById("errorMessage");
  if (el) el.textContent = message;
}

function clearError() {
  var el = document.getElementById("errorMessage");
  if (el) el.textContent = "";
}

function displayError(message) {
  var errorElement = document.getElementById('errorMessage');
  if (!errorElement) return;
  errorElement.innerText = message;
  setTimeout(function() {
    errorElement.innerText = '';
  }, 2000);
}

function displayResult(materials, resultContainerId) {
  var resultText = '';
  for (var material in materials) {
    if (materials[material] >= 1) {
      resultText += material + ': ' + materials[material] + '<br>';
    }
  }
  document.getElementById(resultContainerId).innerHTML = resultText || '—';
}

function calculateBlessCount(type, spans, levels) {
  if (type === 'pattern1' || type === 'pattern2') {
    return spans * (levels + 2);
  } else if (type === 'pattern3') {
    return spans * (levels + 3);
  } else if (type === 'pattern4' || type === 'pattern5' || type === 'pattern9') {
    return spans * levels;
  } else if (type === 'pattern6') {
    return spans * (levels + 1);
  } else if (type === 'pattern7' || type === 'pattern8') {
    return spans * (levels - 1);
  }
  return 0;
}

function calculateAntchiCount(width, spans, levels) {
  if (width === '1200') {
    return spans * levels * 2;
  }
  return spans * levels;
}

function calculateHalfCount(width, spans, levels) {
  if (width === '600' || width === '1200') {
    return 0;
  }
  return spans * levels;
}

function calculateTetsuriCount(type, spans, levels) {
  if (type === 'pattern1' || type === 'pattern3' || type === 'pattern5' || type === 'pattern8') {
    return spans * (levels + 1) * 2;
  } else if (type === 'pattern2') {
    return spans * (levels + 2) * 2;
  } else if (type === 'pattern4' || type === 'pattern6' || type === 'pattern7' || type === 'pattern9') {
    return spans * levels * 2;
  }
  return 0;
}

function calculateFuchiCount(spans, levels) {
  return spans * levels * 2;
}

function calculateNunoCount(type, totalSpans, levels) {
  if (type === 'pattern1' || type === 'pattern5' || type === 'pattern6') {
    return (totalSpans + 1) * (levels + 1);
  } else if (type === 'pattern2' || type === 'pattern3') {
    return (totalSpans + 1) * (levels + 2);
  } else if (type === 'pattern4' || type === 'pattern8' || type === 'pattern9') {
    return (totalSpans + 1) * levels;
  } else if (type === 'pattern7') {
    return (totalSpans + 1) * (levels - 1);
  }
  return 0;
}

function calculateBaseCount(type, totalSpans) {
  if (type === 'pattern1' || type === 'pattern2' || type === 'pattern3') {
    return (totalSpans + 1) * 2;
  }
  return 0;
}

function calculateSithuu36Count(type, totalSpans, levels) {
  if ((type === 'pattern1' || type === 'pattern2' || type === 'pattern3' || type === 'pattern4' || type === 'pattern5' || type === 'pattern7' || type === 'pattern8' || type === 'pattern9') && levels >= 3 && levels % 2 !== 0) {
    return (totalSpans + 1) * (levels - 1);
  } else if (((type === 'pattern1' || type === 'pattern7' || type === 'pattern8') && levels >= 3 && levels % 2 === 0) || (type === 'pattern2' && levels >= 3 && levels % 2 !== 0)) {
    return (totalSpans + 1) * (levels - 2);
  } else if ((type === 'pattern3' || type === 'pattern4' || type === 'pattern5' || type === 'pattern6' || type === 'pattern9') && levels >= 2 && levels % 2 === 0) {
    return (totalSpans + 1) * levels;
  } else if (type === 'pattern6' && levels >= 1 && levels % 2 !== 0) {
    return (totalSpans + 1) * (levels + 1);
  }
  return 0;
}

function calculateSithuu27Count(type, totalSpans) {
  if (type === 'pattern1' || type === 'pattern2' || type === 'pattern3') {
    return (totalSpans + 1) * 2;
  }
  return 0;
}

function calculateSithuu18Count(type, totalSpans, levels) {
  if (((type === 'pattern1' || type === 'pattern2' || type === 'pattern6' || type === 'pattern7' || type === 'pattern8') && levels >= 2 && levels % 2 === 0) || ((type === 'pattern3' || type === 'pattern4' || type === 'pattern5' || type === 'pattern9') && levels >= 1 && levels % 2 !== 0)) {
    return (totalSpans + 1) * 2;
  }
  return 0;
}

function calculateSithuu9Count(type, totalSpans) {
  if (type === 'pattern2' || type === 'pattern5' || type === 'pattern8') {
    return (totalSpans + 1) * 2;
  }
  return 0;
}

function calculateMaterials(type, width, length, spans, levels) {
  return {
    [length + "先行手すり"]: calculateBlessCount(type, spans, levels),
    [length + "アンチ"]: calculateAntchiCount(width, spans, levels),
    [length + "ハーフ"]: calculateHalfCount(width, spans, levels),
    [length + "手すり"]: calculateTetsuriCount(type, spans, levels),
    [length + "巾木"]: calculateFuchiCount(spans, levels)
  };
}

document.getElementById('scaffoldForm').addEventListener('submit', function(e) {
  e.preventDefault();

  var inputs = [
    document.getElementById('spans1800'),
    document.getElementById('spans1500'),
    document.getElementById('spans1200'),
    document.getElementById('spans900'),
    document.getElementById('spans600')
  ];

  if (!validateAllInputs(inputs)) {
    displayError('無効な入力です。数値を入力してください。');
    return;
  }

  var type = document.getElementById('type').value;
  var width = document.getElementById('width').value;
  var spans1800 = getInputValueOrZero(document.getElementById('spans1800'));
  var spans1500 = getInputValueOrZero(document.getElementById('spans1500'));
  var spans1200 = getInputValueOrZero(document.getElementById('spans1200'));
  var spans900 = getInputValueOrZero(document.getElementById('spans900'));
  var spans600 = getInputValueOrZero(document.getElementById('spans600'));
  var levels = document.getElementById('levels').value ? parseInt(document.getElementById('levels').value, 10) : 0;

  displayResult(calculateMaterials(type, width, "1800", spans1800, levels), 'result1800');
  displayResult(calculateMaterials(type, width, "1500", spans1500, levels), 'result1500');
  displayResult(calculateMaterials(type, width, "1200", spans1200, levels), 'result1200');
  displayResult(calculateMaterials(type, width, "900", spans900, levels), 'result900');
  displayResult(calculateMaterials(type, width, "600", spans600, levels), 'result600');

  var totalSpans = spans1800 + spans1500 + spans1200 + spans900 + spans600;
  var widthText = document.getElementById('width').options[document.getElementById('width').selectedIndex].text;

  displayResult({ [widthText + "布材、端部手すり"]: calculateNunoCount(type, totalSpans, levels) }, 'resultNuno');
  displayResult({ "ジャッキベース": calculateBaseCount(type, totalSpans) }, 'resultBase');
  displayResult({ "支柱3600": calculateSithuu36Count(type, totalSpans, levels) }, 'resultSithuu36');
  displayResult({ "支柱2700": calculateSithuu27Count(type, totalSpans) }, 'resultSithuu27');
  displayResult({ "支柱1800": calculateSithuu18Count(type, totalSpans, levels) }, 'resultSithuu18');
  displayResult({ "支柱900": calculateSithuu9Count(type, totalSpans) }, 'resultSithuu9');
});
</script>