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電卓の発展と活用」について詳しく紹介されています。
まとめ
Ruby を使って BMI やパーセント計算を簡単に実装する方法を紹介しました。
JavaScript による簡易電卓 UI の作成例も掲載。
実用的な Web ツールとの連携で、コードだけでなく現場応用へのヒントも得られます。
こうした数値処理は、業務アプリや教育アプリでもよく使われます。ぜひ、API化やUIとの統合も試してみてください。