0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

🐵💻 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例

[
  {
    "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を叩く

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連携などで社内ツール化も現実的

🔧 参考リンク


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

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


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

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?