本記事は、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キー不要で、緯度経度を渡すだけで全国どこでも使えます。
構成図
工夫したところ
「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グループへ技術の取り組み
採用募集中!
