Yarikuri data-ops Bot
Discord Bot
Discord Bot
Screenshots
About
Yarikuri Discord Bot
個人の家計管理を効率化するために作成したDiscord Botです。PostgreSQLデータベースと連携して、家計簿の基盤となるマスターデータを管理・表示します。
なぜ作ったのか
背景・動機
- 家計簿アプリの不満: 既存の家計簿アプリは自分の使い方に合わず、カスタマイズ性に欠けていた
- Discord活用: 日常的に使用しているDiscordで家計管理を完結させたい
- データ主権: 自分のデータは自分で管理したい(外部サービス依存の脱却)
- 技術学習: Go言語とDiscord API、PostgreSQLの統合学習の実践
技術的な課題解決
- データの永続化: PostgreSQLダンプファイルからメモリ読み込みによる高速アクセス
- 操作性: スラッシュコマンドによる直感的なインターフェース
- 運用性: systemdサービス化による安定稼働
概要
「やりくりボット」は、個人の家計簿管理のためのDiscord Botです。PostgreSQLのマスターデータを基盤として、Discord上でスラッシュコマンドを通じて各種情報を確認できます。
主な機能
実装済み機能
- マスターデータ管理: PostgreSQLダンプファイルからマスターデータを読み込み
- データ件数確認: 各マスターデータの読み込み件数をDiscordで確認
- データ一覧表示: カテゴリ、グループ、ユーザー、支払い方法の詳細一覧を表示
- スラッシュコマンド対応:
/check_master、/show_masterコマンドの実装 - 自動再起動: systemdサービスとして動作し、障害時の自動復旧
管理対象データ
- カテゴリ一覧 (
category_list): 支出カテゴリの管理 - グループ一覧 (
group_list): ユーザーグループの管理 - ユーザー一覧 (
user_list): 利用ユーザーの管理 - 支払い方法 (
payment_type): 決済手段の管理 - 収入源 (
source_list): 収入源の管理 - 収入種別 (
type_kind): 収入の分類管理 - 支払い種別 (
type_list): 支払い方法の分類管理
技術構成
- 言語: Go 1.18
- 主要ライブラリ:
- データベース: PostgreSQL 16.2
- デプロイ: systemd サービス
設計思想
アーキテクチャの選択理由
- Go言語: 単一バイナリでのデプロイ、高いパフォーマンス、シンプルな並行処理
- メモリ読み込み: SQLダンプファイルから起動時に全データを読み込み、高速アクセスを実現
- Discord Bot: 既存の使い慣れたプラットフォームでの操作、外部ツール不要
- systemd統合: Linux環境での安定した自動起動・監視
データ設計の考慮点
- 正規化: 家計簿の各要素(カテゴリ、支払い方法等)を独立したマスターテーブルで管理
- 拡張性: 将来的な支出・収入記録機能を見据えた構造設計
- 一貫性: PostgreSQLによるACID特性を活用したデータ整合性の保証
プロジェクト構成
yarikuri/
├── README.md # このファイル
├── yarikuri_bot.service # systemd サービス設定
├── bot/ # Bot本体
│ ├── main.go # メインアプリケーション
│ ├── go.mod # Go モジュール定義
│ ├── go.sum # 依存関係のハッシュ
│ └── yarikuri_bot # ビルド済み実行ファイル
└── dump_local_db/
└── master_data_dump.sql # マスターデータのSQLダンプ
技術仕様
実行環境
- OS: Linux (Ubuntu)
- Go: 1.18
- データベース: PostgreSQL 16.2
- デプロイ: systemd service
パフォーマンス特性
- 起動時間: マスターデータ読み込み含めて数秒
- メモリ使用量: 軽量(全マスターデータをメモリ保持でも数MB程度)
- レスポンス: Discord API経由でも瞬時応答
個人用途特化の理由
このボットは完全に個人の家計管理ニーズに特化して設計されており、以下の特徴があります:
- カスタマイズ性: 自分の支出パターンに合わせたカテゴリ・分類設定
- プライバシー: 家計データを外部サービスに預けない完全自己管理
- 操作性: 日常使いのDiscordでシームレスな家計管理
- 拡張性: 必要な機能を必要な時に自分で実装可能
今後の開発計画
短期目標
- 支出・収入の記録機能実装
- 基本的な月次サマリー表示
中期目標
- 予算管理・アラート機能
- カテゴリ別分析・可視化
長期目標
- 投資記録との統合
- 年次レポート自動生成