構成

送信側

  • 受け取りプラグイン(ネットワークに触れない)
  • 保存SQLite(Outbox)
  • 送信常駐プロセス(macOS LaunchAgent)

受信側

  • 受け付けHTTP サーバー / SQLite(Inbox)

開発

  • 実装Node.js 24(外部パッケージなし)
  • CIGitHub Actions(Ubuntu / macOS)

技術的なポイント

  • Outbox パターン
    • イベントは保存してから受け取りを返すので、途中で止まっても失われません。
    • イベントの流れごとに順序を守り、「少なくとも 1 回」届けます(at-least-once)。
    • 同じイベントが重なって届いても、受信側で取り除きます。
  • 黙って捨てない — スリープやオフラインから戻ったことを検知して、すぐ送り直します。キューがいっぱいになったら、捨てずに止まります。
  • 改ざんの防止 — HMAC-SHA256 で署名し、タイムスタンプの許容幅と送信元も検証します。署名の鍵はキーチェーンで管理します。
  • 外部パッケージなし — node:sqlite、node:crypto、node:test など、Node.js に組み込まれた機能だけで作っています。テストは 48 件で、Ubuntu と macOS の両方で実行しています。
実績一覧へ

Contact

開発のご相談・お見積りは、
お気軽にどうぞ。