チュートリアル: 朝の通知ツールを作ろう
このチュートリアルでは、毎朝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時間
事前準備
- 環境構築が完了していること
- Googleアカウント(Calendar連携用)
- Slackワークスペースへのアクセス(Slack通知を使う場合)
Step 1: プロジェクトを作成
VS Codeでフォルダを開く
- VS Codeを起動
- 「ファイル」→「フォルダーを開く」
~/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キーを取得
- OpenWeatherMap にアクセス
- 無料アカウントを作成
- 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の設定
- Google Cloud Console にアクセス
- 新しいプロジェクトを作成
- 「APIとサービス」→「ライブラリ」で「Google Calendar API」を有効化
- 「認証情報」→「認証情報を作成」→「OAuth クライアント ID」
- 「デスクトップアプリ」を選択
credentials.jsonをダウンロードしてプロジェクトフォルダに配置
テスト実行
calendar.py を実行して、今日の予定を取得して初回実行時はブラウザで認証画面が開きます。
Step 4: 通知機能を作る(Slack)
取得した情報をSlackに通知する機能を追加します。
Claudeに伝える
Slackに通知を送るスクリプトを作って。
機能:
- Slack Incoming Webhookを使用
- メッセージをSlackチャンネルに投稿
ファイル名は notify_slack.py で。
Webhook URLは環境変数から読み込むようにして。Slack Webhookの設定
- Slack API にアクセス
- 「Create New App」→「From scratch」
- アプリ名を入力、ワークスペースを選択
- 「Incoming Webhooks」を有効化
- 「Add New Webhook to Workspace」で投稿先チャンネルを選択
- 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(またはメール)に通知を送れた
- 統合スクリプトを作成した
- (オプション)定期実行を設定した
次のステップ
- Excelデータ活用ツール - 業務データの分析を試す
- サンプルテンプレート集 - 他のアイデアを探す
このチュートリアルで学んだAPI連携の知識を活かして、自分だけのツールを作ってみましょう!