← 過去ログに戻る
🏗️

システム設計と仕様

System Architecture & Data Flow

🌐 システム構成図 (AWS Serverless)
AWSリソースを活用した、サーバーレスなIoTセンサスキャン・公開データ情報収集基盤となっています。
flowchart TD
    subgraph SRC ["データソース"]
        A1["神奈川県 雨量情報 Web"]
        A2["ESP32-C3U センサー (気温・湿度・気圧)"]
    end

    subgraph AWS ["AWS クラウド"]
        B1["Lambda: Scraper (10分毎)"]
        B2["IoT Core (MQTT)"]
        B3["Lambda: IotReceiver"]
        C1[("DynamoDB: WeatherTable")]
        C2[("S3: Archive Bucket")]
        D1["Lambda: Archiver (深夜1時)"]
        E1["HTTP API Gateway"]
        E2["Lambda: ApiFunction"]
        F1["S3: Frontend Bucket"]
        F2["CloudFront"]
    end

    subgraph UA ["ユーザー"]
        U1(["Web ブラウザ"])
    end

    A1 -->|スクレイピング| B1
    A2 -->|MQTT Publish| B2
    B2 -->|IoT Rule| B3
    B1 -->|雨量書き込み| C1
    B3 -->|センサー書き込み| C1
    C1 -.->|日次| D1
    D1 -->|CSV/JSON| C2
    E1 --> E2
    E2 -->|直近データ| C1
    E2 -->|過去ログ| C2
    F1 -.->|OAC| F2
    F2 -->|HTTPS配信| U1
    U1 -->|API呼出| E1
        
⚙️ コンポーネント解説

📡 データ収集層

ScraperFunction: 10分間隔で EventBridge (CloudWatch Events) によって実行され、県公式の観測ページから最新の降水データをスクレイピングして DynamoDB に保存します。
IoT Core & IotReceiverFunction: ESP32センサーからの測定値 (気温・湿度・気圧) を MQTTプロトコル でリアルタイムに受信し、AWS IoT Rule を経由して Lambda を呼び出し保存します。

🗄️ データストレージ層

DynamoDB (WeatherTable): 直近および過去24時間分の雨量と環境センサーデータを高速に読み書きするためのプライマリストレージとして機能します。
S3 (ArchiveBucket): ArchiverFunction により、前日分のデータが毎日深夜1時に DynamoDB から抽出され、長期保存用アーカイブとして日別の JSON または CSV 形式で保存されます。

🌐 APIとフロントエンド

ApiFunction & HTTP API Gateway: SPAからのリクエストに対し、DynamoDBの最新データや、S3に格納された過去ログのリスト読み出しを提供します。
CloudFront & S3 Frontend: HTML, CSS, JavaScript (Chart.js) と画像群を含む静的なアセットを、認証付きOAC設定で安全かつグローバル・エッジで高速に配信します。