Misoca LINE Notifier
Misocaの経理情報を集計し、LINEに自動通知するシステム開発
Overview
Misoca上の納品書・請求関連データによる売り上げを人手によって確認するには、状況把握のしづらさがありました。本プロジェクトでは実際に現場に赴き、社員の方からの要望を伺い、要件定義から見直し、通知ルールを管理画面で設定できる形に設計しました。
Misoca APIから対象データを取得し、取引先・ステータス・期間などの条件で絞り込んだうえで、指定したLINEユーザーへ自動通知することで、手動での確認無しで、業務状況の可視化・分析を実現しました。
Key Features
1. 柔軟な通知ルール管理
cronスケジュール、対象期間、取引先ID、対象ステータス、通知先LINEユーザー、メッセージテンプレートを管理画面から設定でき、業務フローに合わせた通知条件を組み立てられます。
2. 手動実行とデバッグ支援
通知ルールは定期実行だけでなく手動実行にも対応しており、対象件数や抽出条件の確認ができるDebug画面も備えています。運用中の検証や切り分けがしやすい構成です。
3. 運用を意識した監視・履歴管理
ダッシュボードでシステム状態、直近の通知実行、未解決エラーを確認でき、通知履歴とエラーログも一覧管理できます。障害時の追跡や再確認を前提にした業務システム寄りの作りです。
4. LINE Webhookによる受信者登録
LINE Webhook経由でユーザーIDを取り込み、通知先候補として管理できるため、LINE通知の運用開始までをスムーズにしています。
Architecture
構成は、Next.js製の管理画面、Go/Echo製のAPIサーバー、Go製のLINE Webhookサーバー、PostgreSQLを中心としたシンプルな分離構成です。APIサーバーは通知ルール管理、実行履歴、エラーログ、手動実行、ダッシュボード集計を担い、定期実行はrobfig/cronでルール単位に登録しています。
Misoca APIから納品データを取得し、ルールに応じて絞り込み・集計した結果をLINE Messaging APIへ送信します。 管理画面は Tailscale ネットワーク内で運用し、LINE Webhook のみ外部連携に必要な範囲で限定公開する構成です。
開発のポイント: 通知ルールを柔軟に設定できることと、失敗時に原因を追えることを重視し、実運用で扱いやすい構成にしています。
Tech Stack
Frontend
- Next.js 16
- React 19
- TypeScript
Backend
- Go / Echo
- GORM
- PostgreSQL
- golang-migrate
- robfig/cron
Infrastructure
- Docker Compose
- LINE Messaging API
- Misoca API
- Cloudflare Tunnel
- Tailscale
Deployment / Infrastructure
デプロイ環境: ローカルサーバ上の Proxmox VM
本システムはローカルサーバ上の Proxmox 仮想マシンにデプロイし、Docker Compose で PostgreSQL を起動、Go 製の API サーバーと LINE Webhook サーバー、Next.js フロントエンドを分離して運用しています。あわせて、ファイアウォールでは不要なポートや通信を明示的に drop し、管理系アクセスには Tailscale を利用することで、外部ネットワークから直接アクセスできない構成としています。
セキュリティ・公開方針
管理画面は Tailscale 配下で frontend 側に Basic 認証を設定し、backend API は 127.0.0.1 でのみ待ち受けることで外部公開しない構成としています。frontend から backend への通信は内部プロキシ経由に統一し、利用者ブラウザから backend の実アドレスが見えないようにしました。一方で、LINE Webhook の受信に必要な入口のみを Cloudflare Tunnel 経由で限定公開し、必要最小限の通信だけをインターネット側に開放しています。
インフラのポイント
管理系経路と外部受信経路を明確に分離し、利用者がアクセスする公開面は frontend のみに限定しています。管理画面は Tailscale + Basic 認証、backend API は内部閉域、Webhook だけを限定公開とすることで、攻撃面をできるだけ小さく抑えました。ローカルサーバ運用でありながら、セキュリティを意識して公開範囲を最小限に抑えた構成にしています。
Links
- ※ 受託開発のためリポジトリは非公開
- ※本実績は、クライアント企業様から掲載許諾をいただいております。