
Netlify CMSのカスタム中、ログインしようとするとエラーメッセージ。
Error loading the CMS configuration Config Errors: 'collections[0].fields' fields names must be unique Check your config.yml file.
原因
ブログに「タグ + カテゴリ」を追加しようとした際に起こったエラーのようで
/static/admin/config.yml
に、
collections:
- name: "posts"
label: "記事"
folder: "content/posts"
create: true
slug: "{{slug}}"
fields:
- { label: "タイトル", name: "title", widget: "string" }
- { label: "日付", name: "date", widget: "datetime" }
- { label: "下書き", name: "draft", widget: "boolean", default: false }
- { label: "著者", name: "author", widget: "string", default: "lain" }
- { label: "アイキャッチ画像", name: "image", widget: "image", required: false }
- { label: "概要(抜粋)", name: "summary", widget: "string", required: false, default: "(抜粋がありません)" }
- { label: "カテゴリ", name: "categories", widget: "list", required: false, default: ["その他"] }
- { label: "タグ", name: "tags", widget: "list", required: false }
- { label: "本文", name: "body", widget: "markdown" }
- label: "カテゴリ"
name: "categories"
widget: "list"
required: false
- label: "タグ"
name: "tags"
widget: "list"
required: false
を追加したのですが、
「カテゴリ」と「タグ」を2つの追加してしまったのが原因のようです。
✨ どちらを残すべき?
今後管理のしやすさやコメントの追加を考えるなら、インデント記法(長い書き方)の方が、構造の可視性と拡張性に優れています。
✅ 1. コメントを追加しやすい
- label: “タグ” name: “tags” widget: “list” required: false
ポイント: 短縮記法ではコメントが付けづらい・読みづらくなります。
✅ 2. 後でフィールドを増やしたいとき柔軟
- label: “画像” name: “image” widget: “image” required: false media_folder: “static/uploads” public_folder: “/uploads”
ポイント: 設定項目が増えてもインデント記法なら綺麗に保てます。
✅ 3. 誤りに気付きやすい
構造が1行に詰まっていないので、nameの重複や設定ミスを目視で発見しやすいです。
✅ 逆に短縮記法が向いてるのは?
・単純で繰り返しの多いフィールドだけ(例:タイトルや日付) ・読みやすさより行数の短さを優先したいとき
💡 実運用のおすすめスタイル
・title, date, draft → 短縮記法でもOK(シンプルなので) ・categories, tags, image, body, カスタム項目 → インデント記法で拡張性重視
🎯 まとめ
インデント記法
特徴: 読みやすい・コメント追加OK 場面: 中〜大規模CMS設定、保守が必要な場合
短縮記法
特徴: 行数少なめ・軽い設定に便利 場面: 小規模プロジェクトや一時的な用途
以上を踏まえ、以下に変更。
collections:
- name: "posts"
label: "記事"
folder: "content/posts"
create: true
slug: "{{slug}}"
fields:
- label: "タイトル"
name: "title"
widget: "string"
- label: "日付"
name: "date"
widget: "datetime"
- label: "下書き"
name: "draft"
widget: "boolean"
default: false
- label: "著者"
name: "author"
widget: "string"
default: "lain"
- label: "アイキャッチ画像"
name: "image"
widget: "image"
required: false
- label: "概要(抜粋)"
name: "summary"
widget: "string"
required: false
default: "(抜粋がありません)"
- label: "カテゴリ"
name: "categories"
widget: "list"
required: false
default: ["その他"]
- label: "タグ"
name: "tags"
widget: "list"
required: false
- label: "本文"
name: "body"
widget: "markdown"
git push して、netlify でデプロイし無事解決しました。
💬 コメント