🗂

Contenfulの新機能Tagsを使ってみた

2021/06/12に公開

Tags NEWを発見

Contentfulを使っているとTags NEWが出ているので、どんなものか調べてみました。
今までContent Modelにタグをつけるには、Textフィールドでtagを作っていましたが、これがいらなくなりそう。
https://www.contentful.com/developers/changelog/#tags-and-tag-based-permissions

The use of tags streamlines content filtering and search.

Tagsはコンテンツのフィルタリングや検索に使えるとのこと。これは期待できそう。

Tags 使ってみた

Contentfulのfreeプランを使っているのですが、Tags機能を使用できるので試してみました。

Tagsの作成


Tagsタブからタグを作成できます。

Tagsの作成画面はこんな感じです。今回newsのContent Modelでweatherというタグを付けてみます。
Tag visibilityという項目がありますが、これをPublicにすることで作成したタグをAPIのクエリに入れて検索することができます。Contenful内部でコンテンツの管理のためだけにTagsを使用するのであれば、ここはPrivateでも良いでしょう。


作成したタグはTagsタブで参照できます。セレクトボックスで作成されたタグを簡単に選べて良いですね!

Tagsによるフィルタリング


コンテンツに付けたTagsが歯車マークでTagsを押すとTagsをテーブルで確認できます。

また、Filterを押すとtagsがあり、これを押すとTagsの検索ができます。便利ですね。

Tagsによる検索

https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/content-tags/querying-content-based-on-one-or-more-tags/retrieve-entries-or-assets-that-match-at-least-one-of-the-specified-tag-values/console
仕様書を読むとリクエストのクエリにmetadata.tags.sys.id[all]=weatherのようにして作成したタグを入力すればタグごとにデータをリクエストできるそうです。タグはmetadata.tags.sys.id[all]=weather,sportsのように複数入れてリクエストも可能です。
なお、[all]と書きましたが、他には、[in][exsits]があります。使い分けとしては、

[all]:完全一致
[in]: 部分一致
[exists]:tagsが存在するか(valueはBoolean値)

です。
今回、Reactからcontenfulのライブラリを使用しContentful Delivery APIをReactからリクエストしましたが、

const response = await client.getEntries({
  content_type: "news",
  order: "-sys.createdAt",
  'metadata.tags.sys.id[all]': 'weather',
  limit: 10
});

のように指定することで、期待通りTagsがweatherのデータのみリクエストできました。

Tagsの削除

SettingsのTagsからTags管理ページに入ってTagsの削除できます。なお、タグが1つでもコンテンツに紐付いている場合はタグを削除できません。「え、タグを消すのは面倒やん...」と思うことなかれ、コンテンツ管理ページではタグを一括で変更・削除できます。

Tagsの上限

タグ管理ページを見ると、上限は500まであります。十分すぎますね。
ちなみに、1つのコンテンツには100までのタグを付与できるみたいです[1]。そんなにいらんやろ。

まとめ

新機能のTag機能を使用すれば、コンテンツに属性を与えることで管理や検索で大活躍しそうです。何より今までコンテンツに追加していたtagフィールドが不要になるので、フィールドの節約は無料版のContenfulを使っている人はお得ですね。
これからもケチケチContentfulを利用させていただこうと思います。

脚注
  1. Q&Aに記載していました。 ↩︎

Discussion