Day 1.5: プレ開発朝の通知ツール

チュートリアル: 朝の通知ツールを作ろう

このチュートリアルでは、毎朝8時に今日の予定と天気を通知してくれるツールを作ります。 Google CalendarとSlack/メールとの連携を学べます。


完成イメージ

毎朝8時にSlack(またはメール)で以下のような通知が届きます:

おはようございます!今日の予定と天気です。

【今日の予定】
- 10:00-11:00 チームミーティング
- 14:00-15:00 クライアント打ち合わせ
- 16:00-17:00 1on1

【天気】
🏠 自宅周辺(渋谷区): 晴れ 最高18℃ / 最低8℃
🏢 会社周辺(港区): 晴れ 最高17℃ / 最低7℃
☂️ 折りたたみ傘はなくても大丈夫そうです

良い一日を!

所要時間

1〜2時間


事前準備

  1. 環境構築が完了していること
  2. Googleアカウント(Calendar連携用)
  3. Slackワークスペースへのアクセス(Slack通知を使う場合)

Step 1: プロジェクトを作成

VS Codeでフォルダを開く

  1. VS Codeを起動
  2. 「ファイル」→「フォルダーを開く」
  3. ~/projects/morning-notify というフォルダを新規作成して開く

Claude Codeを開く

左サイドバーの Claudeアイコン をクリックしてチャットパネルを開きます。


Step 2: 天気取得機能を作る

まずはシンプルに、天気情報を取得する部分から始めます。

Claudeに伝える

天気予報を取得するPythonスクリプトを作って。

機能:
- OpenWeatherMap APIを使う(無料枠あり)
- 2つの場所の天気を取得
  - 場所1: 東京都渋谷区(自宅)
  - 場所2: 東京都港区(会社)
- 今日の天気、最高気温、最低気温、降水確率を取得
- 傘が必要かどうかを判定

出力例:
🏠 自宅(渋谷区): 晴れ 最高18℃/最低8℃ 降水確率10%
🏢 会社(港区): 晴れ 最高17℃/最低7℃ 降水確率15%
☂️ 傘は不要です

ファイル名は weather.py で。
APIキーは環境変数から読み込むようにして。

OpenWeatherMap APIキーを取得

  1. OpenWeatherMap にアクセス
  2. 無料アカウントを作成
  3. API Keysページでキーを取得

環境変数を設定

.env ファイルを作って、そこにAPIキーを保存するようにして。
.gitignoreも作って、.envが公開されないようにして。

Step 3: Google Calendar連携

次に、今日の予定を取得する機能を追加します。

Claudeに伝える

Google Calendarから今日の予定を取得するスクリプトを作って。

機能:
- Google Calendar APIを使用
- 今日の予定を時系列で取得
- 予定のタイトル、開始時刻、終了時刻を表示

ファイル名は calendar.py で。
認証情報はcredentials.jsonから読み込み、トークンはtoken.jsonに保存。

Google Calendar APIの設定

  1. Google Cloud Console にアクセス
  2. 新しいプロジェクトを作成
  3. 「APIとサービス」→「ライブラリ」で「Google Calendar API」を有効化
  4. 「認証情報」→「認証情報を作成」→「OAuth クライアント ID」
  5. 「デスクトップアプリ」を選択
  6. credentials.json をダウンロードしてプロジェクトフォルダに配置

テスト実行

calendar.py を実行して、今日の予定を取得して

初回実行時はブラウザで認証画面が開きます。


Step 4: 通知機能を作る(Slack)

取得した情報をSlackに通知する機能を追加します。

Claudeに伝える

Slackに通知を送るスクリプトを作って。

機能:
- Slack Incoming Webhookを使用
- メッセージをSlackチャンネルに投稿

ファイル名は notify_slack.py で。
Webhook URLは環境変数から読み込むようにして。

Slack Webhookの設定

  1. Slack API にアクセス
  2. 「Create New App」→「From scratch」
  3. アプリ名を入力、ワークスペースを選択
  4. 「Incoming Webhooks」を有効化
  5. 「Add New Webhook to Workspace」で投稿先チャンネルを選択
  6. Webhook URLをコピーして .env に追加

Step 5: すべてを統合する

天気、カレンダー、Slack通知を1つのスクリプトにまとめます。

Claudeに伝える

weather.py, calendar.py, notify_slack.py を統合して、
朝の通知を送るスクリプトを作って。

ファイル名は morning_notify.py で。

処理の流れ:
1. 天気情報を取得
2. 今日の予定を取得
3. メッセージを組み立て
4. Slackに送信

メッセージのフォーマット:
---
おはようございます!今日の予定と天気です。

【今日の予定】
- [時間] [予定名]
...

【天気】
🏠 自宅(渋谷区): [天気] 最高○℃/最低○℃
🏢 会社(港区): [天気] 最高○℃/最低○℃
☂️ [傘のアドバイス]

良い一日を!
---

Step 6: 定期実行の設定

毎朝8時に自動実行されるようにします。

Mac(launchd)の場合

毎朝8時にmorning_notify.pyを実行するlaunchdの設定ファイルを作って

GitHub Actionsの場合(クラウド実行)

GitHub Actionsで毎朝8時(日本時間)にmorning_notify.pyを実行するワークフローを作って。
Secretsに必要な環境変数を設定する手順も教えて。

メール通知にしたい場合

Slackの代わりにメールで通知することもできます。

Claudeに伝える

Slack通知の代わりに、Gmailでメール送信するように変更して。
送信先は自分のメールアドレス。
Gmail APIを使用して。

トラブルシューティング

Google Calendar認証エラー

token.jsonを削除して、calendar.pyを再実行して

ブラウザで再認証が必要になります。

天気が取得できない

APIキーが正しく設定されているか確認:

.envの内容を確認して、OPENWEATHER_API_KEYが設定されているか見て

Slackに投稿できない

Webhook URLが正しいか確認して。
テストメッセージを送ってみて。

発展課題(余裕があれば)

天気に応じた服装アドバイス

気温に応じて服装のアドバイスを追加して。
例: 10℃以下なら「コートを忘れずに」

電車遅延情報

通勤で使う路線の遅延情報も追加して

複数カレンダーの統合

仕事用と個人用の2つのカレンダーを統合して表示して

チェックリスト

  • VS CodeでClaude Codeのチャットパネルを開けた
  • 天気情報を取得できた
  • Google Calendarから予定を取得できた
  • Slack(またはメール)に通知を送れた
  • 統合スクリプトを作成した
  • (オプション)定期実行を設定した

次のステップ

このチュートリアルで学んだAPI連携の知識を活かして、自分だけのツールを作ってみましょう!