【個人開発】防災対策の面倒を消すアプリ【Rails】

# はじめに

プログラミング未経験からディープロというプログラミングスクールに入校し４ヶ月間学習をしてきました。その集大成としてオリジナルアプリケーションをこのたび作成しました！
アプリ名は![スクリーンショット 2023-08-31 13.48.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/22e58e83-8b89-42e0-4649-77021e1179ff.png)です。


今年は関東大震災から100年目という節目の年なので、防災に役立つアプリケーションを開発しようと考え以下の機能を実装しました。

- 住所を入力すると周辺の避難場所が表示
- 家族の人数と情報を入れると必要な防災備蓄量が表示
- 防災備蓄品の消費期限を登録すると、消費期限前に通知をメールで受け取り

URL : https://guardiant.tokyo/

GitHub : https://github.com/ogura820/guardiant

# 目的

## 防災対策の面倒をなくしたい！

そもそもこのアプリを作ろうと考えたきっかけは、自分が防災対策をしようと行動に移した時に欲しい情報や機能を探すのが面倒に感じたからです。

また避難場所を探す機能や必要な備蓄を算出する機能は探せばあるのですが、ひとつのHPで完結して利用できるサービスはありません。そのため各サイトごとに情報の入力や登録が必要となり管理コストが高くなっています。

これらの不満を感じているのは自分だけではないのではないかと考え「ないなら作ろう！」ということで当アプリを作成しました。

# 使い方

ユーザー登録後、各機能のリンクをクリックして使用します。

## 避難場所検索機能
### 1.避難場所を探したい場所を登録
![スクリーンショット 2023-08-31 12.38.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/a60e4d21-5fa9-2b7a-c4b9-7f2c42d3b35c.png)
新規作成ボタンをクリック
周辺の避難場所を探したい住所と名前を入力します(緯度経度は自動で入力されます)
![スクリーンショット 2023-08-31 12.48.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/8e6f0f4f-f26a-e688-72b9-3922039886fe.png)
### 2.一覧から地図表示を表示
![スクリーンショット 2023-08-31 12.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/d734bdd5-8278-9c99-ff1e-d8effbd78eae.png)
一覧画面から地図表示ボタンをクリックすると入力された住所を中心とした地図が表示されます！
![スクリーンショット 2023-08-31 12.50.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/b1a22602-58d8-1219-8047-cdc5b66933e9.png)
地図の中心には赤いピンが立っていますがこれが最初に入力した住所です。
周りには黄色い点や緑の点などが確認できますが、これが災害発生時に避難するのに適した場所です。
地震・津波・洪水・火事によって避難に適した場所は違いますが、色によって区別して地図上に表示されています。

## 必要備蓄量表示機能
### 1.備蓄を必要とする人を登録
![スクリーンショット 2023-08-31 13.00.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/f584dae7-c6d5-d4a9-2995-fda639efecec.png)
新規作成ボタンをクリック。表示された入力欄に情報を入力し投稿するをクリックします。
同居している家族がいたら同様の手順で登録をしていきます。
![スクリーンショット 2023-08-31 13.00.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/560fd6c9-d937-f7eb-c8c2-5f5c573936da.png)
### 2.必要物資を表示
![スクリーンショット 2023-08-31 13.00.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/bf075bf5-49e8-c9b6-06ee-041e7cedf052.png)
登録がうまくいくと「必要物資表示」という赤いボタンが表示されるのでクリックしてください。
![スクリーンショット 2023-08-31 13.01.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/20b93d59-8f47-a269-6479-1417bc792d04.png)
二週間インフラが停止しても生きていけるだけの物資が表示されます。
さらに、ここで表示された情報はユーザー登録時に入力したメールアドレスに転送することもできます。
## 防災備蓄品の消費期限をメール通知機能
### 1.消費期限を管理したい物資を登録
![スクリーンショット 2023-08-31 13.15.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/974bddd2-7b77-5cd7-54ed-6b42ed5027ed.png)
新規投稿ボタンをクリック。表示された入力欄に消費期限とメール通知が欲しい日を入力後、投稿するをクリックしてください。
![スクリーンショット 2023-08-31 13.15.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/55a6286d-8bfa-cb6c-f652-13fca000d409.png)
### 3.メールで通知を受け取る
![スクリーンショット 2023-08-31 13.15.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/081f1059-e046-78e4-90eb-f39581e5696d.png)
ユーザー登録時に入力したメールアドレスに対して設定した通知日にメールが送付され、消費期限前に防災備蓄品を消費することができるようになります！

# 動作環境
Ruby 3.0.1
Rails 6.1.6

# 外部サービスやAPI
GeoJSON API (CSV フォーマットのデータを GitHub Actions で GeoJSON に変換し API として公開するAPI)
Community Geocoder(住所から緯度経度を検索)
Embed API(Geoloniaの地図を表示するAPI)
ChatGPT API(登録ユーザーに基づき必要な物資を聞く機能に使用)
ransack(備蓄管理機能の検索・ソート機能に使用)
whenever (メール通知機能に使用)
SendGrid(メール送信に使用)
AWS EC2 
国土地理院-指定緊急避難場所データ
農林水産省-災害時に備えた食品ストックガイド
# こだわりポイント
### スマートフォン対応デザイン
スマートフォンなど画面のサイズに応じて利用しやすいデザインで表示されるようにしました。
![スクリーンショット 2023-08-31 13.33.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3379147/abc68709-28fc-73b0-7471-40880f7af6b9.png)
### できるだけシンプルなコードに
他の人が保守・改良しやすくするためシンプルなコードで実装を目指しました。
# 今後実装したい事
- SPA化
- 備蓄品をAmazonリンクから購入できるようにして収益化

# おわりに
最後まで読んでいただきありがとうございました！
このアプリを使用して一人でも多くの人が災害に対する備えをしてくれると嬉しいです！