本日は Drupal (ドルーパル)の「 Rules 」モジュールのご紹介をできればと思います。

Rules モジュールは、サイト管理者と開発者の橋渡し的な役割を担うモジュールで、しっかり使いこなせるとサイト管理者としても開発者としても得る恩恵の多い便利モジュールです。

Drupal の無数のモジュールの中でも最もよく使われているもののひとつで、 Drupal.org のランキングでも常に上位に位置しています。 全面的に Rules をベースに作られている他のモジュールなどもあったりして、コントリビュートモジュールではありますが Drupal のコアと同等の扱いをされる定番モジュールのひとつです。

まずはじめに Rules モジュールとは何ぞやという説明をした後に実際の使い方をかんたんにご紹介したいと思います。 ちなみに今回の操作画面のイメージは Drupal 7 のものになります。

Rules モジュールとは

Drupal の Rules モジュールとは、その名前のとおり「ルール」を作成できるモジュールです。 処理を行いたい「条件」と処理の「内容」を管理画面から登録すると、 Drupal サイトが動いている中のさまざまなタイミングで処理を行うことができます。

たとえていうなら、ブロックの「レゴ」に近いイメージでしょうか。

プログラミングというのは平たくいえば「いつどういう場合に何をする」というのをブロックのようにいくつも組み合わせていく作業ですが、これをひとつの Web サイト上で実現できるのが Drupal + Rules です。 Rules を使うと、開発者は「処理のパーツを用意する」ことに専念し、サイト管理者はサイトの目的に合わせて「処理のパーツを組み合わせて好きな処理を作る」ことができます。

具体的には、たとえば次のような処理の設定を、コードを触らずすべて管理画面上から行えます。

  • 新しいコンテンツが作成されたときに任意のアドレスにメールを送る
  • ユーザがログインしたときにユーザ向けメッセージを表示する

ログインしたときにメッセージを表示する「ルール」の例を見てみましょう。

ログインします。

Drupal Rules モジュール 動作イメージ 01

すると、ユーザ名を含んだ形でウェルカムメッセージが表示されました。

Drupal Rules モジュール 動作イメージ 02 ログインメッセージ

Rules モジュールの使い方

Rules モジュールの使い方をかんたんに見てみましょう。 今回はサンプルとして上掲の「ユーザがログインしたときにメッセージを表示する」ルールを作成してみます。

  • インストール
  • ルールの作成

インストール

まずは Rules モジュールをインストール / 有効化します。 インストール方法は他のモジュールと同じで、外部のライブラリを別途入れる必要などもないため、以下の記事などを参考にしていただければと思います。

Drupal 開発者の友 Drush が使える場合は Drupal プロジェクトのディレクトリに移動して次のコマンドを実行しましょう。 環境が整っていればこちらのコマンドひとつでモジュールのインストールと有効化が行われます。

$ drush en rules

こちらでもよくご紹介していますが、 Drupal 開発を本格的に行う場合にはコマンドラインツール Drush がたいへん便利です。 WordPress でいう wp-cli 、 Symfony でいう symfony コマンドと似た drush コマンドが使えるツールなので、 Drupal 開発に興味があってまだ導入していない方はぜひ試してみてください。

ルールの作成

モジュールをインストールしたら、早速ルールを作成してみましょう。 ここでは、 Rules の基本単位となる「処理の条件と行いたい内容のセット」のことをルールと呼んでいます。

管理画面からログインして Rules の管理ページ( /admin/config/workflow/rules )を開きます。

Drupal Rules モジュールの使い方 ルールの新規作成

「 Add new rule 」をクリックして、ルールの新規作成ページに移動しましょう。

ひとつのルールは次の 3 つのものから構成されています。 ルールの作成はこれらを順に設定していく流れになります。

  1. イベント - 処理を行いたいタイミング。いわゆる WHEN
  2. 条件 - 処理を行う条件。 WHEN をさらに絞り込むために使う。
  3. アクション - 処理の内容。いわゆる WHAT

まずはルールの名前イベントの種類を選択しましょう。 イベントの種類はモジュールによってあらかじめ用意されているイベントの中から目的に合わせてひとつを選択する形になります。

Drupal Rules モジュールの使い方 ルールの名前入力とイベントの選択 01

ここは例として「名前」に「 Show welcome message 」と入力し、「 React on Event 」は「 User has logged in 」を選択します。 こちらはユーザが Drupal サイトにログインしたときに起動するルールです。

Drupal Rules モジュールの使い方 ルールの名前入力とイベントの選択 02

保存をクリックするとルールの条件アクションを設定するページに移ります。 条件としては、現在ログイン中のユーザや閲覧中のページ、ノードのステータスなどを見て設定することができます。

Drupal Rules モジュールの使い方 条件とアクションの設定

今回は条件はパスして、アクションの部分を入れていきましょう。 アクションもイベントと同様に、あらかじめ用意されているものの中からいくつかを選択します。 今回は一覧の中から「 Show a message on the site 」を選択してみましょう。

ページが切り替わるので「メッセージ」のところにページに表示したいテキストを入力します。

Drupal Rules モジュールの使い方 アクションの設定 メッセージの場合

Token モジュールをインストールしていれば、テキスト内で [] で囲った特別な文字列を使うこともできます。 これはページに実際に表示されるときに自動的に別のテキストに置き換えられます。 たとえば [account:name] だと現在ログイン中のユーザ名、 [site:name] だとサイト名が表示される形になります。

今回は Token モジュールもインストールされている場合を考えて次のように入力しましょう。

ようこそ [account:name] さん。あなたは [site:name] にログインしました。あなたの最終ログイン日時は [account:last-login] です。

最後に「保存」をクリックしてルールを保存しましょう。

これにてルールの作成は完了です。 これでログインすると、上掲のとおりのメッセージが表示されるようになります。

Drupal Rules モジュール 動作イメージ 02 ログインメッセージ

ちなみに最後の「アクション」は複数個設定することができ、直列でいくつもの処理を連続的に実行することが可能です。 アクションによってはパラメータを受け取ったり返したりするものもあるので、処理結果を数珠つなぎにして次々と値を受け渡していくことなんかもできます。

以上です。 いかがだったでしょうか?

今回は Drupal のコントリビュートモジュール「 Rules 」をご紹介しました。 モジュールの概要がご理解いただけたでしょうか?

今回ご紹介した例はごくシンプルなものでしたが、他のルールの場合でも基本は同じです。 「イベント」「条件」「アクション」をレゴのように組み合わせて本当にさまざまなことが実現できるので、ご存知でなかった方はぜひ一度利用してみてください。

個人的には以下のような特徴からコンピュータサイエンスの教育利用にもこの Rules はうってつけではないかと思います。

  • いま多くの人が親しんでいる Web サイトの技術を使って
  • プログラミング言語を覚えなくても
  • アルゴリズムを自分で自由に考えて処理を組むことができる
  • Web サイトだから他の人に見せるのもカンタン

ちなみに Rules がデフォルトで提供するイベントやアクションのパターンには限りがありますが、他のモジュールでも Rules 用のルールが多数提供されています。

Drupal で「こんなことできないかな」と思ったとき、その機能を直接提供するモジュールを探すのもひとつですが、 Rules のルールを組み合わせて自作するのもひとつのアプローチです。

プログラミングを行わなくてもクリエイティビティ次第でいろんなことができるーーこのあたりも CMS の大きな魅力のひとつかと思いますので、利用がまだの方はぜひ試して活用してみていただければと思います。