![第3回 Drupal 8 の特徴](/sites/default/files/styles/annai_magazine_eyecatch/public/2018-02/3.png.webp?itok=AIs5fzIi)
Drupalの中核機能
Drupalの機能は多岐にわたりますが、ここではフレームワークの観点から重要な以下の項目について概要を見ていくことにします。
- テキストコンテンツの管理
- 画像の管理
- フィールドとコンテンツタイプ
- ユーザー管理
- 拡張性(テーマとモジュール)
- セキュリティ対策
1. テキストコンテンツの管理
Webコンテンツの基本である文字データの扱いから見ていきましょう。一口に文字コンテンツと言っても、プレーンテキストもあれば、マークアップ(HTMLタグ等)を含むものもありますし、さらに後者は使用できるタグを制限する必要があるかもしれません。こうした扱いを統一的に管理するため、Drupalではテキストフォーマットという仕組みを用意しています。これは、テキストデータの扱い方ごとに名前を付けて定義し、入出力時の変換処理や妥当性チェックなどを組み込めるようにする枠組みです。たとえば、マークアップが使えない Plain text、限定的にタグが使える Filtered HTML、すべてのタグが使える Full HTML といった形で複数のテキストフォーマットを定義できます。
![article3_0](/sites/default/files/inline-images/Image_0_0.png)
各フォーマットごとに、入出力時に適用する処理を組み込むことができます。こうした処理はフィルタと呼ばれ、HTMLのマークアップに関するものだけでなく、多様な機能が用意されています。たとえば、markdownやshortcodeの入力を解釈するフィルタや、ソースコードを色付で整形表示するGeSHiフィルタなどもあります。
![article3_1](/sites/default/files/inline-images/Image_1_3.png)
こうして定義したテキストフォーマットは、文字入力に関するさまざまな場面でシステム横断的に利用されます。Drupalが用意した統一的な枠組みの中で、さまざまな形式のテキストを扱うことができるわけです。
2. 画像の管理
次に、Drupalコアの画像スタイルと呼ばれる機能を見ておきましょう。これは、画像の加工方法を定義しておき、さまざまな場面で再利用できるようにする仕組みです。たとえば、スライドショーで640x480 pxの画像が必要だとします。元の画像が800x600pxだった場合、普通はサイズ縮小とトリミング等の加工を加えたファイルを用意し、これをアップロードして使うことになるでしょう。Drupalでは、サイズ変更やトリミングといった基本的な変換処理をサーバー上の機能として提供し、これを自由に組み合わせて「画像スタイル」として定義できるようになっています。
![article3_2](/sites/default/files/inline-images/Image_2.png)
これはいわば、画像の定型的な加工操作をUIでプログラミングしておき、必要なときに自動的に呼び出して実行させる仕組みです。ここでも重要な点は「画像スタイル」がシステム横断的にさまざまな場面で利用されということです。Drupalが再利用される枠組みと連携の構造を提供するフレームワークとして機能していることがわかると思います。
3. フィールドとコンテンツタイプ
Drupalでは、コンテンツ構造を型として定義する仕組みを提供しています。見出し、本文のほか、テキストや画像、その他多様な種類の情報を管理画面上でフィールドとして追加し、コンテンツタイプとして定義することができます。Drupalのフィールドとコンテンツタイプの特徴として、次の2つが重要です。
- 他のコンテンツの参照
- 多重度の指定
この2つが普通に使えることで、たとえば「人」型コンテンツの「勤務先」フィールドに特定の「会社」型コンテンツを設定して雇用関係を表したり、勤務先フィールドの多重度によって複数の会社に勤務できるという条件を表現したりできます。ブログ記事の投稿タイプにカスタムフィールドを追加して拡張する、といったレベルの用途を超えた、より一般的なデータモデリングに利用できる仕組みを提供していると言えます。
![article3_3](/sites/default/files/inline-images/Image_3_0.png)
4. ユーザー管理
Webアプリケーションの基盤としてDrupalのようなCMSを使う大きな理由の1つが、ログイン機能とその前提となるユーザー管理機能にあると思います。この点でDrupalの特徴は、ユーザーのロール(所属するグループまたは役割)を定義できることと、このロールがシステム各部のアクセス制御に統一的に使われることです。拡張モジュールも含めて、各機能のアクセス制御に用いるAPIが標準化されているため、コアの管理画面で定義したロールはすべての機能のアクセス制御に横断的に適用されます。ここでも、Drupalは全体の枠組みを提供し、アクセス制御という機能について全体が連携する仕組みを提供しているわけです。
![article3_4](/sites/default/files/inline-images/Image_4_0.png)
5. 拡張性(テーマとモジュール)
Drupalが提供する各機能の設定がシステム横断的に利用される背景には、モジュールやテーマと呼ばれる拡張機能の仕様やAPIが標準化されていることがあります。表層的なプラグイン構造ではなく、内部的にきちんとコアと連携する形で拡張機能を組み込める環境があって、それがフレームワークとしてのDrupalを担保している点も重要な特徴です。
6. セキュリティ
Drupalはセキュリティが堅固なCMSとして紹介されることもあります。しかし、特定の製品だから安全/危険という議論はむしろ有害です。OSSだからどうこうという議論も同様です。重要なことは、見つかった脆弱性の修正を速やかに適用することであり、それは製品や商用/非商用によらず普遍的です。ちなみに、Drupalサイトのセキュリティ監査で見つかる脆弱性の約9割が、サイト独自の拡張部分に起因するという報告もあります。
Drupalの強みは、専任のセキュリティチームがあり、脆弱性の調査や寄せられた報告の検証、修正の作成とテスト、情報の管理、アドバイザリの作成など、Drupalのセキュリティを確保する総括的な活動を行っていることです。ゼロデイ攻撃やDrupalのdrupageddonのように、攻撃が始まるまでの時間的な猶予がなく対処が難しい脆弱性もありますが、現実に発生する事故には基本的な対策で防げたものも多いと思います。大切なことは、リスクを常に意識しながら、日々やるべき対策を粛々と継続していくことです。Drupalには、少なくともそれを支える体制が整備されていることは間違いありません。
Drupal 8の注目ポイント
以上は、Drupal 7も含めてDrupalに共通する特徴でしたが、最後にDrupal 8で特に注目すべきポイントをピックアップしてみたいと思います。
コアの強化
Drupalをフレームワークとして機能させるという観点からは、広く利用されている機能はコアに取り込んで、その一部として保守していくことが望ましいと考えられます。Drupal 8では、数多くの拡張機能がコアに取り込まれました。
Breakpoint、CacheTags、Content Translation、Email、Entity API、Entity Reference、Entity view modes、File Entity、Link、Phone、Picture、Quick Edit、Transliteration、UUID、Views、RESTWS、Admin Views、CKEditor、Date、Internationalization、Migrate、Views Bulk Operations より多くの機能がコアの一部として保守されるようになりました。
多言語対応の強化
これもコアに取り込まれた機能の1つですが、同時に大幅に強化され、さまざまな局面で使われる文字列を多言語化できるようになりました。これは別の回に改めて紹介する予定です。
Headless Drupal(RESTのサポート)
Webアプリケーションの形態は多様化しつつあり、従来型のサーバー側ですべて処理して結果をHTMLページとして返す形から、JavaScriptのフレームワークによるUI画面の実装や、RIA(Rich Internet Application)という高機能なGUIのバックエンドとしてDrupalを利用する方法も注目されており、そのための機能がコア標準で提供されました。詳しくはこちらの翻訳記事をご覧ください。 ▼Headless CMSというトレンドにDrupalはどう適応しているのか
https://annai.co.jp/article/api-first
キャッシュの強化
従来、匿名ユーザー向けにサポートされてきた生成出力全体をキャッシュする機構に加えて、認証済みのユーザーにも効果があるダイナミックページキャッシュ、よりきめ細かいキャッシュを可能にしたRenderキャッシュ、Drupal8で導入されたTwigテンプレートのキャッシュなど、新しいキャッシュ機構が導入・強化され、表示に要する時間が短縮されました。
今回まで、Webアプリケーションフレームワークとしての観点からDrupalの特徴を紹介してきました。次回からは、実際のサイト構築を、より具体的にDrupalの機能を紹介していきたいと思います。
参考資料
キャッシュについて
- Disable Drupal 8 caching during development
- Drupal 8 (D8) Performance: Caching
- Debugging compiled Twig templates
- D8でコアに取り込まれたモジュール
- Which contributed modules are being moved into Drupal 8 core?
- Drupalのセキュリティ
- General Information
(Photo by Rishi Deep on Unsplash)
関連コンテンツ
- 新しい古典:Jamstack と MACH が従来の CMS の概念に向け進化する
- Headless CMS というトレンドに Drupal は適応している!?
- State of Drupalプレゼンテーション(2021年4月)
- アクイアのサービスの中核を担う Cloud Platform とは
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報
- 第 14 回 Drupal のテーマシステムについて
- 第 3 回 Drupal の特徴
- Node.jsを用いて、REST APIで外部からDrupal8にコンテンツを投稿する
- Contenta CMSによるDecoupled Drupalサイトの構築
- CMSの第四の波 Distributed CMS (Drupal Developer Days Transylvania 2019)
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をもっと知りたい方に向けた各種情報