ANNAIマガジン
Drupalテーマ開発における革新的な機能: Single Directory Components (SDC)
この記事の目次

はじめに

Drupal 10で導入されたSingle Directory Components (SDC)は、Drupalのテーマ開発に革命をもたらす新しいアプローチです。SDCは、コンポーネントベースの設計を促進し、フロントエンド開発者の作業を大幅に効率化します。この記事では、SDCの概要、その利点、実装方法、そして将来の展望について詳しく解説します。

1. SDCとは何か?

Single Directory Components (SDC)は、Drupal 10.1で実験的モジュールとして導入され、10.3でコアに統合された新しいテーマ開発手法です。SDCの主な特徴は、ウェブコンポーネントを構成するすべてのファイル(Twigテンプレート、CSS、JavaScript、メタデータなど)を1つのディレクトリにまとめることです。

SDCの主な目的は以下の通りです:

  • フロントエンド開発ワークフローの簡素化
  • カスタム、コア、コントリビューションテーマの保守性向上
  • Drupalフロントエンド開発者の作業効率化
  • Drupal初心者のフロントエンド開発者にとってのラーニングカーブの低減

SDCは、コンポーネントの自動検出、ライブラリの自動生成、コンポーネントのロードなど、多くの機能を提供します。これにより、開発者はコンポーネントの作成に集中でき、定型的なコードの記述を最小限に抑えることができます。

2. SDCの利点

SDCを使用することで、以下のような多くの利点があります:

  • コード管理の改善: すべての関連ファイルが1つのディレクトリにまとまるため、コードの管理が容易になります。
  • 再利用性の向上: コンポーネントを簡単に再利用できるため、開発効率が向上します。
  • 保守性の向上: コンポーネントごとにファイルがまとまっているため、更新やデバッグが容易になります。
  • 一貫性の確保: プロジェクト全体で統一されたコンポーネント構造を維持できます。
  • 自動化: ライブラリの自動生成により、手動での設定作業が減少します。
  • モジュール性: コンポーネントを独立して開発・テストできるため、大規模プロジェクトの管理が容易になります。
  • 学習曲線の緩和: 従来のDrupalテーマ開発と比較して、SDCの学習は比較的容易です。

3. SDCの実装方法

SDCを使用してコンポーネントを作成する基本的な手順は以下の通りです。

  1. Drupal 10.2以前の場合は、Single-Directory Componentsモジュールを有効化します。
  2. テーマまたはモジュールのルートディレクトリにcomponentsディレクトリを作成します。
  3. componentsディレクトリ内に、新しいコンポーネントの名前でサブディレクトリを作成します(例:my-component)。
  4. コンポーネントディレクトリ内に、以下の必須ファイルを作成します。
    • my-component.twig: コンポーネントのマークアップを含むTwigテンプレート
    • my-component.component.yml: コンポーネントのメタデータとスキーマを定義するYAMLファイル
  5. 必要に応じて、以下のオプションファイルを追加します。
    • my-component.css: コンポーネントのスタイル
    • my-component.js: コンポーネントのJavaScript
    • README.md: コンポーネントのドキュメント
  6. my-component.component.ymlファイルにコンポーネントの定義を記述します。
name: My Component
description: A simple example component
props:
  title:My component title
    required: true
  content:
    type: string

  1. my-component.twigファイルにコンポーネントのマークアップを記述します。
<div class="my-component">
  <h2>{{ title }}</h2>
  <p>{{ content }}</p>
</div>

  1. コンポーネントを使用するには、Twigテンプレート内で以下のように記述します。
{% embed '@my_theme/my-component' with {
  title: 'Hello World',
  content: 'This is my first SDC component.'
} %}
{% endembed %}

以上の手順に従うことで、基本的なSDCコンポーネントを使用することができます。

最終的にはSDCのディレクトリ構造は以下のようになり、componentsディレクトリの下に複数個のコンポーネントをテーマの構成要素として定義します。

|- my-theme
    |- components
        |- my-component
            |- my-component.twig (required)
            |- my-component.component.yml (required)
            |- README.md
            |- thumbnail.png
            |- my-component.js
            |- my-component.css
            |- assets
                |- img1.png
        |- my-component2

4. SDCの高度な機能と統合

SDCは基本的な機能に加えて、より高度な使用方法や他のツールとの統合も可能です。

  • バリアント: 1つのコンポーネントに対して複数のバリアントを定義できます。これにより、同じコンポーネントの異なるバージョンを簡単に管理できます。
  • コンポーネントの置き換え: SDCは、既存のコンポーネントを新しいものに置き換える機能を提供します。これにより、モジュールやテーマが提供するコンポーネントをカスタマイズできます。
  • Storybook統合: SDCはStorybookと統合することができ、コンポーネントのドキュメント化と視覚的なテストを容易にします。
  • TailwindCSS統合: SDCはTailwindCSSなどのCSSフレームワークと組み合わせて使用できます。これにより、迅速かつ柔軟なスタイリングが可能になります。
  • Alpine.js統合: SDCコンポーネントにAlpine.jsを統合することで、軽量なインタラクティブ機能を追加できます。

これらの高度な機能を活用することで、SDCはより強力で柔軟なコンポーネント開発システムとなります。

5. SDCの将来展望

SDCは現在も活発に開発が続けられており、将来的にはさらに多くの機能や改善が期待されています。

  • パフォーマンスの最適化: コンポーネントベースの開発により、必要なアセットのみをロードすることが可能になり、サイトのパフォーマンスが向上する可能性があります。
  • エコシステムの成長: SDCの普及に伴い、再利用可能なコンポーネントのライブラリやツールが増加することが予想されます。
  • フロントエンドフレームワークとの連携: ReactやVueなどのフロントエンドフレームワークとSDCの統合が進む可能性があります。
  • AIとの統合: 将来的には、AIを活用したコンポーネント生成や最適化ツールとSDCが連携する可能性もあります。

SDCは、Drupalのフロントエンド開発に大きな変革をもたらす可能性を秘めています。継続的な開発と改善により、SDCはDrupalエコシステムにおいてますます重要な役割を果たすことが期待されます。

まとめ

Drupal 10で導入されたSingle Directory Components (SDC)は、テーマ開発を革新する新しいアプローチです。SDCは、コンポーネントの全ファイルを1つのディレクトリにまとめ、開発効率と保守性を向上させます。主な利点には、コード整理の改善、再利用性の向上、自動化などがあります。 実装は比較的簡単で、必要なファイルを作成し、YAMLでコンポーネントを定義します。SDCは高度な機能も提供し、バリアントの作成やStorybookとの統合が可能です。 将来的にはパフォーマンスの最適化、エコシステムの成長が期待されています。SDCは、Drupalのフロントエンド開発に大きな変革をもたらす可能性を秘めています。

amazee.io 
Kuniyoshi Toneの写真

この記事を書いた人: Kuniyoshi Tone

ANNAI株式会社

デジタルマーケティングを担当。金剛山を遠くに眺めて大阪からリモートワークしています。