Drupal 8を理解する-PART1:フレームワークの全体構造-第一回:Drupal 8の構造

Drupal8はついにリリースされました。そして、それは、まるで革命のようです。Drupal8は、Drupal6からDrupal7へのような進化ではなく、まったく新しい構造とコーディング方法が採用されています。CMSの専門性の向上、また、さらなるモダン化を行うために、このような大規模な変更が行われました。オブジェクト指向への進化により、開発者からの要望に答えることができ、ソフトの品質向上にも寄与することになります。Drupal Coreの開発者の勇気と熱意に感謝します。

しかしながら、Drupal8の新しい技術を身に付けることは、既存もしくは新規ウェブ開発者にとって新たな挑戦となるでしょう。このページを読んで少しでも知識を広めて頂ければ幸いです。本ブログでは、Drupal8でのモジュール開発に着手する前に必要な知識を提供していく予定です。私の数日間にわたるソフトのデバック、コード読解、また、オンラインの記事などによってSymfony2とDrupal8を理解した上で書かれています。私は、Drupal7 で開発した経験はありますが、Symfonyについて何も知らず、Drupal 8コアにもまだ貢献していません。私が学んだことを共有して、みなさんのDrupal8の知識を深めることができればと思っています。

これから4週間に渡り4つに分けてブログを公開します。今日はDrupal8の全体構造、特にSymfony2コンポーネントとの関連性を説明します。どのSymfony2コンポーネントが、どのように使われているのかを説明します。次のブログでは、重要なサービスコンテナについて説明します。第三回のブログでは、Drupal8でのブートストラップとルート機能を紹介し、どのようにリクエストが処理されているかを学びます。第四回目の最後のブログでは、Drupal8の新規機能を紹介します。

Symfony2

Symfony2は、カスタムのウェブベースのアプリケーション開発を可能にするフレームワークです。Symfonyはサイト管理ができないため、CMSではありません。代わりにアプリケーションを開発するためのコードを書かなければなりませんが、Symfonyには、それを効率的に作業する方法があります。CMSがSymfonyの上に存在することが理想的ですが、Drupalにとって、そのSymfonyのアプローチはあまり適切ではありませんでした。

代わりに、Drupal8ではSymfonyのコア層のみを利用することにより、Drupalモジュールへ対応することにしました。結果として、Symfonyコアの良い所を変更なしに利用し、柔軟性のあるCMS層に対応することができ両者の長所が活かされています。

コンポーネント

Symfonyフレームワークは、複数のコンポーネントを含みます。いくつかのコンポーネント(Http FoundationのようなHTTPを理解し他のコンポーネントにリクエストおよびレスポンスオブジェクトを提供するコンポーネント)はシステムに必須となります。その他のコンポーネントは、単にヘルパー・コンポーネントで、例えば、データを認証する(メール・アドレス・URL・番号等が正しいか)コンポーネントや、バリデータコンポーネントなどがあります。システムのコアには、カーネル・コンポーネントがあります。これは、環境(サービスとバンドル)を管理するもので、HTTPリクエストを処理するものです。開発者は、AppKernelのように、自身でカーネルを拡張したりバンドルを追加したりしてシステムを拡張することができます。これらのバンドルによって、Drupalのモジュールと同様に、機能的にも’まとまった’機能群として開発することができます。

次の画像に示すように、DrupalはSymfonyの特定コンポーネントのみを利用します。

Drupal8におけるSymfony2の拡張

Symfony2のウェブ・アプリと違ってDrupalはカーネルを拡張しませんが、カーネルインタフェースを利用して同じ機能を提供します。これは、Symfonyの「バンドル」という方法をDrupal8では使用していないためです。バンドルは、カスタムのウェブ・アプリを開発するためには便利ですが、柔軟性と拡張性を持つCMSアプリの開発には適していません。DrupalKernelは、カーネルと少し違う方法(とても似てはいますが…)で環境(利用可能なサービスとモジュール)をロードしますが、Symfonyではカーネルが行うようなリクエスト処理はHttpKernelに任せます。

なお、Drupal8には、独自の(サードパーティーの)コンポーネントとコアコードがあります。以下にその概要を示します。

まとめ

以上で第一回のブログ「Drupal8を理解する」は終わりです。来週のブログでは、Drupalのシステムの柱とも呼ばれるサービスコンテナについて説明します。サービスコンテナは、他のコンポーネントよりも先に理解する必要があります。

翻訳元URL:https://cipix.nl/understanding-drupal-8-part-1-general-structure-framework