このプロジェクトは、個人の資産運用戦略に基づき、生活費・予備費・生活防衛資金・投資資金の4つのセグメントを最適に管理・配分するためのデスクトップアプリケーションです。
就職後の収入や日々の余剰資金を、設定されたロジックに従って自動的に「どの口座にいくら振り分けるべきか」を計算し、可視化します。
PythonのGUIライブラリ CustomTkinter を採用し、モダンで視認性の高いダークモードUIを提供します。
- 資産残高の可視化: 主要4口座(PayPay、ソニー、住信SBI、SBI証券)の残高を一覧表示。
- しきい値アラート: 設定した目標額を下回っている口座は赤字で警告表示、満たしている口座は緑字で表示されます。
- 現在の運用モード表示: 資産状況から、現在どのフェーズ(生活費補填、予備費補填、余剰金運用)にいるかを自動判定して表示します。
- 余剰資金の配分計算: 今回の入金額(余剰資金)を入力すると、優先順位に従って各口座への振込額を算出します。
- 結果の反映: 計算結果を確認後、「結果を反映する」ボタンでデータベース上の資産残高を更新できます。
- 設定の変更: 生活費目標、予備費目標などのしきい値をGUI上からいつでも変更可能です。
- JSONによるデータ永続化: 資産データや設定値は
data/data.jsonに自動保存されます。 - 操作ログ: 資産の更新や計算の履歴を直近10件までポップアップで確認できます。
- リセット機能: 誤った入力をした際などのために、資産状況を初期化する機能(二段階認証付き)を備えています。
- 資産情報の編集: 各口座の残高を手動で修正することも可能です。
- 視認性の最適化: 幅広い年齢層や環境に対応するため、フォントサイズを大きく設定し(標準24px〜)、ボタン類も押しやすいサイズ(高さ60px〜)に調整しています。
- OSごとの最適表示: macOS/Windows/Linuxそれぞれのフォントレンダリング特性に合わせ、最適なフォントファミリとサイズを自動選択します。
- 入力フォーカス制御: Linux環境等での入力トラブルを回避するため、堅牢なフォーカス制御(クリック時の強制フォーカス取得など)を実装しています。
- 標準ウィンドウ: OS標準のウィンドウフレームを採用し、安定した操作性(移動、サイズ変更、最小化/最大化)を確保しています。
本システムは以下の優先順位で資金を配分します。しきい値(目標額)はアプリ内で自由に変更可能です。
-
生活費補填モード
- 条件: PayPay銀行(生活費) < 生活費目標額
- 動作: 余剰資金を最優先でPayPay銀行に充当します。
-
予備費補填モード
- 条件: 上記を満たし、かつ ソニー銀行(予備費) < 予備費目標額
- 動作: 余剰資金の 50% をソニー銀行(予備費)へ、50% をSBI証券(投資)へ配分します。
-
余剰金運用モード
- 条件: 上記2つを満たしている場合
- 動作: 余剰資金の 100% をSBI証券(投資)へ配分します。
※ 住信SBI(生活防衛資金)は、長期的な安全資産として監視対象ですが、日々の配分ロジックには直接組み込まれていません(手動管理)。
- OS: Linux (推奨), Windows, macOS
- Python: 3.10 以上
- リポジトリをクローンまたはダウンロードします。
- 仮想環境を作成し、有効化します。
python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows
- 依存ライブラリをインストールします。
pip install -r requirements.txt
メインスクリプトを実行して起動します。
python src/main.py開発中は、コードの変更を検知して自動再起動するモードが利用できます。
python dev.pyPythonが tcl-tk ライブラリを見つけられていない可能性があります。以下の手順で再インストールしてください。
-
tcl-tk のインストール (Homebrew使用):
brew install tcl-tk
-
Python の再ビルド:
env \ PATH="$(brew --prefix tcl-tk)/bin:$PATH" \ LDFLAGS="-L$(brew --prefix tcl-tk)/lib" \ CPPFLAGS="-I$(brew --prefix tcl-tk)/include" \ PKG_CONFIG_PATH="$(brew --prefix tcl-tk)/lib/pkgconfig" \ CFLAGS="-I$(brew --prefix tcl-tk)/include" \ PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I$(brew --prefix tcl-tk)/include' --with-tcltk-libs='-L$(brew --prefix tcl-tk)/lib -ltcl8.6 -ltk8.6'" \ pyenv install 3.12.8
※ バージョン部分は適宜使用しているものに合わせてください。
.
├── src/
│ ├── main.py # エントリーポイント
│ ├── config.py # OS依存設定(フォント等)
│ ├── logic.py # 配分ロジック計算
│ ├── data_manager.py # データ読み書き・ログ管理
│ └── ui/
│ ├── app.py # アプリケーション本体
│ ├── frames.py # 各画面(ダッシュボード、シミュレーター)の実装
│ └── custom_window.py # ウィンドウ制御基盤(標準ウィンドウラッパー)
├── data/
│ └── data.json # 資産データ・設定保存ファイル
├── dev.py # 開発用ホットリロードスクリプト
├── requirements.txt # 依存ライブラリ一覧
├── .gitignore # Git除外設定
└── README.md # 本ドキュメント