AIで毎日のTODOリストを自動生成する方法
1. はじめに:タスク管理、ちゃんとできてますか?
「今日、何から手をつけよう...?」
毎朝、Slackやメール、カレンダーを見ながらそう呟いていませんか?
現代のエンジニアは情報に溢れ、タスクが無限に舞い込んできます。
「どの作業が優先?」、「昨日の続きは何だっけ?」、「あのバグ直さなきゃ...」
このカオスを少しでも整理するために、AIを使って自動でTODOリストを生成する仕組みを作ってみましょう!
2. 技術の概要:自然言語処理 × タスク管理の融合
今回のアプローチでは以下の技術要素を使います:
技術要素 | 説明 |
---|---|
OpenAI API(GPT) | テキストからタスクを抽出・要約 |
Python | 処理の実装言語 |
pandas | タスクデータの整形・フィルタリング |
Google Calendar API(任意) | スケジュール連携(発展編) |
ゴール:
Slackのログ、メール本文、前日の日報などの自然言語をもとに、
「今日やるべきこと」をAIが自動でリストアップします。
3. 実装:AIにTODOリストを作ってもらおう!
ステップ1:入力となる文章を用意
まずは以下のようなテキストが入力になります(Slackメッセージ、日報、会議メモなど):
・昨日はバグ#123を調査して再現手順まで把握できた。今日中に修正対応したい。
・A社との打ち合わせは明日の15:00。議事録を今日中にまとめておく。
・今週中にKPIレポートの初稿を出す必要あり。
ステップ2:OpenAI APIを使ってタスク抽出
import openai
openai.api_key = "YOUR_API_KEY"
def extract_todo(text):
prompt = f"""
以下の文章から「今日やるべきTODOリスト」を抽出してください:
{text}
出力フォーマット(JSON):
[
{{ "task": タスク内容, "priority": 優先度(1〜5), "category": 分類 }}
]
"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.5
)
return response.choices[0].message.content
ステップ3:出力されたJSONを整形して表示
import json
import pandas as pd
raw_output = extract_todo(input_text)
todo_list = json.loads(raw_output)
df = pd.DataFrame(todo_list)
print(df.sort_values(by="priority"))
出力イメージ:
task | priority | category |
---|---|---|
バグ#123の修正対応 | 1 | 開発 |
議事録をまとめる | 2 | ドキュメント |
KPIレポートの初稿を作成 | 3 | レポート |
4. 実務で使えるTips & よくある落とし穴
✅ 実務Tips:
- 前日のSlack/日報をcronで自動収集 → 朝一でAIに流し込む
- 「今日」に限定したプロンプトを設計することで余計なタスクを省ける
- カテゴリ/優先度でフィルタリング表示することで視認性UP
⚠️ よくあるエラー:
問題 | 原因 | 対策 |
---|---|---|
JSONの構文エラー | 出力に余計なコメントが含まれる |
re.sub でJSON部分だけ抜き出す |
抽出結果が曖昧 | プロンプトが曖昧すぎる | 「今日やること」に明確に絞るよう指示 |
タスクの粒度が粗い | 長文そのまま処理している | 文章を文単位に分割して処理 |
5. 応用編:Google Calendarとの連携でさらに実用的に!
生成したTODOリストをそのままGoogleカレンダーに登録すれば、
「可視化 + 時間ブロッキング」も実現可能。
例:google-api-python-client
を使ったカレンダー登録(抜粋)
from googleapiclient.discovery import build
from google.oauth2 import service_account
# 認証とサービス生成
creds = service_account.Credentials.from_service_account_file("credentials.json", scopes=['https://www.googleapis.com/auth/calendar'])
service = build("calendar", "v3", credentials=creds)
def insert_task(task):
event = {
'summary': task["task"],
'start': {'dateTime': '2025-06-06T10:00:00+09:00'},
'end': {'dateTime': '2025-06-06T10:30:00+09:00'}
}
service.events().insert(calendarId='primary', body=event).execute()
6. まとめ:自分だけのAI秘書を手に入れよう
✅ メリット:
- 朝のタスク整理に迷わない
- 複数ソースから要点抽出
- 習慣化すれば、毎日が「着実な一歩」に
❗デメリット:
- プロンプト依存性が高い(工夫でカバー可能)
- セキュリティ要件に応じてOpenAI利用が制限される場合も
🔭 今後の展望:
- 音声入力やチャット履歴との統合
- LLMとスケジューラの完全自動連携
- チームタスクとの連動による「共同AIアシスタント」
📌最後に
今回紹介したTODO自動生成AIは、業務効率化の第一歩になります。
まずはSlackメッセージや日報を使って、自分用に試してみてください。
「今日のやるべきこと」、AIにまとめてもらうのもアリじゃない?😉