今回、ANNAI のスポンサーのもと Group モジュールに新機能が追加され、2.0.0-beta1 および 3.0.0-beta1 としてリリースされました(2023/01 の時点での最新版は 2.0.0-beta6 / 3.0.0-beta6)。なお、2 つのバージョンが同時に公開された理由は後に詳述します。
Group モジュールとは?
Group モジュールは、多数のログインユーザーを持つサイト上において、Drupal コアのロールや権限では実現できない複雑なアクセス管理を、グループを作成することで可能にするモジュールです。例えば、部署ごとにグループを作成し、それぞれのグループ内のページを閲覧できるのはグループメンバーのみとなるよう設定するという使い方が可能です。
なお、ANNAI は Group 1.0 の安定版のリリースの際にもスポンサーを行いました。
Group モジュールはドイツで Drupal を専門とするソフトウェア開発会社 Factorial に所属する Kristiaan van Den Eynde により開発・メンテナンスされています。
Group の新機能
リリースノートにある通り、Group 2.0.0-beta1 および 3.0.0-beta1 には様々な変更が含まれていますが、その中でも大きな変更は設定エンティティー(config entity)を扱う機能です。この機能に対する要望は 2016 年の時点で挙がっており、280 以上のコメントや多くのパッチをもとに様々な試行錯誤が行われていたものの、完成には至っていませんでしたが、今回 ANNAI のスポンサーシップに基づき新機能として追加されました。
これにより Group 2 系および 3 系では、たとえば Webform モジュールで作成するフォームの閲覧や管理の権限を Group で扱えるようになりました。Webform の設定はコンテンツではなく設定エンティティーに基づくため、Group 1 系では Webform モジュールに絡む権限の制御を行うことはできず、Drupal コアの提供する権限でしかアクセス制御できませんでした。
なお、現時点では新機能は GUI が提供されていないため、API からのみ利用が可能です。
バージョン 2 系と 3 系はどう違う?
簡単にお答えすると、2 系と 3 系は機能的に完全に同一です。では、どちらを選ぶべきなのでしょう?その答えは、リリースノートにあります。(2.0.0-beta1 / 3.0.0-beta1)
既に Group 1 系を利用している場合、アップグレード先は 2 系になります。一方、Group を新たに導入する場合、3 系を利用するのがお勧めです。
2 系 と 3 系 の具体的な違いは、コード内にあるエンティティータイプの機械名にあります。新機能の導入に伴い、エンティティータイプの機械名を従来のものに据え置きすることで開発者が混乱することが懸念されました。ただし機械名を変更してしまうと、この機械名に頼る他のモジュールが機能しなくなってしまいます。このように、1.x との互換性を保つために 2.0.0 が用意されました。
1 系から 2 系にアップグレード後、Group モジュールを拡張する他の contrib およびカスタムモジュールの API を 3 系に準拠するよう変更できたら、3 系にアップグレード可能になります。
以下の図のように、1系 はサポート終了となり、2系 は 3 または 4系 への移行作業が必要となります。
なお、Kristiaan のリリースノートのタイトルはウィットに富んでいるものが多く、比較的大きな変更を含むリリースの際のタイトルは必見です。以下に自分の好きなものをいくつか共有します:
8.x-1.0-rc5
「金曜日午後 4 時、2 週間のクリスマス休暇前だけど問題なんて起きないよね?」(年末の長期休暇シーズンを前に大きな変更を導入した際のもの)
8.x-1.0
「ここに至ったなんて信じられない。今後の人生何して過ごそう?」(2014 年に初めて unstable をリリースして以来、6 年越しに初めて安定版をリリースした際のもの)
8.x-1.2
「降るときは土砂降り」(セキュリティー問題やその他の不具合が続けて発見された際のもの)
8.x-1.4
「タイムトラベルが可能に」(グループエンティティーがリビジョンをサポートするようになった際のもの)
Group モジュールのリリースノートの一覧:https://www.drupal.org/project/group/releases/
まとめ
Drupal コアでは実現が難しい綿密なアクセス制御を Group は可能にしてくれます。新しいバージョン 2 系および 3 系では、ANNAI のスポンサーシップにより設定エンティティーの管理を可能とする機能が追加され、この新機能は API からの利用可能です。すでに 1 系を利用している人は 2 系へ、Group を新規導入する場合は 3 系の利用が推奨されます。
関連コンテンツ
- Drupal 9 におすすめのモジュール
- ANNAI の貢献による Group モジュールの安定版リリースと Subgroup モジュールの開発
- Drupal 8 Twigテンプレートの変数のデバッグ
- Drupal サイトの構成設定を診断するには
- Drupal8のTomeモジュールで静的サイトを生成する
- Drupal8でWordPressの新エディターGutenbergを使ってみた
- Drupal のレイアウトビルダが持つ強力な機能と独自の特徴
- Developers Festa Sapporo 2018で Webシステム開発基盤としてのDrupal を紹介してきました
- Open ID Connectを用いて、GoogleアカウントでDrupalにログインする
- 開発者向け:Drupal 8においてECKとParagraphsどちらを使うべきか?
Drupal 初心者講座バックナンバー
- Drupal 9/10 初心者講座
- 第 1 回 歴史に見る Drupal の DNA
- 第 2 回 Drupal はフレームワークか?CMS か?他の CMS との比較
- 第 3 回 Drupal の特徴
- 第 4 回 Drupal 9 / 10 のインストール (1)
- 第 5 回 Drupal 9 / 10 のインストール (2)
- 第 6 回 Drupal にコンテンツを投稿してみる
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 9 回 Drupal のブロックシステム
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 14 回 Drupal のテーマシステムについて
- 第 15 回 Drupal の拡張モジュールの選定と使い方
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報