Drupal 8初心者講座

第7回 ボキャブラリとタクソノミーを使う
この記事の目次

タクソノミーとは?

一般的なブログシステムには、タグと呼ばれるキーワードを記事に付加する機能が用意されています。また、多くの CMS では、カテゴリと呼ばれるコンテンツの分類機能を提供していると思います。これらは異なる機能に見えるかもしれませんが、どちらも分類(を表す語句 = 分類用語)とコンテンツとの関連づけを行っているという点で、本質的に同種のものです。

両者の重要な違いは分類の体系です。タグは、特に制限のないフリーワードをコンテンツに指定していくという、非常に自由な観点からコンテンツを分類する仕組みですが、他方カテゴリは、特定の観点から事前に洗い出した分類にコンテンツをあてはめていくという使い方をするでしょう。どちらもコンテンツを分類するという目的は共通ですが、その基準となる観点が異なるので、違う名前の機能として提供されているわけです。

article7_0

ブログでよく見かけるタグ

タグもカテゴリも分類体系の一種であるならば、これらとは別の体系があっても良いはずです。たとえば、EC サイトで Tシャツの商品ページの分類を考える場合、サイズという観点に立てば S、M、L という分類を与えることができます。あるいは色の観点からは、白、グレー、青、…といった分類が考えられるでしょう。

それぞれの分類は、商品が持つ異なる属性を見ているので、基本的に重なることはありません。仮に分類用語を空間に並べていったとすれば、それらを結ぶ直線はそれぞれ固有の方向を持つグラフの軸のように描くことができます。こうした "直交する" 複数の観点から明確にコンテンツを分類するには、カテゴリやタグのような汎用的な分類では不十分で、「色」 「サイズ」「素材」といった個別の分類体系を独自に定義できる仕組みが必要になります。

article7_1

直交する複数の観点に基づく分類用語のイメージ

この「独自の分類体系を自由に定義する仕組み」がタクソノミーです。Drupal のタクソノミーは、前回紹介したコンテンツタイプよりもさらに早いバージョン 4.2 の頃から提供されていました。筆者が Drupal を触り始めたのはバージョン 4.6 からですが、当時まだ聞きなれないタクソノミーという学術用語の機能を持つ Drupal は、他の CMS と違う特異な存在に思えたのを覚えています。

article7_2

Drupal 4.2 (2005のタクソノミー登録画面

ボキャブラリとターム

上述のとおり、タクソノミーはコンテンツの分類体系を独自に定義する仕組みです。分類体系は、それを構成する分類用語によって定義されます。Drupal では、個々の分類用語を「ターム」という言葉で表し、タームの集合として定義される「ボキャブラリ」によって特定の分類体系を表します。先の T シャツの例であれば、"白"、"グレー"、"青" というタームで構成されるボキャブラリとして色の分類体系を定義し、 "S"、"M"、"L" というタームで構成されるボキャブラリによってサイズの分類体系を定義しているわけです。

article7_3

タームの集合のボキャブラリが分類体系を定義する

特定のボキャブラリを構成するタームは、共通の観点に基づくものですから、同じ種類の情報と見ることができます。逆に、ボキャブラリが違えば情報の種類も異なり、互いに交換することはできません。これは、Tシャツのサイズとして白やグレーを指定できないことを考えれば明らかです。つまり、ボキャブラリが、それを構成するタームの種類、すなわちデータの型(タイプ)を象徴していることがわかるでしょう。

これはちょうど、コンテンツタイプとコンテンツの関係に似ています。コンテンツの型と構造を定義するコンテンツタイプに基づいてコンテンツを作るように、ボキャブラリ固有のタームの型に基づいてタームを作るわけです。実際、Drupal 7 以降、タームは、前回も触れたエンティティ(一般化された構造化データ)の一種として実装されており、コンテンツタイプと同様、任意のフィールドを持たせることができます。

Drupal における分類用語のタームは、単なる語句ではなく、各ボキャブラリ固有の型を持つ構造化データだということです。 分類用語は本来、単なる語句ではなく、その語句によって表したい意味あいを含んだものですから、こうした設計は非常に合理的です。たとえば、"白"、"グレー"、"青" を単なる文字列としてではなく、その色の画像であるとか、色あいを説明するテキスト等を含む構造化データとして用意しておけば、Tシャツのページに特定の色タームを関連づけることで、詳しい色の解説を伴う T シャツのページを自動生成させる、といったことが可能になります。

article7_4

 構造化されたタームをコンテンツから参照して関連づける

「カテゴリ」 のような汎用の体系を1つ提供し、あとはご自由に・・・、という方法はシンプルでわかりやすい反面、複数の観点から本格的にコンテンツを分類する仕組みとしては不十分です。他方、タクソノミーは、分類体系そのものを定義する、というやや抽象的な思考を前提にした仕組みである分、とっつきにくいところがありますが、本気で情報を分類しようと思ったときには欠かすことのできない仕組みといえます。

現在では、タクソノミーをサポートする CMS は珍しくありませんが、この仕組みを早い段階から提供している点は、Webアプリケーション、特にデータ管理を担うシステムの基盤として Drupal を選択する十分な根拠になると思います。

Drupal 8 での使い方

分類体系をボキャブラリとして定義する、という考え方は Drupal 8 でも同じです。ボキャブラリは、Drupal 8 の管理画面から自由にいくつでも作成することができます。作成したボキャブラリには、それを構成するタームを追加していくことができます。

article7_5

先述のように、タームはボキャブラリごとに固有の構造を持った構造化データです。タームのフィールド管理画面から自由にフィールドを追加したり、各フィールドの構成を編集したりすることができます。

article7_6

コンテンツタイプとタームとの関係

作成したボキャブラリを使用してコンテンツを分類するには、対象となるコンテンツのコンテンツタイプに、タームの参照を追加します。上述のとおり、タームは各ボキャブラリ固有のタイプに基づく構造化データですから、コンテンツを特定のタームで分類するということは、データ上は、対象コンテンツにそのタームへの参照を追加する、という形で実現します。いわばオブジェクト間の参照関係としてタームの関連付けを行うわけです。

article7_7

エンティティ間の参照としてコンテンツに分類用語を指定する

具体的には、コアで提供される「タクソノミーターム」というタイプのフィールドをコンテンツに追加し、このフィールドの構成情報として、参照先となるタームのタイプ(ボキャブラリ)や多重度を指定した上で、実際のコンテンツ作成の中で目的のタームを指定します。

article7_8

コンテンツタイプに追加したターム参照フィールド「製品カテゴリ」の多重度を指定する例

参照先のタームの種類は、その時点で存在するボキャブラリの中から選ぶ形になります。ボキャブラリの名前が参照先タームの種類(タイプ)を表していることがわかります。

article7_9

ターム参照フィールドの設定として参照先タームのタイプ(ボキャブラリ)を限定できる

以上、Drupal でタクソノミーを使ってコンテンツを分類する方法の概要を紹介しました。より、具体的な例と詳しい操作手順については、弊社が担当した ThinkIT 連載記事の第2回 『Drupal 8入門】コンテンツタイプとタクソノミーの作成』 に詳しくまとめていますので、実際に操作をするときの参考にしてください。

まとめ

今回は、コンテンツを分類するために Drupal が提供しているタクソノミーについて紹介しました。前回のコンテンツタイプの説明と合わせ、Drupal が強力なデータ管理機能を持っていることをご理解いただけたでしょうか。次回は、こうしたデータ管理の観点から、いくつかの CMS 製品と Drupal とを比較してみたいと思います。

(Photo by Romain Vignes on Unsplash)

この記事を書いた人 : ANNAI株式会社

ANNAIは、2009年からDrupal専門のWebシステム開発会社として、世界規模で展開するグローバル企業や大学・自治体を中心に数多くのWebソリューションを提供。
CoreやModuleのコントリビューターなど、Drupalエキスパートが多数在籍。国内ユーザーコミュニティへも積極的にコミットし、定期的なセミナーの等の開催を通じて、オープンソース技術の普及や海外コミュニティとの緊密な連携を図っている。
Webシステムの企画・開発〜デザイン、クラウド運用までをワンストップで提供する他、Drupalのコーディングを評価する"Audit業務"や最適なモジュールの調査・選定等、幅広いコンサルティングを行っている。Drupalアソシエーション公式パートナー。

関連コンテンツ