2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「暑く/寒くなるほど激しく踊る現在気温BOT」のしくみとこだわり

2
Last updated at Posted at 2026-10-31

いつもうちのBotを構っていただきありがとうございます。「暑くなるほど激しく踊る現在気温BOT」の開発者 兼 管理者の海風夕です。

気象庁のアメダスから最新の現在気温を取得してMisskey.ioに投稿しているこのBotですが、この度大幅なアップデートを施し、「暑く/寒くなるほど激しく踊る現在気温BOT」に生まれ変わりました!アプデは偉業!

今回はせっかくなのでこの機会に、Botを楽しんでくださっている方や技術的な面が気になっている方へ向けて、「どうやって文字を変化させているのか?」という演出のこだわりや、「裏側でどう動いているのか?」というサーバレスのアーキテクチャをご紹介します。

誕生秘話:最初は「踊るBot」じゃなかった

実はこのBotは開発初期段階では、温度の「度(℃)」と角度の「度(°)」をかけて、「20℃なら20°文字を傾けるBOT」 を作ろうとしていました。

image.png

しかし、実際に画面で動かしてみると20度くらい傾けただけでは想像以上に地味……!
もっと気温が直感的に伝わる面白い動きはないかと試行錯誤をし、MisskeyのMFM機能でブルブルと小刻みに震えさせてみたところ、なんとも言えないコミカルな味が出たため、現在のしょうもない「踊る現在気温BOT」が爆誕しました💥

温度が高くなると激しくなるというのも、分子の熱運動に似ているので、モチーフとして綺麗だなということでそのままリリースされました。

ちなみに、この時に一度ボツになった「温度の分だけ傾ける」というダジャレ機能は、巡り巡って後述の最新アップデート(氷点下演出)で劇的な復活を果たすことになります!

1. 気温で変化するこだわりの演出(MFM)

Misskeyには、文字を動かしたり装飾したりできる「MFM(Markup language For Misskey)」という機能があります。
このBotでは、全国主要12都市のリアルタイムな気温に合わせて、プログラムがタグを動的に組み立てて投稿しています。

① 普段の気温(0℃超 〜 30℃未満):踊る演出

通常時

過ごしやすい気温から暖かい気温までは、文字が「踊る(shake)」演出になります。
計算式(指数関数)を使っており、気温が高くなるほど小刻みに激しく踊り、気温が低いほどゆっくりと踊るようになっています。

shakeスピードの計算式(xが気温)

$f(x) = 3^{-\frac{x - 30}{10}}$

② 暑い日(30℃ 〜 35℃):熱気の予兆

猛暑

この演出が初めて出た時のノート\ウワーッ/

30℃を超えると文字が 赤色(#f55) にヒートアップし、さらに踊りも熱気を増します。

今年この演出をめっちゃ見ましたね。おかしい……制作当時はこんなに赤文字になること想定してなかったのに……

③ 猛暑日(35℃ 〜 40℃):虹色とブレ

レコーディング 2026-10-31 222432.gif

この演出が初めて出た時のノート\はしゃぎすぎ!!!!!!/

35℃以上の猛暑になると、踊りから「ブレ(twitch)」に切り替わり、PartyParrotよろしく文字がビカビカとうるさく 虹色(rainbow) に発光します。

これも何回も見ましたね……やっぱりおかしいよ日本の夏の暑さ……

2. まだ見ぬ演出 †極寒と酷暑のギミック†

今回のアップデート(2026/10/31)で「氷点下(0℃以下)」の冬仕様演出を大幅にフルリニューアルしました!
また、「40℃以上」の酷暑演出も用意されています。

しかし……この演出を実装して以来、まだ一度も0℃以下や40℃以上の気温が観測されていません。
そのため、タイムライン上でこの演出が実際にどう動くのかは、開発者も含めて誰もまだリアルタイムで目撃していない †未知の領域† となっています。

「本格的な冬が来るまで楽しみに待っていたい!」という方は、ぜひ冬の寒波が訪れた日のBotの投稿で直接確かめてみてください。

❄️ クリックして詳細を表示(ネタバレ注意:氷点下・40℃超の仕様)

氷点下の世界(0℃以下):凍結演出

冬の寒さを表現するため、気温が下がるにつれて傾き・色・ブレ・氷のような枠線・背景色が段階的に重なっていきます。
(ただ、-15℃以下はそうそう行かない想定なのでそんなに派手な演出は用意してません)

  • 0℃ 〜 -1℃未満: 気温の数字の分だけ左に傾き(例: -0.5℃なら-0.5°傾く。ここで初期構想だった「温度の分だけ傾ける」しょうもない機能が復活!)、薄い青色に。
  • -1℃ 〜 -5℃未満: 寒さでガタガタと小刻みに「ブレ(twitch)」が追加。
  • -5℃ 〜 -10℃未満: 立体的な氷の枠線(border)が現れる。
  • -10℃ 〜 -15℃未満: 背景まで凍りつき(薄紫の背景色)、文字が黒くなって凍結を強調。
  • -15℃ 〜 -20℃未満: 氷の枠線がさらに分厚くなる。
  • -20℃以下: 枠線が最大(10px)の分厚さになり、完全に凍結!

twitchスピードの計算式(xが気温)

$f(x) = \frac{x}{5} + 5$

カラーの演出
0℃(水色 #0abfff)から -20℃(薄紫 #9999ff)にかけて、気温が0.1℃下がるごとに色が滑らかにグラデーション変化するようにプログラムで計算しています。

命に関わる酷暑(40℃以上):限界突破

40℃以上の超猛暑になると、背景も虹色になり、虹色の文字にブレ演出が4重に重複して掛け合わされます。文字も背景も激しく明滅して画面の外へ飛び出さんばかりのパニック演出になります。
テストの段階でも激しすぎて思わず吹き出しました。( ゚∀゚)・∵. ブハッ!!

ちなみに実はこの演出はリリース当初は用意されてませんでした。真夏を迎えてから、「40℃ってどうなるんだろう」「40℃はこうなるんじゃないか」みたいな演出予想をしているノートを見かけて、「まずい!!用意してない!!!」となり、急遽用意しました。
(開発者は北海道出身なのでそんな40℃なんて行くとは思ってなかったんです……)

3. システムの裏側:シンプルさと軽快さの工夫

Botのプログラム(Python)にも、長く安定して動かすためのいくつかのこだわりがあります。

外部ライブラリを使わない「ゼロ依存」

一般的にPythonでWebからデータを取ったりAPIを叩くときは外部パッケージ(requests 等)を使うことが多いですが、このBotはPython標準の機能だけで作られています。
余計なライブラリが入っていないため、動作が非常に軽快で、アップデート等で壊れにくい安心設計になっています。

気象庁データの安全な読み取り

気象庁が10分ごとに更新している全国アメダスの最新観測データ(JSON)にアクセスし、主要12都市(札幌、釧路、仙台、新潟、東京、名古屋、金沢、大阪、広島、高松、福岡、那覇)の数値をピンポイントで取得しています。
もし特定の観測地点で機器メンテナンス等の欠損があっても、プログラムがエラーで止まらず「---」と安全に表示をスキップする仕組みを備えています。

今までも何度か「---」が表示されて、リアクションで「ないなった」「無を取得」といただいていましたが、これはまさに正常に動いている証拠です。
ちなみに言うと、本当にnullを取得しているので「無を取得」は極めて正確な表現と言えます。

4. クラウドで動くサーバレスな全体構成

このBotは、Google Cloudのサーバレス技術(Cloud Run Jobs + Cloud Scheduler)を使って自動運用されています。

アーキテクチャ・フロー図

動くときだけ起きて、終わったらすぐ眠る

普通のサーバは24時間365日ずっと起動し続けるため、電気代や月額サーバ代がかかります。
しかし、このBotが実際に動いている時間はせいぜい1回の投稿につきわずか2〜3秒程度です。流石にそれだけのためにサーバを動かし続けるのは……(´・ω・`)

そこで、Google Cloudのコンテナバッチ機能(Cloud Run Jobs)を活用しています。

  • 投稿時刻になるとGoogleのクラウド上でコンテナがスッ( ˙-˙ )と立ち上がる
  • 気象庁データ取得と投稿を終わらせる (っ'-')╮=͟͟͞͞ ブォン
  • 終わったらそのまま消滅してリソースを解放する(´・ω...:.;::..サラサラ..

この仕組みのおかげで、サーバの維持管理の手間がなく、Google Cloudの無料枠の中に余裕で収まるため、完全0円でエコに運用されています。

動く必要のあるときだけ動く、ナマケモノみたいだね!

おわりに

エゴサをしていると、「このBotのお陰で真夏が楽しみ」とか、「真冬になったらどうなるかな」とかいった声をいただいており、厳しい異常気象を少しでも楽しい気分に出来たのかと思うととても嬉しい気持ちでいっぱいです。

驚くことにフォロワーも2000を超えており、いつも見ていただき本当にありがとうございます。
これからも皆さんを楽しませられるようにメンテナンスをしていきたいと思いますのでよろしくお願いします。

これからの冬本番、札幌や釧路などで氷点下のギミックが発動する瞬間をぜひお楽しみに!

ついでに

全然関係ない宣伝ですが、開発者である私は趣味でカフェミュージックも作ってるのでよかったら聴いてみてね!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?