ANNAIマガジン
Group モジュールロゴ
この記事の目次

今回、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系 への移行作業が必要となります。

Group モジュールのアップグレードパスの図解

なお、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 系の利用が推奨されます。

 
フッターの採用情報
 
Mori Sugimotoの写真

この記事を書いた人: Mori Sugimoto

2006 年から欧米の大規模 Drupal 案件で開発・アーキテクチャーやコンサルティングなどを担当。コア・拡張モジュールの翻訳、また国内外でのミートアップのオーガナイズや Drupalcon での登壇およびボランティアなど積極的にコミュニティに参加。2008 年より Drupal Security Team コーディネーターを務める。オランダ在住。

関連コンテンツ