line-quake-alert

LINE official account “地震アラート” development repository

Stars
0

注意書き

  • 本アプリは、日本気象庁のコンテンツ利用規約に基づき、同庁から提供される情報を利用しています。出典:気象庁ホームページ(https://www.jma.go.jp/jma/kishou/info/coment.html)
  • 日本気象庁のコンテンツ利用規約に従い、情報の編集や加工を行っています。出典:気象庁ホームページ(同上)
  • 本アプリでは、P2P地震情報の提供される情報を利用しています。出典:P2P地震情報(https://www.p2pquake.net/develop/json_api_v2/#/)
  • 本アプリの利用に起因する損害について、当方は一切の責任を負いません。また、提供する情報の正確性も保証いたしません。

アプリ名:地震アラート

サイト概要

サイトテーマ

「地震アラート」は、日本国内の地震情報を迅速に通知するためのリアルタイム警告LINE公式アカウントです。LINEを通じてユーザーが登録した地域に地震が発生した場合、迅速に情報を受け取ることができます。

テーマを選んだ理由

背景: 日本は地震が頻発する国であり、即時性のある情報を受け取ることは非常に重要です。既存の防災システムはありますが、個々のユーザーに特化した通知やアラート機能を持つアプリケーションはまだ不十分です。

困りごとと課題:

  • 地震発生後の迅速な対応が難しい。
  • 個人に合わせた地震情報の配信が不足している。
  • スマートフォンで手軽に地震情報を取得したいが、プッシュ通知が煩雑で管理しづらい。
  • 上記の課題を解決するために、LINEを利用したシンプルでカスタマイズ可能な地震アラートシステムを開発しました。

ターゲットユーザー

  • 日本国内で地震情報をリアルタイムに取得したい人。
  • 特定の地域に住んでおり、その地域の地震情報をいち早く知りたい人。
  • 緊急時に迅速な対応が求められる家庭や職場の防災担当者。

主な利用シーン

  • 地震発生直後にユーザーがLINEを通じて即座に通知を受け取り、迅速な対応ができる。
  • 家族や同僚にLINEを通じて地震の発生を共有し、二次災害を防止する。
  • 地震が発生した地域に関する情報を確認し、避難や対応に役立てる。

機能一覧

  • 地震情報のリアルタイム取得(P2P地震情報を経由した日本気象庁提供のデータを使用)
  • LINEアカウントと連携して、特定の地域の地震情報を配信
  • ユーザーの希望する地域(都道府県)ごとのアラートを設定

使用技術一覧

インフラ構成

プロジェクト構築手順

ローカルPCへプロジェクトをクローンする

$ git clone https://github.com/24-105/line-quake-quick-alert.git

Node.jsのインストール

## homebrewを使用している場合
$ brew install node@22

## voltaを使用している場合
$ volta install node@22

バージョンの確認

$ node -v
$ npm -v

パッケージのインストール

$ npm install

TypeScriptのコンパイル

$ npx tsc

Dockerの構築手順

フォルダー作成

$ mkdir -p ./docker/dynamodb
$ mkdir -p ./docker/mysql

Dockerコンテナーの作成と起動

$ docker-compose up -d

Dockerコンテナーの状態・ログ確認

$ docker-compose ps
$ docker-compose logs dynamodb-local
$ docker-compose logs dynamodb-admin

AWS DynamoDBテーブルを作成する

$ NODE_ENV=local npx ts-node src/migration/dynamodb/channelAccessToken.ts
$ NODE_ENV=local npx ts-node src/migration/dynamodb/quakeHistory.ts

AWS DynamoDBテーブルが作成されたか確認

$ brew install awscli
$ aws dynamodb list-tables --endpoint-url http://localhost:8000

AWS DynamoDBテーブルを削除する

$ aws dynamodb delete-table --table-name ChannelAccessToken --endpoint-url http://localhost:8000
$ aws dynamodb delete-table --table-name QuakeHistory --endpoint-url http://localhost:8000

MySQLデータベースを作成する

MySQLへログインする

$ docker exec -it mysql bin/bash
$ mysql -u root -p -h localhost

データベースを作成する

$ CREATE DATABASE quake_alert_bff;

Dockerコンテナーの停止と削除

$ docker-compose down

アプリケーション起動

# ローカルモードでの起動
$ npm run start:local

# 開発モードでの起動
$ npm run start:dev

# 本番モードでの起動
$ npm run start:prd

# デバッグモードでの起動
$ npm run start:debug

テスト起動

# ユニットテスト
$ npm run test

# e2eテスト
$ npm run test:e2e

# ユニットテスト後、テストカバレッジのレポートを生成
$ npm run test:cov

推奨するコミットメッセージ

- build: ビルドシステムまたは外部依存関係に影響する変更
- ci: CI構成ファイルとスクリプトへの変更
- docs: ドキュメントのみの変更
- feat: 新機能
- fix: バグ修正
- perf: パフォーマンスの向上
- refactor: リファクタリング
- style: コードの意味に影響しない変更
- test: 不足しているテストの追加または既存のテストの修正
- chore: その他

Powered by NestJS

Description

Nest framework TypeScript starter repository.

Resources

Check out a few resources that may come in handy when working with NestJS:

  • Visit the NestJS Documentation to learn more about the framework.
  • For questions and support, please visit our Discord channel.
  • To dive deeper and get more hands-on experience, check out our official video courses.
  • Visualize your application graph and interact with the NestJS application in real-time using NestJS Devtools.
  • Need help with your project (part-time to full-time)? Check out our official enterprise support.
  • To stay in the loop and get updates, follow us on X and LinkedIn.
  • Looking for a job, or have a job to offer? Check out our official Jobs board.

Support

Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.

Stay in touch

License

Nest is MIT licensed.