ご提供するANNAIです。前回は、DrupalがWebアプリケーションのフレームワークとして各機能とそれらを連携させる仕組みを再利用させるものだというお話をしました。今回は、この観点で特徴的なものを中心に、Drupalが具体的にどんな機能を提供しているのかをもう少し細かく見ていきたいと思います。Drupalの中核機能Drupalの機能は多岐にわたりますが、ここではフレームワークの観点から重要な以下の項目について概要を見ていくことにします。テキストコンテンツの管理Webコンテンツの基本である文字データの扱いから見ていきましょう。一口に文字コンテンツと言っても、プレーンテキストもあれば、マークアップ(HTMLタグ等)を含むものもありますし、さらに後者は使用できるタグを制限する必要があるかもしれません。した扱いを統一的に管理するため、Drupalではテキストフォーマットという仕組みを用意しています。これは、テキストデータの扱い方ごとに名前を付けて定義し、入出力時の変換処理や妥当性チェックなどを組み込めるようにする枠組みです。いった形で複数のテキストフォーマットを定義できます。各フォーマットごとに、入出力時に適用する処理を組み込むことができます。した処理はフィルタと呼ばれ、HTMLのマークアップに関するものだけでなく、多様な機能が用意されています。markdownやshortcodeの入力を解釈するフィルタや、ソースコードを色付で整形表示するGeSHiフィルタなどもあります。して定義したテキストフォーマットは、文字入力に関するさまざまな場面でシステム横断的に利用されます。Drupalが用意した統一的な枠組みの中で、さまざまな形式のテキストを扱うことができるわけです。次に、Drupalコアの画像スタイルと呼ばれる機能を見ておきましょう。これは、画像の加工方法を定義しておき、さまざまな場面で再利用できるようにする仕組みです。pxの画像が必要だとします。元の画像が800x600pxだった場合、普通はサイズ縮小とトリミング等の加工を加えたファイルを用意し、これをアップロードして使うことになるでしょう。Drupalでは、サイズ変更やトリミングといった基本的な変換処理をサーバー上の機能として提供し、これを自由に組み合わせて「画像スタイル」として定義できるようになっています。これはいわば、画像の定型的な加工操作をUIでプログラミングしておき、必要なときに自動的に呼び出して実行させる仕組みです。ここでも重要な点は「画像スタイル」がシステム横断的にさまざまな場面で利用されということです。Drupalが再利用される枠組みと連携の構造を提供するフレームワークとして機能していることがわかると思います。フィールドとコンテンツタイプDrupalでは、コンテンツ構造を型として定義する仕組みを提供しています。見出し、本文のほか、テキストや画像、その他多様な種類の情報を管理画面上でフィールドとして追加し、コンテンツタイプとして定義することができます。Drupalのフィールドとコンテンツタイプの特徴として、次の2つが重要です。多重度の指定この2つが普通に使えることで、たとえば「人」型コンテンツの「勤務先」フィールドに特定の「会社」型コンテンツを設定して雇用関係を表したり、勤務先フィールドの多重度によって複数の会社に勤務できるという条件を表現したりできます。ブログ記事の投稿タイプにカスタムフィールドを追加して拡張する、といったレベルの用途を超えた、より一般的なデータモデリングに利用できる仕組みを提供していると言えます。ユーザー管理Webアプリケーションの基盤としてDrupalのようなCMSを使う大きな理由の1つが、ログイン機能とその前提となるユーザー管理機能にあると思います。この点でDrupalの特徴は、ユーザーのロール(所属するグループまたは役割)を定義できることと、このロールがシステム各部のアクセス制御に統一的に使われることです。拡張モジュールも含めて、各機能のアクセス制御に用いるAPIが標準化されているため、コアの管理画面で定義したロールはすべての機能のアクセス制御に横断的に適用されます。ここでも、Drupalは全体の枠組みを提供し、アクセス制御という機能について全体が連携する仕組みを提供しているわけです。拡張性(テーマとモジュール)Drupalが提供する各機能の設定がシステム横断的に利用される背景には、モジュールやテーマと呼ばれる拡張機能の仕様やAPIが標準化されていることがあります。表層的なプラグイン構造ではなく、内部的にきちんとコアと連携する形で拡張機能を組み込める環境があって、それがフレームワークとしてのDrupalを担保している点も重要な特徴です。セキュリティDrupalはセキュリティが堅固なCMSとして紹介されることもあります。特定の製品だから安全/危険という議論はむしろ有害です。OSSだからどうこうという議論も同様です。重要なことは、見つかった脆弱性の修正を速やかに適用することであり、それは製品や商用/非商用によらず普遍的です。ちなみに、Drupalサイトのセキュリティ監査で見つかる脆弱性の約9割が、サイト独自の拡張部分に起因するという報告もあります。Drupalの強みは、専任のセキュリティチームがあり、脆弱性の調査や寄せられた報告の検証、修正の作成とテスト、情報の管理、アドバイザリの作成など、Drupalのセキュリティを確保する総括的な活動を行っていることです。ゼロデイ攻撃やDrupalのdrupageddonのように、攻撃が始まるまでの時間的な猶予がなく対処が難しい脆弱性もありますが、現実に発生する事故には基本的な対策で防げたものも多いと思います。大切なことは、リスクを常に意識しながら、日々やるべき対策を粛々と継続していくことです。Drupalには、少なくともそれを支える体制が整備されていることは間違いありません。8で特に注目すべきポイントをピックアップしてみたいと思います。コアの強化Drupalをフレームワークとして機能させるという観点からは、広く利用されている機能はコアに取り込んで、その一部として保守していくことが望ましいと考えられます。8では、数多くの拡張機能がコアに取り込まれました。多くの機能がコアの一部として保守されるようになりました。多言語対応の強化これもコアに取り込まれた機能の1つですが、同時に大幅に強化され、さまざまな局面で使われる文字列を多言語化できるようになりました。これは別の回に改めて紹介する予定です。Application)という高機能なGUIのバックエンドとしてDrupalを利用する方法も注目されており、そのための機能がコア標準で提供されました。詳しくはこちらの翻訳記事をご覧ください。従来、匿名ユーザー向けにサポートされてきた生成出力全体をキャッシュする機構に加えて、認証済みのユーザーにも効果があるダイナミックページキャッシュ、よりきめ細かいキャッシュを可能にしたRenderキャッシュ、Drupal8で導入されたTwigテンプレートのキャッシュなど、新しいキャッシュ機構が導入・強化され、表示に要する時間が短縮されました。今回まで、Webアプリケーションフレームワークとしての観点からDrupalの特徴を紹介してきました。次回からは、実際のサイト構築を、より具体的にDrupalの機能を紹介していきたいと思います。ANNAI株式会社ANNAIは、2009年からDrupal専門のWebシステム開発会社として、世界規模で展開するグローバル企業や大学・自治体を中心に数多くのWebソリューションを提供。CoreやModuleのコントリビューターなど、Drupalエキスパートが多数在籍。国内ユーザーコミュニティへも積極的にコミットし、定期的なセミナーの等の開催を通じて、オープンソース技術の普及や海外コミュニティとの緊密な連携を図っている。いコンサルティングを行っている。Drupalアソシエーション公式パートナー。Drupalをもっと知りたい方に向けた各種情報ウェブサイトに関することならお気軽にご相談くださいお問い合わせお見積のご依頼や詳しい内容のご相談、取材などに関することはお問い合わせをご利用ください。