QLITRE DIALY

住宅ローンの簡易計算サイトを公開した

2024年08月04日

日銀が政策金利の引き上げを発表したということでやはり気になるのは住宅ローンの金利のことである。

以前のエントリで書いた通り俺はつい最近でかい借金をして家を買っている。変動金利で申し込んでいる。

家を買って、家主になった話

変動金利制の住宅ローンは、その名の通り金利が市場の金利動向に応じて変動するタイプのローンである。

固定金利制とは異なり、金利が一定期間ごとに見直される。一般的には半年ごとに金利が見直されることが多いらしい。

金利が低い時は借入金利が低く抑えられている一方で、今回のように金利が上昇した場合には返済額が増加するリスクがある。

契約時に分かってはいたけど、実際に金利の上昇が発表されてみると穏やかな気持ちではない。

いくら増えるの?

当然いちばん気になるのは、「で、結局金利があがったらいくら返済額が増えるの?」ということだ。

三菱UFJ銀行は31日、住宅ローンの変動型金利の基準となる短期プライムレート(短プラ)を現行の年1.475%から9月2日付で1.625%に引き上げると発表している。その差にして、0.15%である。

このように金利がいくらあがるか、ということは情報がすぐにつかめそう。では一体いくら増えるの?この計算はなかなか難しいことに気付く。

金利は毎年残額に応じてかけられていく。一般的な35年ローンだと35回も0.15%の金利がかけられていく。

これがなかなか電卓で計算するのが難しい。

払う金額を決めて毎年引いて、金利をかけて…いわゆるシミュレーション的な動作が必要だ。これを人力でやるのは想像するだけで面倒だ。

簡易計算サイトを作った

ネットで探せばこの手のツールはありそう。だけど、多くは銀行のサイトのコンテンツの一部だったりする。

純粋に住宅ローンの返済がいくら増えるのか知りたい時にちょっとツールまでたどり着くのにひと手間かかる印象。宣伝とかもあるし。

というわけで地味に需要があるかもしれないと思い、簡易的な住宅ローン計算サイトを作ってみた。

住宅ローン簡易計算ツール

使い方はめちゃくちゃシンプル。借入金額と利率と借入期間を入力して計算ボタンを押すだけ。

例えば3000万円を利率0.3で35年借りたら…

年間の支払い額が表示される。

アルゴリズムについて

メインの計算部分は二分探索アルゴリズムを使って計算している。

具体的には1円を下限、100億円を上限として、足して2で割った数を年間の支払い額として、毎年引いて利率をかけて…とシミュレーションをしていく。

そうして0円を下回ったら金額が大きすぎるので、上限を引き下げる。逆に残債があったら金額が小さすぎるので下限を引き上げる、というように範囲を絞りこむ。下限と上限の差がほとんどなくなったら、毎年払うべき金額の近似値である。


function calcYearlyPayment(p: number, r: number, n: number) {
    let ng = 1
    let ok = 10000000000
    const rate = r / 100 + 1

    while (ok - ng > 0.0001) {
        // 万円で入力のため
        let rem = p * 10000
        const mid = (ok + ng) / 2
        for (let i = 0; i < n; i++) {
            rem -= mid
            rem *= rate
            if (rem < 0) break
        }
        if (rem < 0) {
            ok = mid
        } else {
            ng = mid
        }
    }
    return ok
}

(これに関しては一発で計算する方法もあるっぽいが、自分の引き出しではこの方法しか思いつかなかった)

サイト構成について

昨年からはまっているHono x Cloudflareのスタック。このブログ自体も同じ構成。今回はClient Componentに初挑戦。

入力を受け取って、ボタンを押したらリアクティブに計算というシンプルな作りだが、これが簡単にできるのが良い。

ソースコードはgithubに公開しました。

https://github.com/qlitre/hono-home-loan-calculator/tree/master

おわりに

自分の場合、利率が0.2%ほどあがったら年間の支払い額が4万円ほどあがりそうだった。

35年スパンで考えるとトータルで140万円。けっこうでかいなぁ、と感じる。ではでは。