RubyでBMI・パーセント計算を自動化する：Web電卓とコードの連携活用

BMI（ボディマス指数）やパーセント計算は、日常生活や医療、ビジネスなど、さまざまな場面で利用される基本的な数値計算です。この記事では、Ruby を使ってこれらの計算をどのように実装するかを解説し、さらに Web 上で利用できる便利なツールを紹介します。

この記事の内容は、以下のような方におすすめです：

BMI や％計算ロジックをコードで実装したいエンジニア

Web ツールと連携した簡易アプリを構築したい方

UIとロジックの橋渡しとして Web電卓的なものに興味がある方

BMI 計算の基本と Ruby 実装
BMI とは？

BMI（Body Mass Index）は、体格を数値で評価するための指標です。次の式で求められます：

```
BMI = 体重(kg) ÷ 身長(m)^2

```
例えば、身長170cm（1.70m）、体重65kgの場合：

```
def calculate_bmi(weight_kg, height_m)
  (weight_kg.to_f / (height_m ** 2)).round(2)
end

def bmi_category(bmi)
  case bmi
  when 0..18.49 then "やせ型"
  when 18.5..24.99 then "標準"
  when 25..29.99 then "肥満（1度）"
  else "肥満（2度以上）"
  end
end

weight = 65
height = 1.7
bmi = calculate_bmi(weight, height)
puts "あなたのBMIは：#{bmi}（#{bmi_category(bmi)}）"

```
このように、基本的な関数を用意するだけで、BMI とそのカテゴリが簡単に出力できます。

「90パー」はどういう意味か？パーセント計算の基本
ビジネスや教育現場で「90パー」という表現を目にすることがありますが、これは「全体の90％」を意味します。

Ruby でのパーセント計算は以下のようにシンプルです。
```
def percent_of(value, percent)
  (value.to_f * percent / 100).round(2)
end

puts percent_of(250, 90) # => 225.0

```
このように、どんな数値に対しても任意のパーセンテージを計算することができます。
特にビジネスレポートや価格割引の自動計算などで応用が利きます。

もっとわかりやすく計算したい方は、90パーセントを計算する専用ツール を使ってみるのもおすすめです。

Web 電卓の活用で「即時試せるコード」に進化
コードだけでなく、Web 上で誰でもすぐ使える電卓があると、より便利です。たとえば、BMI 計算をサポートするオンライン電卓があります。

BMI計算機 – Web電卓 では、体重・身長を入力するだけで BMI を瞬時に確認できます。
[^KEY]https://web電卓.jp/bmi計算機/


これを自作アプリに組み込んだり、外部リンクとして紹介することで、ユーザー体験を改善することができます。

HTML＋JavaScriptで自作 BMI 電卓をつくる
BMI 電卓をブラウザ上で自作することで、UIとの統合も学べます。

```
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>BMI電卓</title>
</head>
<body>
  <h2>BMI電卓</h2>
  <label>体重(kg): <input type="number" id="weight" /></label>
  <label>身長(cm): <input type="number" id="height" /></label>
  <button onclick="calculateBMI()">計算</button>
  <p id="result"></p>

  <script>
    function calculateBMI() {
      const w = parseFloat(document.getElementById("weight").value);
      const h_cm = parseFloat(document.getElementById("height").value);
      const h_m = h_cm / 100;

      if (w > 0 && h_m > 0) {
        const bmi = (w / (h_m * h_m)).toFixed(2);
        document.getElementById("result").innerText = `あなたのBMIは ${bmi} です。`;
      } else {
        document.getElementById("result").innerText = "数値を正しく入力してください。";
      }
    }
  </script>
</body>
</html>

```

このように、JavaScript を使って BMI を即時表示できる UI を構築することも可能です。


発展編：BMI API を作ってみる
API 構築のサンプル（Sinatra）
Web API 化すると、BMI 計算をアプリや他のフロントエンドと連携しやすくなります

```
require 'sinatra'
require 'json'

get '/api/bmi' do
  w = params['weight'].to_f
  h = params['height'].to_f
  bmi = (w / (h * h)).round(2)
  { bmi: bmi }.to_json
end

```
API 形式にしておくと、VueやReactなどのモダンフロントエンドとも柔軟に接続できます。

テストコードで品質を保証する（RSpec）
```
RSpec.describe 'BMI calculator' do
  it '正しいBMIを計算する' do
    expect(calculate_bmi(60, 1.65)).to eq(22.04)
  end

  it '異常値（ゼロ）への対応' do
    expect { calculate_bmi(0, 1.65) }.not_to raise_error
  end
end

```

テストを書くことで、安全な実装とバグの早期発見につながります。

Web電卓という考え方
Web 上には既に多くの「計算ツール（電卓）」が存在します。BMI やパーセント以外にも、日常の計算タスクを効率化するものがあります。

[^KEY] https://パーセント計算.jp/90パー/

計算機能を持つWebアプリに関心がある方は、こちらの解説記事で「Web電卓の発展と活用」について詳しく紹介されています。

:::note info
https://dentakuu.exblog.jp/244070061/
:::



まとめ
Ruby を使って BMI やパーセント計算を簡単に実装する方法を紹介しました。

JavaScript による簡易電卓 UI の作成例も掲載。

実用的な Web ツールとの連携で、コードだけでなく現場応用へのヒントも得られます。

こうした数値処理は、業務アプリや教育アプリでもよく使われます。ぜひ、API化やUIとの統合も試してみてください。