猿でもわかるAIプログラミングシリーズ 🐵💻 AIで毎日のTODOリストを自動生成する方法



## AIで毎日のTODOリストを自動生成する方法

### 1. はじめに：タスク管理、ちゃんとできてますか？

「今日、何から手をつけよう...？」
毎朝、Slackやメール、カレンダーを見ながらそう呟いていませんか？

現代のエンジニアは情報に溢れ、タスクが無限に舞い込んできます。
「どの作業が優先？」、「昨日の続きは何だっけ？」、「あのバグ直さなきゃ...」

このカオスを少しでも整理するために、**AIを使って自動でTODOリストを生成する仕組み**を作ってみましょう！

---

### 2. 技術の概要：自然言語処理 × タスク管理の融合

今回のアプローチでは以下の技術要素を使います：

| 技術要素                        | 説明                |
| --------------------------- | ----------------- |
| **OpenAI API（GPT）**         | テキストからタスクを抽出・要約   |
| **Python**                  | 処理の実装言語           |
| **pandas**                  | タスクデータの整形・フィルタリング |
| **Google Calendar API（任意）** | スケジュール連携（発展編）     |

#### ゴール：

Slackのログ、メール本文、前日の日報などの**自然言語**をもとに、
「今日やるべきこと」をAIが自動でリストアップします。

---

### 3. 実装：AIにTODOリストを作ってもらおう！

#### ステップ1：入力となる文章を用意

まずは以下のようなテキストが入力になります（Slackメッセージ、日報、会議メモなど）：

```text
・昨日はバグ#123を調査して再現手順まで把握できた。今日中に修正対応したい。
・A社との打ち合わせは明日の15:00。議事録を今日中にまとめておく。
・今週中にKPIレポートの初稿を出す必要あり。
```

#### ステップ2：OpenAI APIを使ってタスク抽出

```python
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を整形して表示

```python
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` を使ったカレンダー登録（抜粋）

```python
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にまとめてもらうのもアリじゃない？😉**