こんにちは!スタジオ・ウミのエンジニアの新田です。今回はストレージエンティティについて紹介したいと思います。

ストレージエンティティとは

ストレージエンティティとはデータ保存に特化したエンティティです。

コアにはまだ入っておらず、こちらのモジュールをインストールすると使用できるようになります。

ストレージエンティティの特徴

ストレージエンティティの特色として、デフォルトでは表示画面が無いということが挙げられます。(オプションで表示画面を作ることは可能です)

↓ビュータブが無いストレージの編集画面

ですが、コンテンツエンティティの一種なので、他のコンテンツエンティティと同様に

  • 管理画面でのバンドルやフィールドの追加機能
  • リビジョン機能
  • 翻訳機能
  • Views
  • JSON:APIやREST APIからの出力機能
  • ワークフロー機能
  • マイグレーション

などの機能を使うことができます。

装飾の無い、シンプルなエンティティといった感じで、デフォルトでは最小限の機能しかない反面、汎用性が高いです。

「データ保存に特化した」と書きましたが、カスタマイズ次第でいろいろな機能を付けることができるので、何か特殊な機能を持ったカスタムエンティティを作る際の雛形として使うのもアリだと思います。

ノードとの比較

ノードもよくデータ保存目的で使われますが、ストレージはディスプレイやURLが生成されないので、ノードに比べ軽量です。ただリビジョン比較機能や各種APIなどノードにしかない機能もあるので注意が必要です。

ノード ストレージ
ディスプレイ機能 ○(オプションで付けることができる)
URLエイリアス
リビジョン比較機能

パラグラフとの比較

ノードなどの一部のフィールドをセクション化するためによくパラグラフが使われていますが、パラグラフはあくまで親エンティティがあることを前提に設計されています。それに対しストレージは単純なエンティティ参照なので、親エンティティや自分を保存したときの挙動が違います。

パラグラフ ストレージ
親エンティティが無くても表示・編集できる X
複数エンティティで使い回せる X
親エンティティ編集時に編集できる ○(Inline Entity Formが必要※)
自分を更新すると親エンティティも更新される ☓(親エンティティに影響があるのはストレージを追加/削除した場合のみ)
親エンティティのリビジョンを巻き戻すと自分のリビジョンも巻き戻る

Inline Entity Formは親エンティティのフォームで参照先エンティティの内容を編集することができるモジュールです。(↓ 「材料」の中身がストレージ)親エンティティのフォームからストレージを編集するには必須になります。

ストレージエンティティに最適なケース

ストレージを使うのに最適なケースは以下になります。

ディスプレイが不要なコンテンツがある場合

  • ヘッドレスの場合
  • 計算の中間値など内部で保持したい値がある場合

複数のフィールドをひとかたまりにしたい場合

特に、

  • 複数のエンティティで参照したい場合
  • 親エンティティを巻き戻したときにストレージが巻き戻らなくても大丈夫な場合

というわけで、ストレージエンティティの紹介でした。弊社でも最近はいろいろなプロジェクトで使っています。便利なのでぜひ使ってみてくださいね。


共に働く新しい仲間を
募集しています

スタジオ・ウミは「Drupal」に特化したサービスを提供する Drupal のエキスパートチーム。
フルリモート&フレックス制だから、働く場所を選ばず時間の使い方も自由です。
そんなワークライフバランスの整った環境で、当ブログに書かれているような
様々な技術を共に学びながら、Drupalサイト開発に携わってみたい方を募集しています。
まずはお話だけでも大歓迎!ぜひお気軽にご連絡ください。