開発完了
ブログカレンダーの分類機能
概要
ブログ一覧のカレンダー表示で、記事の内容に応じてカードを分類・色分けする機能。
背景・目的
- 全ての記事が同じオレンジ色で表示されていた
- TODO/計画系の記事と、単なるログを視覚的に区別したい
- 後で見返す必要がある記事を強調表示したい
設計の経緯
旧設計(highlightフィールド単体)
当初は highlight フィールド1つで管理していた。
highlight: "todo" | "personal" | "feature" | "done"
問題点:
- 「状態」と「種類」が混在していた
- TODOが完了したときの遷移が不明確
- 「やらないと決めた」という状態が表現できなかった
新設計(category + todo の2フィールド)
「種類」と「状態」を別軸で管理する設計に変更。
仕様
フィールド定義
category: null | "personal" | "dev"
todo: null | "active" | "done" | "canceled" | "memo"
categoryフィールド(種類)
記事が何についてのものかを表す。
| 値 | 用途 |
|---|---|
null(未設定) | 通常のログ・記事 |
"personal" | 個人的な感想、自分への戒め、読書メモなど |
"dev" | 開発に関するメモ、機能実装ログなど |
todoフィールド(状態)
記事のTODO状態を表す。
| 値 | 用途 |
|---|---|
null(未設定) | 未分類(まだ設定していない) |
"active" | 進行中のTODO |
"done" | 完了したTODO |
"canceled" | やらないと決めたTODO |
"memo" | 単なるメモ/ログ(TODOではない) |
組み合わせマトリクス
│ category │
│ null(log) │ personal │ dev │
──────────────┼───────────┼──────────┼─────────────┤
todo: null │ 未分類 │ 未分類 │ 未分類 │
todo: memo │ 普通ログ │ 個人メモ │ 開発ログ │
todo: active │ 雑TODO │ 個人TODO │ 開発TODO │
todo: done │ 雑完了 │ 個人完了 │ 開発完了 │
todo: canceled│ 雑取消 │ 個人取消 │ 開発取消 │
TODOのライフサイクル
記事作成
│
├── todo: null(未分類)
│ │
│ ├──→ todo: "memo"(単なるメモと判断)
│ │
│ └──→ todo: "active"(TODOと判断)
│
└── todo: "active"(TODOとして作成)
│
├──→ todo: "done"(完了した)
│
└──→ todo: "canceled"(やらないと決めた)
色分けルール
| todo | category | 背景色 | 表示 |
|---|---|---|---|
null | 任意 | 白/無色 | 未分類 |
memo | null | 薄いオレンジ | 通常ログ |
memo | personal | 薄いブルー | 個人メモ |
memo | dev | 薄いグリーン | 開発ログ |
active | 任意 | オレンジ | TODO(進行中) |
done | 任意 | グレー | 完了 |
canceled | 任意 | 薄いグレー | キャンセル |
使用例
開発系のTODO(進行中)
---
title: "機能A実装計画"
category: "dev"
todo: "active"
tags: ["development"]
publishedAt: "2026-01-05"
---
完了したTODO
---
title: "機能A実装計画"
category: "dev"
todo: "done"
tags: ["development"]
publishedAt: "2026-01-05"
updatedAt: "2026-01-10"
---
個人的なメモ(TODOではない)
---
title: "読書メモ: DIE WITH ZERO"
category: "personal"
todo: "memo"
tags: ["読書", "マインドセット"]
publishedAt: "2026-01-02"
---
通常のログ(明示的にメモと指定)
---
title: "作業ログ 2026-01-05"
todo: "memo"
tags: ["log"]
publishedAt: "2026-01-05"
---
未分類の記事
---
title: "新しい記事"
tags: ["misc"]
publishedAt: "2026-01-05"
---
(category, todoともに省略した場合は「未分類」扱い)
関連ファイル
| ファイル | 変更内容 |
|---|---|
content.config.ts | category, todoフィールドをスキーマに追加 |
BlogCalendar.vue | 分類ロジック・色分け・フィルタ機能 |
blog/index.vue | Article型にcategory, todo追加 |
旧フィールドからの移行
highlight フィールドは廃止し、以下のルールで移行する。
| 旧 highlight | 新フィールド |
|---|---|
"todo" | todo: "active" |
"done" | todo: "done" |
"working" | todo: "active" |
"personal" | category: "personal" |
"feature" | category: "dev" |