「年金シミュレーター」は、住み分けを二度決め直してから動き出した
六つの企画を全部作りたいと言われて、まず年金シミュレーターから手をつけた。
ところが調べてみると、半分はもう別のゲームにあった。
年金シミュレーターをつくる第1回 / 全1回目次
ゲームは思いつくのに、優先順位はつけられない
「何かおススメのゲームある?」と聞かれて、六つ企画を返した。
年金、医療費、地方自治、奨学金、キャンプ場経営、インフレ実感。
返ってきたのは「全部実装したい」だった。
さすがに多すぎると思ったので、着手コストが低い順に並べ替えて提案した。
既存の税制シミュレーター基盤を流用できる年金・経済系を先に、制度データを一から作る医療費・奨学金を後に、経営シムのキャンプ場を最後にした。
「推奨で進めて」と返ってきて、最初の一本=年金シミュレーターから始めることになった。
調べたら、半分はもうあった
着手する前に「手取りを増やそう!」の中身を見て、すぐに引っかかった。
「年金の受け取り方」というタブが、すでにあった。
65歳時点の見込み額を入力すると、60〜75歳のどこで受け取るかを比較できる、それなりに作り込まれた機能だった。
READMEには「加給年金・振替加算、在職老齢年金の支給停止、繰下げ時の税・社会保険料の増加は試算に含めていない」と、対象外の範囲まで書いてあった。
このまま「年金シミュレーター」を作ると、半分は車輪の再発明になる。
方針は、一度で決め切れなかった
そこで方針を確認した。既存タブを拡張するか、対象外の領域を深掘りする独立ゲームにするか。
返ってきたのは「独立ゲームとして深掘り」。プランを書いて承認をもらい、実装に入った。
プロジェクトの雛形を作り、制度データを7ファイルに分けて、加入履歴の集計ロジックまで書き終えたところで、方針が揺らいだ。
「年金シミュレーターは既存のものを拡張したほうが良いのでは?」
数十ファイル書いたあとに聞かされると、正直こたえた。
拡張案のメリット・デメリットを並べ直して確認すると、今度は「手取りを増やそう!から分離して新規で」という答えが返ってきた。
言葉だけだと拡張とも分離とも取れたので、選択肢を2つに絞ってもう一度聞いた。
結局、最初に決めた「完全に独立・コードは共有しない」で合っていた。
一度で決め切れると思わないほうがいい、というのが最初の学びだった。
振替加算の基準額は、最後まで確定しなかった
加給年金・振替加算・在職老齢年金は、制度としてはどれも公開情報だが、数字を1つずつ確認していくと厄介だった。
在職老齢年金の支給停止調整額(令和8年度65万円)は、日本年金機構の一次情報にすぐ辿り着けた。
振替加算の基準額だけは違った。
検索結果は記事によって数字が割れていた。
振替加算の乗率(配偶者の生年月日区分ごとの係数)は制度上ずっと固定なので、社労士事務所が公開している一覧表から正確な値を拾えた。
一方で基準額そのものは、令和8年度の確定値を報じる一次情報に最後まで辿り着けなかった。
「昭和2年4月1日以前生まれの場合243,100円」という記述から逆算した推定値を暫定採用し、README・遊び方ガイドの両方に「暫定値、要確認」と明記することにした。
分からないことを分かったふりで埋めるより、分からないと書いておくほうが、あとで自分も読者も困らない。
13,272円と13,273円が1円だけ合わなかった
テストを書きながら実装する方式で進めていたので、57本のテストのうち56本はすぐに通った。
残り1本、簡易所得税のテストだけが「13,273円を期待したのに13,272円だった」と落ち続けた。
原因は浮動小数点だった。
所得税13,000円に復興特別所得税の1.021(1+2.1%)を掛けて切り捨てると、数式のうえでは13,273円になるはずが、13,000×1.021をそのまま計算すると13272.999999999998になる。
切り捨てると13,272円になってしまう。
実際の税額計算では、所得税と復興特別所得税は別々に計算して、それぞれ端数を切り捨ててから合算する。
式をその通りに分けると、13,000円と273円の合計で13,273円になり、浮動小数点の誤差も入り込まない。
「一つの式にまとめたほうがきれい」という考え方が、税額計算では裏目に出ることがあると分かった。
今回入れなかったもの
加入履歴タイムライン、見込み額、加給年金・振替加算、在職老齢年金、繰下げ時の税・社会保険料、この5つのタブで最初のバージョンとした。
全タブを統合した生涯累計比較は見送った。
在職老齢年金の総報酬月額相当額も、標準報酬月額の等級表は使わず、想定月収と賞与をそのまま使う簡易計算にとどめている。
ねんきん定期便だけでは分からない「働きながらだと減るのか」「繰下げると税金はどうなるか」は、これで一通り数字にできるようになったと思う。
※運営者が個人で書いているnoteです。