KakeiBonByRust の開発に参加する開発者向けの概観・横串解説ドキュメントです。 個別領域の詳細は専門ガイドへ誘導しています。
対象: バックエンド (Rust) / フロントエンド (Vanilla JS) / DB (SQLite) いずれの貢献者 最終更新: 2026-05-30 (v2.5.0 時点)
KakeiBonByRust は、Tauri v2 で構築された家計簿(household budget)デスクトップアプリです。
- アーキテクチャ: Tauri v2(Rust バックエンド + Vanilla JS フロントエンド + SQLite)
- 対応言語: 日本語 / 英語(i18n)
- 対応プラットフォーム: Linux(検証済み)/ Windows(v2.4.1 以降配布対応)/ macOS(未検証)
- ライセンス: MIT(
LICENSE/Cargo.toml/package.json同期) - 対象用途: 家計用途専用(会計処理は対象外)
実態は Cargo.toml / package.json を正としますが、v2.5.0 時点の主要要素は以下:
| カテゴリ | クレート | バージョン |
|---|---|---|
| フレームワーク | tauri |
2.11.1 |
| ビルド | tauri-build |
2.5.2 |
| ロギング | tauri-plugin-log |
2.7.1 |
| ランタイム | tokio |
1.x (full features) |
| シリアライズ | serde, serde_json |
1.x |
| DB(テスト用) | sqlx |
0.8.6 (runtime-tokio, sqlite) |
| 日時 | chrono |
0.4 (serde) |
| 暗号 | argon2, aes-gcm, base64, rand |
— |
| ロケール補助 | glib |
0.20 |
| 祝日 | jpholiday |
0.1.4 |
注意: 本番 DB アクセスは
rusqliteベースの自作レイヤ(src/db.rs+src/sql_queries.rs)を使用。sqlxはsrc/test_helpers.rsのテストインフラ専用です。
- Rust edition: 2021
- 最低 Rust バージョン: 1.77.2
- 形態: Vanilla JS + HTML + CSS(フレームワークなし)
- モジュール形式: ES Modules(
.js拡張子をインポート時に明記) - テスト: Jest(
res/tests/以下) - node/npm 管理: nvm(非対話 zsh では PATH に npm が無いことに注意)
- エンジン: SQLite 3
- ファイル:
~/.kakeibon/KakeiBonDB.sqlite3 - スキーマ管理:
res/sql/配下の SQL ファイル - アクセス規約: すべてのクエリを
src/sql_queries.rsに集約、prepared statements 必須
KakeiBonByRust/
├── src/ # Rust バックエンド
│ ├── main.rs / lib.rs # エントリポイント
│ ├── db.rs # DB 接続レイヤ
│ ├── sql_queries.rs # SQL クエリ集約
│ ├── consts.rs # ROLE_ADMIN/USER, MIN_PASSWORD_LENGTH など
│ ├── crypto.rs # AES-256-GCM 暗号化
│ ├── security.rs # argon2 ハッシュ、認証
│ ├── settings.rs # ユーザー設定 (起算日, HolidayShift など)
│ ├── validation.rs # 統一バリデーション
│ ├── test_helpers.rs # テスト用 sqlx ヘルパ
│ └── services/ # ドメインロジック (15 module)
│ ├── account.rs # 口座管理
│ ├── aggregation.rs # 集計
│ ├── auth.rs # 認証
│ ├── category.rs # 費目管理
│ ├── encryption.rs # 暗号化サービス
│ ├── holiday.rs # 祝日 (jpholiday)
│ ├── i18n.rs # 多言語リソース
│ ├── manufacturer.rs # メーカー
│ ├── period.rs # 期間計算 (起算日含む)
│ ├── product.rs # 商品
│ ├── recurring.rs # 繰り返し予定入出金 (RULE_ID 中心設計)
│ ├── session.rs # セッション
│ ├── shop.rs # 店舗
│ ├── transaction.rs # 入出金
│ └── user_management.rs # ユーザー管理
│
├── res/ # フロントエンドリソース
│ ├── js/ # ES Modules (~34 ファイル)
│ ├── css/ # スタイルシート
│ ├── sql/ # 初期 SQL / シード
│ └── tests/ # Jest テストスイート
│
├── docs/ # ドキュメント (詳細は INDEX_ja.md)
├── scripts/ # リリース・統計・i18n チェックスクリプト
├── src-tauri ファイル群 # tauri.conf.json など
├── CHANGELOG_ja.md / CHANGELOG_en.md # リリースノート
└── Cargo.toml / package.json # 依存定義
詳細手順は専門ドキュメントへ:
要点だけ:
- Linux 上では
apt/pacman等で WebKitGTK と関連パッケージが必要 - node は nvm 管理を推奨(非対話シェル PATH に注意)
- Rust は
rustupで edition 2021 + 1.77.2 以上
# 開発実行(ホットリロード付き)
cargo tauri dev
# バックエンドテスト
cargo test
# フロントエンドテスト (Jest)
cd res/tests && npm test
# 全テスト一括実行(バックエンド + フロントエンド)
./res/tests/run-all-tests.sh
# リリース前チェック (3 version files 整合, etc.)
./scripts/check-release.sh
# i18n リソース整合チェック
./scripts/check_i18n_resources.sh
# リリースビルド
cargo tauri build再起動の用語: Tauri アプリのため、フロント変更の反映は「ブラウザリロード」ではなく「アプリ再起動」になります。
詳細は コーディング規約 を参照。
要点(必ず守る):
- 本番コードで
unwrap()禁止 →Result<T, E>で返す - すべての SQL は
src/sql_queries.rsに集約、prepared statements - コミット前に
cargo fmt、cargo clippyの警告ゼロ
- ES Modules(インポートに
.js拡張子) - バリデーションは
validation.rs(バックエンド)と対応する JS 側で二段階実施
- 英語、Conventional Commits 形式:
type(scope): description- 例:
fix(window): fit + center every screen on load
- 例:
- ハードコード禁止、すべて i18n リソース経由
- 新規 RESOURCE_ID 追加時は MAX ID を確認してから(
INSERT OR IGNOREは重複時サイレントスキップする)。/i18n-addスキルが推奨手順
詳細は I18N 実装ガイド / 翻訳ガイド を参照。
ポイント:
- バックエンド:
src/services/i18n.rsがリソースを解決 - フロントエンド:
res/js/i18n.jsが言語切替を担当 - リソースは SQLite テーブル (
*_I18N) に格納、初回起動でシード - 対応言語: 日本語 (ja) / 英語 (en)、追加歓迎
詳細は CHANGELOG_ja.md と scripts/check-release.sh を参照。/release スキルが推奨フローです。
3 つのバージョンファイルを必ず同期:
Cargo.tomlのversionsrc-tauri/tauri.conf.jsonのversionpackage.jsonのversion
その後:
CHANGELOG_ja.md/CHANGELOG_en.mdにエントリ追加./scripts/check-release.shで整合チェックdev→mainマージで release workflow が自動起動(draft → publish)gh release createを手で打たない(workflow と 422 衝突する)
dev: 全ての開発作業はこちらmain: リリースタグ用、devからのマージで更新- 大規模リファクタは
dev-vNのような並行ブランチでマージコンフリクトを回避
詳細は テスト概要 を参照。
v2.5.0 時点の規模:
- Rust: 390 件
- JavaScript (Jest): 623 件
テスト数は CHANGELOG_ja.md の各リリースエントリが最新値です。
- ドキュメント索引 (INDEX_ja) — すべてのドキュメントの入口
- コーディング規約
- I18N 実装ガイド
- 開発環境セットアップ
- テスト概要
- CHANGELOG_ja
- 貢献ガイド
- 行動規範
- GitHub Issues — バグ・機能リクエスト
- GitHub Discussions — 質問・議論
- メール: bonojovi2741@gmail.com