単位変換アプリの内部実装を検証する:度分秒の往復一致と、収録通貨が実際には取得できないケース

収録カテゴリは実装で29種類

単位変換・辞典アプリが収録する単位カテゴリは、実装(CATEGORIES配列)を数えると29種類ある。長さ・重さ・速さといった日常的なカテゴリに加え、放射線量(放射能・吸収線量・線量当量)や磁束・照度・光束といった理科系のカテゴリまで含まれる。

度分秒の分解・合成は往復一致する

度分秒(緯度経度でおなじみの °′″ 表記)への変換ロジックを実際に動かして検証した。東京の緯度35.681236°を分解すると「35° 40′ 52.4496″」になり、これを再度合成(compose)すると、丸め誤差なく元の35.681236という値にぴったり戻る。最下位の位(秒)にだけ小数の端数を残し、上位の位は整数で切り捨てる設計になっているため、この往復一致が成り立つ。

時:分:秒の分解も同様の仕組みで、3661.5秒を分解すると「1時 1分 1.5秒」になる。

通貨レートは実際に取得すると1通貨欠ける

通貨換算にはFrankfurter API(ECB=欧州中央銀行の日次レート、APIキー不要・無料)を実際に呼び出して検証した。基準通貨を日本円に指定して取得すると、アプリが収録している13通貨のうち、実際のレスポンスに含まれていたのは12通貨だった。欠けていたのは台湾ドル(TWD)で、ECBの公表対象に台湾ドルが含まれていないためと考えられる。

アプリ側のコードは、収録通貨リストにあってもAPIレスポンスに存在しない通貨コードは静かに無視する(フェイルソフト)設計になっている。つまり台湾ドルを選んでも、レート取得自体は失敗せず、台湾ドルの変換だけができない状態になる。

GET https://api.frankfurter.dev/v1/latest?base=JPY のレスポンス(一部抜粋、2026-08-07時点)
{
  "amount": 1.0,
  "base": "JPY",
  "date": "2026-08-07",
  "rates": {
    "USD": 0.00632,
    "EUR": 0.00548,
    "KRW": 8.9427,
    "GBP": 0.0047
  }
}

参考資料