7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSで作った洗濯botを2ヶ月使い続けた話

7
Last updated at Posted at 2026-08-03

本記事は、BIPROGY / ユニアデックス社内AWSコミュニティ「BIPROGY AWS SPARK」の定期投稿企画第6回目の記事です。他の定期投稿企画の記事は、インデックスページをご覧ください。

この記事について

こんな方に読んでいただけたら嬉しいです。

  • AWSを勉強し始めたけど、何か作ってみたいと思っている
  • 教科書を読むだけじゃなくて手を動かしたい
  • でも何を作ればいいかわからない

そんな気持ちで作ったのが、毎朝「今日は外干しOK?」を教えてくれる洗濯通知botです。
費用はほぼ0円でAWSの無料枠だけで動いています。


はじめに

お天気のいい日に洗濯を干すのが好きなので、毎朝「今日は外干しできる?」を教えてくれるbot作成しました。

結論から言うと、めちゃくちゃ頼りにしているわけではないです笑

結局ヤフーの天気アプリも見ます。でも朝起きてメールを開くと「今日は外干しOK」「14時までに取り込んでね」がすぐわかるので、それはそれで助かっています。


完成イメージ

こんなメールが毎朝届きます。

【今日の洗濯スコア: 82点】
判定: 外干し OK
今日はよく乾きそうです!ぜひ外干しを🌿

🕘 昼間(9時〜17時)の予報

☔ 今日は雨の心配なし☀️
📦 今日は一日外干しOKです!
💧 湿度は低く乾きやすいです✨
💨 風が強く乾きやすいです💨

降水確率: 5%
湿度:     45%
気温:     22.3℃
風速:     6.2 m/s
UV指数:   5.1

雨の日はこんな感じです。

【今日の洗濯スコア: 10点】
判定: 部屋干し推奨
今日は無理せず部屋干しがおすすめです🏠

☔ 14時〜17時ごろ雨の可能性☔
📦 14時ごろから雨の予報です。13時までに取り込みましょう📦

使ったAWSサービスと費用

使ったサービスは5つ。すべて無料枠内で収まっています。

サービス 役割 費用
EventBridge Scheduler 毎朝6時に自動起動 無料枠内
Lambda スコア計算・判定(Python) 無料枠内
SNS メール通知 無料枠内
Parameter Store 設定値の管理 無料
DynamoDB 日次スコアの記録 無料枠内

天気データは Open-Meteo という無料APIを使っています。APIキー不要で、緯度経度を渡すだけで全国どこでも使えます。


構成図

天気予報通知システムのAWS構成図。EventBridge、Lambda、Open-Meteo API、Parameter Store、DynamoDB、SNS、CloudWatchを利用してメール通知を行う。


工夫したところ

「1日の最大値」ではなく「昼間の平均値」で判定する

最初は1日の最大降水確率で判定していたのですが、朝だけ雨でも「降水確率100%」になってしまって…。午後は晴れているのに部屋干し推奨になるのは困るので、9時〜17時の平均値で判定するように変えました。

daytime = slice(9, 17)
rain = sum(hourly['precipitation_probability'][daytime]) / 8

雨が降り始める時間を検出して「取り込み時刻」を通知する

降水確率が50%を超える時間帯を検出して「○時までに取り込みましょう」と通知します。これが地味に一番便利なところです。

rain_hours = [h for h in range(6, 22)
              if hourly['precipitation_probability'][h] >= 50]

if rain_hours:
    first_rain = rain_hours[0]
    pickup_advice = f"{first_rain}時ごろから雨の予報です。{first_rain - 1}時までに取り込みましょう📦"

設定値はParameter Storeで管理する

SNSのARNやスコアの閾値はコードに直書きせず、Parameter Storeで管理しています。閾値を変えたくなったときにコードを触らなくていいですし、GitHubに上げても秘密情報が漏れません。

/laundry-bot/sns-topic-arn        → SNSトピックのARN
/laundry-bot/score-threshold-ok   → 70
/laundry-bot/score-threshold-warn → 40

AWSの試験勉強にもなりました

これを作ることで、以下の頻出テーマを実際に体験できました。

  • サーバーレスアーキテクチャ(EventBridge + Lambda + SNS)
  • 最小権限の原則(IAMロールの設定)
  • 設定の外部化(Parameter Store)
  • Pub/Subパターン(SNSのファンアウト)
  • スケジュール実行(EventBridgeのCron式)

Lambdaを実際に動かしたことで「イベントが来たら関数が起動して処理が走る」という流れが体感としてわかりました。図で見ていたサーバーレスの構成が、ようやく自分のものになった気がします。


月次レポートも届きます

毎月末日には、その月の洗濯記録をまとめたメールも届きます。データが積み上がっていくのが地味に楽しいです。

【2026年05月の洗濯レポート】

記録日数:     31日
平均スコア:   68.0点

外干し OK:       18日
注意して外干し:   7日
部屋干し推奨:    6日

今月のベスト洗濯日: 05月14日(95点)

2ヶ月使ってみて思うこと

スコアの計算ロジックはまだ納得できていない部分があります。晴れているのに点数が低かったり、雨なのにそこそこ高かったり。いつかBedrockを使って天気データをAIに渡してコメントを生成させてみたいと思っているのですが、費用が少し気になってまだ踏み出せていません笑

でも毎朝ちゃんとメールが届いているので、それで十分かなと思っています。


おわりに

何か小さいものでも作ってみるとAWSの勉強が一気に具体的になります。
動いたときの達成感はやっぱり別物でした。

完璧じゃなくていいので、ぜひ何か作ってみてください☺️


BIPROGYグループへ技術の取り組み

採用募集中!

7
4
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
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?