猿でもわかるAIプログラミングシリーズ 🐵💻  ChatGPTでスケジュールアシスタントを作る



# 🐵💻 ChatGPTでスケジュールアシスタントを作る：業務効率を一段上へ！

## 1. はじめに：毎日のスケジュール調整、面倒くさくないですか？

Slackやメール、カレンダーと格闘しながら、

* 「来週のこの打ち合わせ、誰が参加できるの？」
* 「15時から30分空いてる時間ある？」
* 「予定に関して上司に要約送っておいて」

こんなやりとりを日々繰り返している方、多いのではないでしょうか？

そこで今回は、\*\*ChatGPT API（GPT-4）\*\*を使って「**簡単なスケジュールアシスタント**」を自作する方法を紹介します。AIに自然言語で予定を聞いたり、まとめてもらったりできたら、チームのコミュニケーションがスムーズになりますよね。

この記事では、**カレンダーのJSONデータをもとにChatGPTに自然言語で質問できるシステム**を構築します。コード付きでわかりやすく解説するので、ぜひハンズオンしてみてください！

---

## 2. 技術概要：ChatGPTを予定確認に使うという発想

ChatGPTは自然言語生成に優れたAIですが、予定データ（構造化データ）を理解させるには工夫が必要です。

今回の要素技術は以下のとおりです：

* **OpenAI GPT-4 API**：自然言語応答の中核
* **JSON形式のカレンダーデータ**：予定の構造化情報
* **LangChainのFunction Calling（またはTool機能）**：GPTにタスク処理をさせる
* **Pythonでの実装**：バックエンドで対話処理を制御

---

## 3. 実装例：ChatGPTと会話しながら予定を確認

### 📅 前提：カレンダーのJSON例

```json
[
  {
    "title": "開発チーム定例",
    "start": "2025-06-06T10:00:00",
    "end": "2025-06-06T11:00:00",
    "attendees": ["佐藤", "田中", "山本"]
  },
  {
    "title": "1on1ミーティング（上司）",
    "start": "2025-06-06T15:00:00",
    "end": "2025-06-06T15:30:00",
    "attendees": ["自分", "部長"]
  }
]
```

### 🧠 ステップ1：ChatGPT APIを叩く

```python
import openai
import json

openai.api_key = "sk-xxxx"

calendar_data = [...]  # 上記の予定データ

system_prompt = """
あなたはスケジュールアシスタントです。
ユーザーの自然言語の質問に対して、JSON形式の予定データをもとに回答してください。
"""

user_question = "6月6日に15時から空いてる時間ある？"

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": f"予定データ: {json.dumps(calendar_data, ensure_ascii=False)}"},
        {"role": "user", "content": user_question}
    ],
    temperature=0.3
)

print(response['choices'][0]['message']['content'])
```

### 🧾 実行結果（例）

```
6月6日は15:00〜15:30に1on1ミーティングがあるため、その時間は埋まっています。
それ以外の空き時間は、11:00〜15:00までの間です。
```

かなり自然な応答が返ってきました！

---

## 4. 実務でのTips＆落とし穴

### ✅ 実務で役立つポイント

* `temperature=0.3`などで**出力の安定性**を確保
* データを渡す際は、**できるだけ簡潔なJSON形式**に整える
* `function_call`を活用すれば、GPTが処理を指示→Pythonが処理→結果を返す流れも可能

### ⚠️ よくある失敗パターン

| ケース         | 原因                | 対処法                         |
| ----------- | ----------------- | --------------------------- |
| 応答が曖昧       | JSONが複雑すぎる        | 時系列でソート or フィルターして渡す        |
| 未来の日付を認識しない | `today`などを明示していない | `2025-06-05時点での予定です`と指示を明確に |
| 会話履歴で文脈が崩れる | 長いログで誤解           | 必要に応じて履歴をリセットする処理を追加        |

---

## 5. 応用編：Google Calendarと連携する

ここまでの例は静的なJSONでしたが、実務で使うならGoogle Calendarとの連携が便利です。

### 🔗 Google Calendar APIを使うと？

* OAuthで認証し、個人の予定を取得
* Pythonでカレンダー取得 → GPTに渡して自然言語で質問
* 例えば「来週空いてる時間教えて」→即回答！

Zenn/Qiitaの別記事でOAuth連携や実装詳細を深掘り予定です（リクエストあればぜひ）。

---

## 6. まとめ：ChatGPT × スケジュール管理の可能性

### ✅ メリット

* 非エンジニアでも自然言語で予定確認ができる
* 複数メンバーの予定を横断的に確認できる
* Slack Botなどに組み込めばさらに便利

### ❌ デメリット・課題

* 処理のリアルタイム性には限界あり（APIレスポンス＋カレンダーの最新性）
* 長期間の予定や曖昧な表現に弱い場合も

---

## 🚀 今後の展望

* LangChainなどのフレームワークと組み合わせて**本格的なAIスケジューラー**に発展可能
* GPTs（カスタムGPT）にスケジュール特化の機能を持たせる
* 音声入力やSlack連携などで**社内ツール化**も現実的

---

## 🔧 参考リンク

* [OpenAI Chat API docs](https://platform.openai.com/docs)
* [Google Calendar API](https://developers.google.com/calendar)
* [LangChain Documentation](https://docs.langchain.com)

---

この記事を読んで「やってみたい！」と思った方は、ぜひ自分の予定管理に組み込んでみてください。業務効率がグッと上がること間違いなしです！

次回は「AIに旅行計画を立ててもらうチャレンジ」の実装に挑戦予定です📆💬

---

ご感想や質問があればコメント欄やTwitterでぜひ教えてください！