Yarikuri data-ops Bot

Discord Bot

Discord Bot

Screenshots

Yarikuri data-ops Bot - 1

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でシームレスな家計管理
  • 拡張性: 必要な機能を必要な時に自分で実装可能

今後の開発計画

短期目標

  • 支出・収入の記録機能実装
  • 基本的な月次サマリー表示

中期目標

  • 予算管理・アラート機能
  • カテゴリ別分析・可視化

長期目標

  • 投資記録との統合
  • 年次レポート自動生成