既存のDrupalフィールドを再利用する必要がありますか?

公開: 2022-02-16

時々、私たちは本当に明確なアドバイスを与えることができます:「これをしなさい!」 または「それをしないでください!」

これはそれらのブログ投稿の1つにはなりません。

Drupalを使用すると、フィールドを再利用できます。 「画像」フィールドがある場合は、サイトのすべてのコンテンツタイプで同じフィールドを使用することを選択できます。 ただし、フィールドを再利用することが良い考えであるかどうかは必ずしも明確ではありません。 ある場合もあればそうでない場合もあります。

Drupalフィールドを再利用する前に考慮すべき長所と短所の概要は次のとおりです。

フィールドの再利用に関する一般的なアドバイス

[構造]、[コンテンツタイプ]の順に移動し、コンテンツタイプとして[フィールドの管理]をクリックするたびに、[既存のフィールドを再利用する]機能を選択できます。

Drupalフィールドを再利用する

Drupal.orgのドキュメントでは、フィールドを再利用しないことを公式に推奨しています。

明確な理由がない限り、既存のフィールドを再利用するのではなく、新しいフィールドを作成することをお勧めします。

ただし、そのアドバイスは近年より微妙になり、Drupalはそれが長所と短所の両方であると公式に述べています。

DrupalフィールドのUIドキュメントには、「フィールドの再利用」と呼ばれる詳細なセクションがあります。

フィールドを再利用する主な理由は2つあります。 まず、フィールドを再利用すると、新しいフィールドを定義する時間を節約できます。 次に、フィールドを再利用することで、コンテンツタイプ全体でフィールドごとにコンテンツを表示、フィルタリング、グループ化、および並べ替えることもできます。 たとえば、寄稿されたビューモジュールを使用すると、コンテンツのリストとテーブルを作成できます。 したがって、複数のコンテンツタイプで同じフィールドを使用する場合は、それらのコンテンツタイプをすべて含むビューを作成して、そのフィールドを表示したり、そのフィールドで並べ替えたり、そのフィールドでフィルタリングしたりできます。 フィールドを再利用しない主な理由が1つあります。それは、異なる権限です。 たとえば、フィールドが追加されたコンテンツタイプに応じて、フィールドへのアクセスレベルを変えるために、異なるユーザーロールが必要になる場合があります。 フィールドを再利用する場合、これは難しい場合があります。

利点:フィールドを再利用すると、より簡単になります

はい、速度を上げることができますが、時間の節約は非常に小さいです。 より説得力のある利点は、フィールドを再利用するとサイト管理が簡単になる場合があることです。 Webイニシアチブはこれをうまくまとめています:

フィールドを再利用することで、システムの複雑さを軽減することもできます。 Drupal管理者は、10個の異なるフィールドを作成して維持する代わりに、2つのフィールドとそのドキュメントのみを維持します。 データベース管理者は、2つの追加テーブルのパフォーマンスを改善するだけで済みます。 KISSは常に良い原則です。

10個の一意のフィールドよりも、1つの再利用されたフィールドに権限、設定、および設計要素を適用する方が間違いなく簡単です。

利点:一部のコンテンツは、再利用されたフィールドでうまく機能します

Drupal FieldUIのドキュメントに戻ります。

フィールドを再利用すると、コンテンツタイプ全体でフィールドごとにコンテンツを表示、フィルタリング、グループ化、および並べ替えることもできます。 たとえば、寄稿されたビューモジュールを使用すると、コンテンツのリストとテーブルを作成できます。 したがって、複数のコンテンツタイプで同じフィールドを使用する場合は、それらのコンテンツタイプをすべて含むビューを作成して、そのフィールドを表示したり、そのフィールドで並べ替えたり、そのフィールドでフィルタリングしたりできます。

Drupal.orgのドキュメントに関するあるコメントライターは、ビューについて同じことを指摘しています。 彼らは、ビューが洗練された方法でコンテンツを組み合わせることができると指摘しています。 したがって、日付フィールドが異なる複数の異なるコンテンツタイプがある場合、ビューはそれらを1つのビューに結合できます。 ただし、ビューは並べ替えに関してそれほど洗練されていないことも指摘しています。 したがって、日付フィールドが異なる複数の異なるコンテンツタイプがある場合、ビューはそれらすべての異なる日付フィールドでコンテンツを並べ替えるのに苦労します。

短所:再利用されたフィールドは柔軟性がありません

Twitterのブランドンウィリアムズはこれをうまくまとめました:

最初は良いアイデアですが、数週間待ってください。変更が必要です。とにかく別のものを作成することになります。

大体において、再利用されたフィールドを選択すると、後でデータに簡単に加えることができる変更が制限されます。 また、各フィールドを個別に編集する必要があるため、更新にかかる時間もはるかに長くなります。

短所:フィールドを再利用すると、データのエクスポートや移行が困難になります

データをエクスポートする必要がある場合、または新しいバージョンのDrupalまたは別のプラットフォームに移行する必要がある場合は、フィールドの再利用が問題になる可能性があります。

以下に示すように、各Drupalフィールドには独自のデータベーステーブルがあります。 そのデータを抽出するのは難しい場合があります。 機能モジュール(Drupalデータをエクスポートする最も一般的な方法)は、共有フィールドで長い間苦労していましたが、現在のバージョンではより効果的に処理できます。

media_1392150946256.png

このアドバイスは、マルチサイトの使用に関する私たちの考えに似ています。 コードベースまたはデータベーステーブル間の依存関係の構築を開始するたびに、サイトが複雑になります。

長所または短所? パフォーマンス

Drupalのドキュメントでは、フィールドを再利用することで考えられる1つの利点について概説しています。

フィールドを再利用すると、Drupalの実行が速くなるだけでなく、プロジェクトの保守も容易になります。

Stack Overflowのこのスレッドには、パフォーマンスに関して非常に関連性のある議論があります。 このコメントが含まれています:

ただし、実際の問題は、フィールドの数です。 現在Drupal7にあるため、すべてのフィールドの完全なフィールド構成は、ロードされているかどうかに関係なく、すべてのリクエストでキャッシュからフェッチされます。 250以上のフィールドがあるサイトを見たことがありますが、フィールド構成のロードとアンシリアル化には13MB以上のメモリが必要です。」

したがって、フィールドを再利用すると、フィールドの総数を減らすことで、パフォーマンスがわずかに向上する可能性があります。

ただし、これらの小さな改善は他の場所では失われる可能性があります。 これもWebイニシアチブから:

[フィールド] Drupalシステムの複雑さ。 新しいフィールドを作成すると、フィールドの定義がフィールドクラステーブルに追加され、フィールドの構成がフィールドインスタンステーブルに追加されます。 その間に、フィールドデータを格納するための新しいテーブルがDrupalデータベースに追加されます。 データベーステーブルは、システムを複雑にします。 さらに、ノードのクエリでは、フィールドデータへのテーブルのJOIN式が発生します。 MySQLは、適切に構成されていない場合、テーブルの複数のJOINを使用したクエリへの応答が不十分であるため、複数のJOINはデータベースのパフォーマンスに影響を与えます。

概要

この質問に対する簡単な回答がないことをお詫び申し上げます。 これは、問題を読み、長所と短所を理解することでメリットが得られる質問です。 実際のサイト構築を行っている場合は、テスト環境でサイトを構築して、これらの長所と短所がサイトのニーズにどのように影響するかを学ぶ価値があります。