Drupal8においてECKとParagraphsどちらを使うべきか?

この記事は 「Paragraphs vs. ECK for Drupal 8」 の翻訳です。

ParagraphsはDrupalでサイトを構築する際に利用される人気モジュールです。しかし、私たちのチームはこのモジュールを完全に受け入れる事ができません。ここではその理由を説明します。私たちはDrupal8でのサイト構築にParagraphsではなく、ECK(Entity Construction Kit)モジュールを使用しています。
この記事では、なぜ私たちがParagraphsモジュールではなく、ECKモジュールを利用するのかを説明します。

普段、私達はECKとIEF(Inline Entity Form)の組み合わせによるアプローチで作成されたParagraphsのようなエンティティを「スライス」と呼んでいます。ここでも、便宜上この「スライス」という呼び名を使用させていただきます。

Paragraphsと、ECKとIEFの組み合わせによる手法の類似点

どちらの手法でも、作成するのに技術的な知識を必要とせず、柔軟な表示が可能な、構造化されたコンテンツの集合を作成できます。どちらもDrupalの多言語システム上で動作します。また、DrupalのEntity APIシステムを使用しているため、フィールドとして利用可能です。 テーマ開発を行う上でもECKとParagraphsは似ています。どちらもレンダリング要素を返し、バンドルとビューモードのテンプレート提案を提供します。

サイトビルダーの観点からみた場合

Paragraphs

Paragraphsはインストール後、すぐにノードに追加できます。Paragraphsタイプを追加しなかった場合にも、追加するための便利なリンクが表示されます。

ECKとIEF

初めてECK とIEFを使うと、「バンドル」と「エンティティ」の違いが分かりにくく、混乱を招くかもしれません。
まず、ECKエンティティタイプを作成し、その後バンドルタイプを設定します。次に、バンドルタイプへの参照を各コンテンツタイプのフィールドとして追加します。最後に、IEFを使用する各コンテンツタイプでフォームの表示を設定します。新しいバンドルタイプを追加した際には、そのバンドルタイプを利用するフィールドに対してそれぞれ設定を行う必要があります。これらを学ぶのはさほど難しくないですが、多少の慣れ必要です。

この勝負 Paragraphsの勝ち

コンテンツ編集の観点から見た場合

Paragraphs

フォームの設定ページでは、プレビューをアコーディオンメニュー内に表示する設定や、公開表示されている状態と同様の見え方をプレビューとして表示する設定などを各種のオプションから選択できます。また、Paragraphタイプのセレクタの表示を選択することもできます。

ECKとIEF

プレビュー表示が必要な場合は、Inline Entity Form Preview(IEFP)モジュールを使用する必要がありますが、ECK と IEFを使用すると、Paragraphsなどで提供される他のフォームオプションもすべて利用できます。

また、IEFPは表示設定を変更可能な「プレビュー」ビューモードを選択する機能も提供します。これらの設定には多少の手間はかかりますが、これらを適切に設定する事により、コンテンツをより編集しやすくなります。

 

量の多いコンテンツ部分に関しては、「編集モード」を適切に設定する事で、その部分を縮小表示することができます。

例えば、画像をより小さなサイズで表示するように設定することができます。また、エンティティを参照している部分については、直接インラインで表示する代わりに、ラベルとして表示することができます。これは、状況に応じて使い分けることができます。
 

どちらにも言える事

どちらも多くのエンティティを扱う作業の場合には、動作が遅く、使い辛いことがあります。 DrupalのTableDrag機能により編集者はコンテンツパーツを並べ替えることができますが、多くのコンテンツではうまく機能しません。今後、TableDragの機能のが改善されると、これらのモジュールやDrupal全体が恩恵を受ける事ができるでしょう。

この勝負 引き分け

 

edit form


「スライス」とParagraphsのコンテンツ編集フォームの比較

Paragraphsとインラインエンティティフォームの「プレビューモード」の比較です。両者のコンテンツ編集画面はとても似ています。

リビジョン機能の観点から見た場合

Paragraphs

Entity Reference RevisionsはParagraphsの必須モジュールです。そのため、特に設定をしなくてもリビジョンとの相性は良いです。

ECKとIEF

残念ながら、現時点でDrupa 8ではECKと IEFはリビジョン機能に対応していません。この問題の解決に向けて、取り組んでいるコントリビューターの多くはChapterthree社のメンバーです。

この勝負 Paragraphsの勝ち

検索機能の観点から見た場合

Paragraphs

Drupalのデフォルトの検索機能を利用した場合、特に追加の設定をせずに、親ノードの一部としてParagraphsエンティティのインデックスが作成されます。

ECKとIEF

ECKエンティティは、コアのDrupal検索でインデックスされます。フィールドが表示されていて、カスタムエンティティを表示する権限があることを確認してください。

この勝負 引き分け

エンティティの再利用の観点から見た場合

Paragraphs

Paragraphsが抱える問題点に関してはコチラをご覧ください。残念ながら、同じParagraphsを複数のページで再利用するのはなかなか困難です。ただし、Paragraphs内の他の種類のエンティティを参照することは可能です。

ECKとIEF

スライスをECKとIEF設定で簡単に再利用できます。また、ユーザーの機能の利用を簡単に制限することもできます。ユーザーがエンティティを再利用できる場合は、厳密な命名規則を持つことが重要です。 Entityシステムの潜在的な欠点は、タイトルを表示するかコンテンツを再利用するかに関わらず、各エンティティスライスに必須のタイトルフィールドがあることです。

この勝負 ECKとIEFの勝ち

柔軟性の観点から見た場合

Paragraphs
設定項目は、モジュールで設定可能な項目に限定されます。さらなるユーザーレベルの制御を行うには、Paragraphsに含まれているParagraphs Type Permissionモジュールを利用してください。

ECKとIEF
ECKとIEFには多くのオプションがあります。フィールドで使用可能なスライスタイプを制限することができます。 UIでの命名規則の変更、タイプごとのアクセス権の設定、ユーザーが既存のスライスを使用できるかどうかの設定、などこれ以外にも多岐にわたる設定が可能です。

さらに、ECKとIEFは、ノードに結び付けられていない構造化コンテンツや、Paragraphsタイプとして分類されるべき構造化コンテンツに役立ちます。最近、私たちの手掛けたプロジェクトでは、アコーディオンセット、ニュースレターリンク、行動を促すフレーズ、おすすめコンテンツなどを保持するために、「チャンク」と呼ばれるエンティティを作成しました。

この勝負 ECKとIEFの勝ち

ユニークURLの観点から見た場合

Paragraphs

Paragraphsは、(ノードのような)参照されたコンテナにアクセスすることによってのみアクセスできます。

ECKとIEF

各エンティティはそれぞれ、独自のURLを持ちます。しかし、ほとんどの場合、これら種類のエンティティは独自のURLを持つ必要はなく、それを隠すためにRabbit Holeのようなモジュールを使用するのが最善です。

この勝負 Paragraphsの勝ち

サポートの観点から見た場合

Paragraphs

サイトビルダーとしてParagraphsを使用方を学ぶ際の情報ソースとしては、多くのブログやチュートリアル、Drupal Campのセッションがあります。

ECKとIEF

ECKとIEFに関する初心者の向けのチュートリアルは、あまり存在しません。もし、あなたがカスタム機能の実装に苦戦しているようでしたら、解決策を見出すのには時間がかかるかもしれません。

この勝負 Paragraphsの勝ち

Paragraphsは設計されたものに最適です。構造化されたコンテンツでリビジョンを扱うには、Paragraphの利用が唯一のモジュールによる解決策です。開発チームを持たない、サイト制作者や、Paragraphsの標準機能を超えたカスタマイズする時間や必要がないケースにはParagraphsは非常に魅力的です。

しかし、Entity Construction KitとInline Entity Formを使用することで、ほぼ同じ機能を実現できます。初期設定は直感的ではなく、時間がかかりますが、拡張性とカスタマイズ性に関してはこちらに軍配が上がります。

小規模でシンプルな仕様のサイトにはParagraphsで十分かもしれません。しかし、将来的な拡張性を重視するのであれば、Entity Construction KitとInline Entity Formの組み合わせが必要です。

Chapterthree社では、しばしばクライアントと長期的な関係を構築しています。その間に、多くのケースにおいてクライアントの求める要求が変わり、それに伴い仕様が変更されることも多くあります。通常、私たちは長期的な仕様変更に柔軟に対応するためParagraphsではなく、ECKとIEFを選択します。ECKとIEFを選択する事により、最先端のコンテンツ編集機能を提供し、常に変化するお客様のニーズにお応えします。

この記事に対するANNAIのコメント

ブログ用のようなサイトや、十分な開発リソースがない場合はParagraphsを選択するのがいいでしょう。

逆にコンテンツをViewsやAPIで積極的に再利用するような場合は、将来的な変更や拡張を考慮してECKを使うほうがメンテナンスしやすいサービスを構築できます。

Drupalお役立ち資料ダウンロード