gatsby-theme-blog にタグ機能を追加する
February 25, 2025
gatsby-theme-blog を使用しているブログにタグ機能を追加しました。タグ機能の実装には Roo Code + GitHub Copilot Pro + Claude 3.5 Sonnet を活用し、効率的に開発を進めることができました。
実装した機能
- 記事へのタグ付け
- タグ一覧ページ(/tags)
- 個別のタグページ(/tags/{tag-name})
- 記事一覧ページでのタグ表示
実装の概要
1. GraphQL スキーマの拡張
gatsby-node.js で BlogPost タイプに tags フィールドを追加します:
exports.createSchemaCustomization = ({ actions }) => {const { createTypes } = actionscreateTypes(`type BlogPost implements Node {tags: [String]}`)}
2. タグページの生成
同じく gatsby-node.js で、タグ一覧ページと個別のタグページを生成します:
exports.createPages = async ({ graphql, actions }) => {const { createPage } = actionsconst result = await graphql(`{allBlogPost {group(field: tags) {fieldValuetotalCount}}}`)// タグ一覧ページの生成createPage({path: "/tags",component: path.resolve("./src/templates/tags.js"),context: {tags: result.data.allBlogPost.group}})// 個別のタグページを生成result.data.allBlogPost.group.forEach((tag) => {createPage({path: `/tags/${tag.fieldValue}`,component: path.resolve("./src/templates/tag.js"),context: {tag: tag.fieldValue}})})}