| name | tag-maintenance |
| description | タグの親子オントロジー(source/_data/tag_ontology.yml)の整合性チェック・増分追記と、タグの名寄せ・統合の手順。タグ整理、名寄せ、タグ統合、オントロジー更新を頼まれたときに使う。 |
タグメンテナンス
前提となる運用方針 (#2292)
- 執筆者は具体タグだけ付ける。 daisyUI の記事に CSS / UI/UX を、S3 の記事に AWS を、
React の記事に JavaScript を付けるかの判断は執筆者に求めない
(筆者がそのタグでの直接検索に引っかかりたい場合を除く)
- 抽象への接続は
source/_data/tag_ontology.yml の broader が肩代わりし、
scripts/related_posts.js が展開して関連記事を計算する
- バージョンタグは語幹と同義。
Go1.27 を書けば Go も書いたのと同じ扱いに
なる(scripts/version_tags.js がデータ層で語幹タグを注入。タグページ・件数・
関連記事すべてに効く)。語幹を併記してもしなくてもよい
- 辺を書く基準: 「A の記事に B タグを打つのは冗長で打ちたくない」と筆者が感じる
自明な包含だけ書く(TypeScript 記事に JavaScript を打ちたくない、の肩代わり)。
Swift と iOS のような文脈次第の関係は書かず、筆者が直接タグで表明する。
迷ったら書かない
- 共起・名前の形(Go1.26/Go1.27 の兄弟)から機械的に導出できる関係は
scripts/related_tags.js が担うので書き写さない
データ形式
DynamoDB:
broader: [AWS, NoSQL]
Go:
broader: []
- 値は実在するタグでなくてもよい(
イベント / OS など照合にだけ使う概念で可)。
ただし broader に書いた名前は必ず同ファイルにノードとして登録する
- 関係タイプ(is-a / part-of)は区別しない。「より広い」だけを表す
バージョン同義(broader とは別の意味論)
broader は弱い接続(関連記事で減衰あり)、バージョン同義は等価(両方書いたのと同じ)。
3層で決まる:
-
名前規則(自動): 「既存タグ名 + 末尾数字(ドット付き or 2桁以上)」は語幹と同義
(Go1.27 → Go、インターン2026 → インターン)。1桁の数字は Web3 のような
「数字込みで別概念の名前」と区別できないため対象外(Python3 は語幹を直接書く)
-
versionOf(手動追加): 表記が語幹と一致しないものを明示する
Vue3:
versionOf: Vue.js
-
notVersion(手動除外): 名前規則に誤爆する名前が現れたら notVersion: true を付ける
check.mjs が導出中の全ペアを [INFO] バージョン同義: として列挙するので、
新しいタグを増やしたら誤爆が無いか目視する。
整合性チェック
node .claude/skills/tag-maintenance/check.mjs
[ERROR](exit 1): broader 先の未登録、循環。push 前に必ず解消する
[INFO]: 未使用ノード、10記事以上で未登録のタグ(増分追記の候補)、
統合候補(記事集合がほぼ重複するタグのペア。オントロジーに登録済みの親子は除外済み)
補助情報として /doctor/ ページ(ローカルビルドで生成)にもタグ・カテゴリの
機械判定一覧がある。
増分追記の手順
チェックの「未登録」や新しいタグを見つけたら:
- そのタグの記事を数本読み、より広い既存概念があるか判断する
- あれば
broader: [親]、独立した概念なら broader: [] で追記する
- 迷ったら書かない([] にする)。誤った親は関連記事を汚すが、無い親は何も壊さない
node .claude/skills/tag-maintenance/check.mjs でエラーが無いことを確認する
名寄せ・統合の手順
チェックの「統合候補」やタグの表記ゆれ(例: 入門 / 初心者向け)を統合するとき:
- 本当に同義か確認する。 片方がもう片方の狭い概念なら、統合ではなく
tag_ontology.yml に親子として登録する(Go1.27 ⊆ Go は統合しない)
- 同義なら残す側の表記を決め、消す側のタグを持つ全記事の frontmatter を書き換える
- 消したタグのURLが外部から参照されている可能性があるため、
_config.yml の
alias: に旧タグページ → 新タグページの転送を追記する(IaC の前例 #2291)
tag_ontology.yml に旧タグのノードが残っていれば消し、broader で参照していた
箇所を新タグに付け替える
- 書き換えた記事は
node_modules/.bin/textlint --fix <path> を通す