Skip to content

YumNumm/EQMonitor

Repository files navigation

EQMonitor - 地震速報・監視アプリケーション

Github All Releases GitHub release (latest by date including pre-releases)

Android iOS

[!WARNING] > 利用規約 - Term of Serviceを必ずご確認の上ご利用ください。

iPad1

概要

EQMonitorは、日本全国の地震情報をいち早く受信できるアプリケーションです。

機能

  • 地震情報・緊急地震速報の通知

    気象庁により発表された地震情報や、緊急地震速報を受信し、通知します。

  • 過去の地震履歴の閲覧

    過去に発表された地震情報を遡って確認できます。

  • 緊急地震速報のリアルタイム表示

    緊急地震速報が発表された際に、P波・S波の予想到達範囲、予想最大震度、震央地を表示します。 緊急地震速報は、リアルタイムに更新され、インターネットに接続されていれば、どこからでも確認できます。

  • 強震モニタの表示

    防災科学技術研究所の提供するWebサービス 強震モニタ を表示します。 (※ 強震モニタは、揺れの様子を直感的に捉えることを目的としています。また、リアルタイムで観測値を処理しているため、ノイズ等により観測値が変動します。 そのため、本アプリケーションで表示される観測値は、あくまで参考値としてご利用ください。)

環境構築

下記のコマンドをターミナルから実行してください。

  1. git clone https://github.com/YumNumm/EQMonitor でリポジトリをクローンします。

  2. cd EQMonitor でカレントディレクトリを移動します。

  3. Dartプロジェクトを管理するためのツールであるmelosをインストールします。

    • dart pub global activate melos を実行してください。
    • 詳細は、Get Startedを参照してください。
  4. melos bootstrap を実行してください。

    • これにより、各パッケージの依存関係が解決されます。
  5. mv app/.env.example app/.env を実行してください。

    • HTTP APIのみ Staging APIへ接続できます。(事前設定済み)
      • 常に最新の地震情報が提供されることを保証しません。
      • 事前の予告なしに、APIの仕様が変更される可能性があります。
      • アプリストアで公開しているAPIとは異なり、APIの実行環境やWAFの設定が異なります。
    • その他の値は、そのままでも問題ありません。
      • WebSocket APIは公開していないため、リアルタイムでの緊急地震速報の受信などはできません。
  6. fvm flutter run でアプリケーションを起動します。

アーキテクチャ

  • アプリケーション

    • 状態管理: Riverpod, Flutter Hooks
    • データ取得: Dio, retrofit, eqapi_client(自作)
    • JSONシリアライズ/デシリアライズ: freezed, json_serializable
    • マップ: maplibre_gl
  • エッジサーバサイド(API)

    • 実行環境: Cloudflare Workers
    • データベース: Cloudflare D1 + Supabase
    • キャッシュ: Cloudflare KV
    • WebSocket(Fallback): Cloudflare Durable Objects
  • バックエンド(通知配信, DB追加, データ加工, WebSocket, 揺れ検知)

    • 実行環境: Oracle Cloud Infrastructure Compute Instance, Docker Compose(12個のコンテナを管理)
    • データベース(キャッシュ用): PostgreSQL
    • 言語: Node.js(TS), Bun(TS), Golang, C#