iPhoneアプリ「Asset Trend Simulator」の紹介

Flutter と Riverpod で構築した複利計算型の資産推移シミュレーター iPhone アプリ「Asset Trend Simulator」の設計と実装を解説する。

Read in: en
iPhoneアプリ「Asset Trend Simulator」の紹介

iPhoneアプリ「Asset Trend Simulator」の紹介

なぜ作ったか

ライフプランを考える上で、「年間どれくらい消費に回せるか」、「将来のある時点でどれくらい資産があるか」、「老後にいくら残るか」といった問いに手軽に答えられるツールが欲しかった。

スプレッドシートで資産に関する情報をあれこれ集めて一部は手動で入力、半自動で将来の資産予測ができるものを作っていた。精度には満足していたが、運用は面倒だった。ライフプランナーにライフプランニング表を何度か作ってもらったこともあるが、細かい設定が面倒で、気軽にシミュレーションしてみるにはハードルが高かった。

そこで、適当な入力情報とシュミレーションのためのパラメータ情報を設定するだけで、将来の資産推移を気軽に確認できるAsset Trend Simulatorを作ることにした。

計算の精度が完全ではない部分もあるが、概ね自分がスプレッドシートで運用していたものと同等の精度は出ており、自分で使う分にはある程度満足している。

似たような気持ちで気軽に資産推移をシミュレーションしてみたい人がいればと思い、App Storeで公開しているので、興味があればぜひ試してみてほしい。

ユースケース

主な機能

ホーム画面

収支・投資入力

収入・支出・投資の3カテゴリで項目を管理する。収入と支出はそれぞれ複数の項目を月次金額で登録できる。投資は毎月の積立額を登録する。

収支入力

資産・負債入力

現預金残高と運用資産残高は初期値として設定する。ローンは元本・金利・残期間を入力すると元利均等方式で月返済額を自動計算する。

資産入力

シミュレーションパラメータ

期間・年収増加率・物価上昇率・運用利回り・配当分配金の再投資の有無をスライダーで調整できる。

シミュレーション設定

資産推移グラフ

純資産・現預金・運用資産・負債の4系列を折れ線グラフとして出力する。年次・月次の粒度切り替えに対応している。

結果グラフ 結果テーブル

シナリオ保存・復元

任意の名前で入力状態を SavedCase としてHiveに保存できる。保存済みケースをタップすると、すべての入力を復元できる。

保存済みケース

多通貨・ダークモード対応

JPY・USD・EURの3通貨を切り替えられ、表示値はロケールに従ってフォーマットされる。テーマはシステム設定に自動的に連動する。

設定

技術スタック

技術
UI Flutter (iOS)
状態管理 / DI Riverpod + riverpod_generator
モデル Freezed + json_serializable
永続化 Hive
グラフ fl_chart
ルーティング go_router
テスト flutter_test / mocktail

アーキテクチャはdata / domain / presentation / coreの4層に分かれている。domain層はFlutter・ストレージに依存しない純粋な計算ロジックを包み、RiverpodがDIと状態管理の2役を担う。

シミュレーションエンジンの概要

シミュレーションは1ヶ月ごとに純資産を計算し、設定した期間分だけ繰り返す仕組みになっている。年率パラメータはすべて (1 + r/100)^(1/12) - 1 の複利換算で月率に変換してから使用する。各月の計算は大きく4ステップで成り立っている。

  1. 収入・支出の更新 — 収入は年収増加率を複利換算した月率分だけ毎月増え、支出はインフレ率を複利換算した月率分だけ毎月増える。積立額(投資額)は毎月固定となる。

  2. 投資資産の運用 — まず当月の積立額を運用資産残高に加算し、加算後の残高に月次リターン率を乗じてリターンを算出する。配当再投資が有効な場合はリターンを運用資産に加算し、無効な場合は現預金に加算する。

  3. ローン返済 — 各ローンの月返済額は元利均等方式で自動計算され、返済完了月まで当月キャッシュフローから差し引かれる。元金残高は毎月の返済ごとに更新される。

  4. 月末純資産の確定 — その月の「現預金(収入−支出−投資額−ローン返済額)+運用資産−ローン残高」が純資産になる。

まとめ

Asset Trend Simulatorは、ライフプランの検討をシンプルに始めたいと思って作ったアプリである。計算精度に限界はあるものの、「運用利率を変えたら結果がどう変わるか」といった感度分析を気軽に試せる点は、自分で使っていて気に入っている。

良ければダウンロードしてみてほしい。

Tags: Flutter iOS Riverpod Dart
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事