防災情報をDiscordに送るBotを作りたい!!!

記事 - 2025/12/24


この記事は防災アプリ Advent Calendar 2025 24日目と、Qiita全国学生対抗戦 Advent Calendar 2025の記事です。
23日目(前日)は、ホヤさんの韓国の地震速報・地震情報についてでした。

こんにちは。時の流れは早いですね。2024年の能登半島地震がほんの数週間前のように感じます。

さて、皆さんはDiscordを何に使っていますか?ゲームのチャット、業務連絡、友達とのやり取りなど、色々な用途で使っていると思います。
そんな身近なDiscordですが、このサービスは外部のプログラムからもメッセージを送信できるのはご存じでしたか?そうです。Webhookです。
私はこのWebhookを使い、主に地震情報を配信するBotを作成しています。まだ中学生なのでつたない文章かもしれませんが、最後まで読んでいってくれると飛び跳ねて喜びます。
(防災情報って言ってますが主に地震の話です。ユルシテ)

私が地震に興味を持ったきっかけ

私は東北地方に住んでいて、2021年と2022年の福島県沖地震を経験しました。
私が住んでいる地域は震度5強の揺れに見舞われました。当時小学生だった私はすでに眠りについていましたが、母に「地震が来る」と起こされ、そのただならぬ雰囲気に目が覚めました。建物の軋む音が聞こえた直後に家が揺れ始め、どうしたら良いかわからなかった私は、ただ布団の中で縮こまることしかできませんでした。幸い家屋に大きな被害はなく、本が棚から落ちる程度で済みました。

翌朝、テレビに映る福島の被災地の様子を見て、昨夜私が感じた揺れとは比べ物にならない激しさを見て言葉を失いました。地震の怖さを初めて感じた瞬間でした。それ以来、私は「地震」に対して強い興味を抱くようになりました。

元旦の悲劇

地震からは2年が経ち、すっかり地震への関心も薄れてきた頃、スマホからけたたましいエリアメールの音が鳴り響きました。
そうです。2024年の1月1日、元旦に起きた能登半島地震です。家族で慌てて机の下に隠れ、揺れに備えました。揺れが収まった後にテレビを付けると、テレビに映る石川県の様子が映されていました。そこで見た光景は、想像を絶するものでした。けたたましい轟音、倒壊する家、そして立ちすくむ人々など、画面越しに恐怖が伝わってきました。
数分後、テレビを再び見ると「大津波警報」の文字が。私は再び言葉を失いました。同じ日本で、こんな恐ろしいことが起きているなんて、私は想像できませんでした。

プログラミングを知る

この2つの地震の経験を経て、私は地震情報Botの開発を始めました。
そして一番最初に完成したものはこれです。

一見まともなように見えるかもしれませんが、実際は深さ ごく浅い深さ -1kmになったり、そもそも深発地震や単独点処理などで最大震度が予測されないときはクラッシュしたり、とにかく問題だらけでした。
また、このときは自宅PCで動かしていたため、電気代や停電にも気を配る必要がありました。

こちらの試験的に導入してみた地震情報Botも、深さに単位がつかないわ、秒が全部:00になるわで改良の余地だらけでしたね。

Oracle cloudとの出会い

これまではすべての処理を自宅PCで行っていたため、常にPCのリソースを消費してしまったり、安定性が低かったり、とても実用には堪え難い環境で運用していました。
そこで、VPSサービスを探したり、レンタルサーバーを使ってみたりしましたが、どれも納得の行くものではありませんでした。
そこで私の知り合いから朗報が入ります。どうやら、Oracle Cloudというサービスを使えば、無料で仮想マシンが使えるとのこと。もうね、そんなの使うしかないと思いましたね。
登録を済ませ、早速使って見ました。現在は2 CPU・16GB RAMの構成で動かしています。1つのBotを動かすにはオーバースペックすぎる気もしますが、細かいことは気にしないでおきましょう。

そして現在

かなり飛びましたが、このβ0.7が現在のBotの最新バージョンです。

これは先日の青森県東方沖で発生した地震のEEWの通知です。見てわかるように、前のバージョンからかなり進化しているのが見て取れると思います。

進化点

  • 震度表記を5-や6+から6強などに変更
  • 緊急地震速報(警報)の通知に対象地域を追加
  • 例外の情報を受信してもクラッシュしないように(震度不明など)
  • 情報を簡潔でわかりやすく
自分としては中々満足できる出来ですが、改善点もたくさんあります。自分を律するためにもたくさん書いておきます。

改善点
  • 震源地の表記を緯度経度から地名に変更
  • 深さの単位をkmに変更
  • 地震情報以外の防災情報にも対応させる
  • コードの整理
  • 対象地域が分かりづらい → 北海道 東北のようにわかりやすく
  • 地図をつける
  • BOTアカウントにして公開する予定だったのに、いつの間にかWebhookになってる
  • PLUM報に対応していない(M1.0になってしまう)
  • 津波情報に対応させる(P2P地震情報 or 気象庁XMLで迷い中)
  • 一般的な防災情報に対応させる(気象警報・土砂災害警戒情報など)
  • 雑コードを治す
  • モチベーションを切らさない
これ全部を一気に実装するとなると、相当な気力と時間が必要になってしまうので、学校終わりや休日の空き時間などにまったり開発していきたいです。

終わりに

ここまで長々と体験談・開発記録を載せてきましたが、やはり地震というのは奥深いですね。
短くて内容も濃く書くことができませんでしたが、これを読んでいる皆さんの助けになれば幸いです。
この記事を書いていたら再びモチベーションが湧いてきたので、冬休みに突入したら再びBotが進化を遂げそうです。最後まで読んでいただき、ありがとうございました。

- p.s 深夜1時に勢いで書いた記事なのでおかしいとこがあるかもしれません 校正は大事
(´・ω・`)