0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

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との統合も試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?