![第7回 Drupal 8 のボキャブラリとタクソノミーの使い方](/sites/default/files/styles/annai_magazine_eyecatch/public/2021-03/Beginner7_0.png.webp?itok=PCAMV7RY)
タクソノミーとは?
一般的なブログシステムには、タグと呼ばれるキーワードを記事に付加する機能が用意されています。また、多くの CMS では、カテゴリと呼ばれるコンテンツの分類機能を提供していると思います。これらは異なる機能に見えるかもしれませんが、どちらも分類(を表す語句 = 分類用語)とコンテンツとの関連づけを行っているという点で、本質的に同種のものです。
両者の重要な違いは分類の体系です。タグは、特に制限のないフリーワードをコンテンツに指定していくという、非常に自由な観点からコンテンツを分類する仕組みですが、他方カテゴリは、特定の観点から事前に洗い出した分類にコンテンツをあてはめていくという使い方をするでしょう。どちらもコンテンツを分類するという目的は共通ですが、その基準となる観点が異なるので、違う名前の機能として提供されているわけです。
![article7_0](/sites/default/files/inline-images/Image_0_4.png)
ブログでよく見かけるタグ
タグもカテゴリも分類体系の一種であるならば、これらとは別の体系があっても良いはずです。たとえば、EC サイトで Tシャツの商品ページの分類を考える場合、サイズという観点に立てば S、M、L という分類を与えることができます。あるいは色の観点からは、白、グレー、青、…といった分類が考えられるでしょう。
それぞれの分類は、商品が持つ異なる属性を見ているので、基本的に重なることはありません。仮に分類用語を空間に並べていったとすれば、それらを結ぶ直線はそれぞれ固有の方向を持つグラフの軸のように描くことができます。こうした "直交する" 複数の観点から明確にコンテンツを分類するには、カテゴリやタグのような汎用的な分類では不十分で、「色」 「サイズ」「素材」といった個別の分類体系を独自に定義できる仕組みが必要になります。
![article7_1](/sites/default/files/inline-images/Image_1_7.png)
直交する複数の観点に基づく分類用語のイメージ
この「独自の分類体系を自由に定義する仕組み」がタクソノミーです。Drupal のタクソノミーは、前回紹介したコンテンツタイプよりもさらに早いバージョン 4.2 の頃から提供されていました。筆者が Drupal を触り始めたのはバージョン 4.6 からですが、当時まだ聞きなれないタクソノミーという学術用語の機能を持つ Drupal は、他の CMS と違う特異な存在に思えたのを覚えています。
![article7_2](/sites/default/files/inline-images/Image_2_2.png)
Drupal 4.2 (2005年) のタクソノミー登録画面
ボキャブラリとターム
上述のとおり、タクソノミーはコンテンツの分類体系を独自に定義する仕組みです。分類体系は、それを構成する分類用語によって定義されます。Drupal では、個々の分類用語を「ターム」という言葉で表し、タームの集合として定義される「ボキャブラリ」によって特定の分類体系を表します。先の T シャツの例であれば、"白"、"グレー"、"青" というタームで構成されるボキャブラリとして色の分類体系を定義し、 "S"、"M"、"L" というタームで構成されるボキャブラリによってサイズの分類体系を定義しているわけです。
![article7_3](/sites/default/files/inline-images/Image_3_3.png)
タームの集合のボキャブラリが分類体系を定義する
特定のボキャブラリを構成するタームは、共通の観点に基づくものですから、同じ種類の情報と見ることができます。逆に、ボキャブラリが違えば情報の種類も異なり、互いに交換することはできません。これは、Tシャツのサイズとして白やグレーを指定できないことを考えれば明らかです。つまり、ボキャブラリが、それを構成するタームの種類、すなわちデータの型(タイプ)を象徴していることがわかるでしょう。
これはちょうど、コンテンツタイプとコンテンツの関係に似ています。コンテンツの型と構造を定義するコンテンツタイプに基づいてコンテンツを作るように、ボキャブラリ固有のタームの型に基づいてタームを作るわけです。実際、Drupal 7 以降、タームは、前回も触れたエンティティ(一般化された構造化データ)の一種として実装されており、コンテンツタイプと同様、任意のフィールドを持たせることができます。
Drupal における分類用語のタームは、単なる語句ではなく、各ボキャブラリ固有の型を持つ構造化データだということです。 分類用語は本来、単なる語句ではなく、その語句によって表したい意味あいを含んだものですから、こうした設計は非常に合理的です。たとえば、"白"、"グレー"、"青" を単なる文字列としてではなく、その色の画像であるとか、色あいを説明するテキスト等を含む構造化データとして用意しておけば、Tシャツのページに特定の色タームを関連づけることで、詳しい色の解説を伴う T シャツのページを自動生成させる、といったことが可能になります。
![article7_4](/sites/default/files/inline-images/Image_4_2.png)
構造化されたタームをコンテンツから参照して関連づける
「カテゴリ」 のような汎用の体系を1つ提供し、あとはご自由に・・・、という方法はシンプルでわかりやすい反面、複数の観点から本格的にコンテンツを分類する仕組みとしては不十分です。他方、タクソノミーは、分類体系そのものを定義する、というやや抽象的な思考を前提にした仕組みである分、とっつきにくいところがありますが、本気で情報を分類しようと思ったときには欠かすことのできない仕組みといえます。
現在では、タクソノミーをサポートする CMS は珍しくありませんが、この仕組みを早い段階から提供している点は、Webアプリケーション、特にデータ管理を担うシステムの基盤として Drupal を選択する十分な根拠になると思います。
Drupal 8 での使い方
分類体系をボキャブラリとして定義する、という考え方は Drupal 8 でも同じです。ボキャブラリは、Drupal 8 の管理画面から自由にいくつでも作成することができます。作成したボキャブラリには、それを構成するタームを追加していくことができます。
![article7_5](/sites/default/files/inline-images/Image_5_0.png)
先述のように、タームはボキャブラリごとに固有の構造を持った構造化データです。タームのフィールド管理画面から自由にフィールドを追加したり、各フィールドの構成を編集したりすることができます。
![article7_6](/sites/default/files/inline-images/Image_6_0.png)
コンテンツタイプとタームとの関係
作成したボキャブラリを使用してコンテンツを分類するには、対象となるコンテンツのコンテンツタイプに、タームの参照を追加します。上述のとおり、タームは各ボキャブラリ固有のタイプに基づく構造化データですから、コンテンツを特定のタームで分類するということは、データ上は、対象コンテンツにそのタームへの参照を追加する、という形で実現します。いわばオブジェクト間の参照関係としてタームの関連付けを行うわけです。
![article7_7](/sites/default/files/inline-images/Image_7.png)
エンティティ間の参照としてコンテンツに分類用語を指定する
具体的には、コアで提供される「タクソノミーターム」というタイプのフィールドをコンテンツに追加し、このフィールドの構成情報として、参照先となるタームのタイプ(ボキャブラリ)や多重度を指定した上で、実際のコンテンツ作成の中で目的のタームを指定します。
![article7_8](/sites/default/files/inline-images/Image_8.png)
コンテンツタイプに追加したターム参照フィールド「製品カテゴリ」の多重度を指定する例
参照先のタームの種類は、その時点で存在するボキャブラリの中から選ぶ形になります。ボキャブラリの名前が参照先タームの種類(タイプ)を表していることがわかります。
![article7_9](/sites/default/files/inline-images/Image_9.png)
ターム参照フィールドの設定として参照先タームのタイプ(ボキャブラリ)を限定できる
以上、Drupal でタクソノミーを使ってコンテンツを分類する方法の概要を紹介しました。より、具体的な例と詳しい操作手順については、弊社が担当した ThinkIT 連載記事の第2回 『Drupal 8入門】コンテンツタイプとタクソノミーの作成』 に詳しくまとめていますので、実際に操作をするときの参考にしてください。
まとめ
今回は、コンテンツを分類するために Drupal が提供しているタクソノミーについて紹介しました。前回のコンテンツタイプの説明と合わせ、Drupal が強力なデータ管理機能を持っていることをご理解いただけたでしょうか。次回は、こうしたデータ管理の観点から、いくつかの CMS 製品と Drupal とを比較してみたいと思います。
(Photo by Romain Vignes on Unsplash)
関連コンテンツ
- 第16回 Drupalをもっと知りたい方に向けた各種情報
- 第15回 Drupal 8 の拡張モジュールの選定と使い方
- 第14回 Drupal 8 のテーマシステムについて
- 第13回 Drupal 8 の権限設定とWordPressやMovable Typeとの比較
- 第12回 Drupal 8の多言語機能と他のCMSやサービスとの比較
- 第11回 Drupal 8 と他のCMSのクエリビルダー機能を比較
- 第10回 Drupal 8 の標準クエリービルダ Viewsの使い方
- 第9回 Drupal 8のブロックシステム
- 第8回 コンテンツ管理におけるDrupal 8 と他のCMSとの比較
- 第6回 Drupal 8 にコンテンツを投稿してみる
Drupal 8初心者講座バックナンバー
Drupal 8初心者講座について
第1回 歴史に見るDrupalのDNA
第2回 Drupalはフレームワークか?CMSか?他のCMSとの比較
第3回 Drupalの特徴
第4回 Drupal 8のインストール (1)
第5回 Drupal 8のインストール(2)
第6回 Drupalにコンテンツを投稿してみる
第7回 Drupalのボキャブラリとタクソノミーの使い方
第8回 コンテンツ管理におけるDrupalと他のCMSとの比較
第9回 Drupal 8のブロックシステム
第10回 Drupalの標準クエリービルダ Viewsの使い方
第11回 Drupalと他のCMSのクエリビルダー機能を比較
第12回 Drupal 8の多言語機能と他のCMSやサービスとの比較
第13回 Drupalの権限設定とWordPressやMovable Typeとの比較
第14回 Drupalのテーマシステムについて
第15回 Drupalの拡張モジュールの選定と使い方
第16回 Drupalをもっと知りたい方に向けた各種情報