Contenfulの新機能Tagsを使ってみた
Tags NEWを発見
Contentfulを使っているとTags NEWが出ているので、どんなものか調べてみました。
今までContent Modelにタグをつけるには、Textフィールドでtagを作っていましたが、これがいらなくなりそう。
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による検索
仕様書を読むとリクエストのクエリに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を利用させていただこうと思います。
Discussion