Monday, June 29, 2020

Liferayテーブルを見てみよう〜ユーザ情報編

こんにちはナクラです。

暑くなったり、少しすごしやすくなったりと気候がころころ変わるこの頃ですが、
徐々に真夏に近づいているのを実感する毎日ですね。

さて、今日はLiferayのデータベースのテーブルについて書きたいと思います。
Liferayでは253ものデータベーステーブルが用意されています。
なので、全体にたいしてER図を描くのはあまり現実的ではないのです。

また、ユーザインタフェース上の設定項目が実際にはどのテーブルに登録されているのかをまとまって見られる資料もなかなか良いものがないので、
ここで、個別に確認していってみようと思います。

今回はユーザの設定画面について確認していくことにしましょう。
ユーザの情報はコントロールパネルの
[ユーザ] > [ユーザと組織] の項目から確認できます。
個別のユーザの情報を見ると
次の図のようになっています。



ユーザ情報の画面では、このように
・共通タブ
・連絡先タブ
・表示設定タブ
の3つのタブがありますので、一つづつ見ていきましょう。


共通タブ

まず共通タブから見ていきます。
共通タブの中にもいくつかの項目があります。
  • 情報
  • 組織
  • メンバーシップ
  • ロール
  • プロフィールとダッシュボード
  • パスワード
  • アプリ

それぞれを見ていきましょう。

【情報】
この画面の設定項目の大半は
ユーザ情報のメインのデータであるUser_テーブルに含まれている情報です。
User_テーブルは最後に"_"がついているのに注意してくだあい。
よくつけ忘れてテーブルがない!と慌ててしまうことがあります。)

ただし、
性別、生年月日、サフィックスについては
Contact_テーブルに含まれる情報になっています。(これも"_"がついています)
また、
詳細情報のセクションについては各設定項目でテーブルが違っています。
カテゴリについては
AssetEntryAssetCategoryRelテーブル
+--------------------------------------+-------------+------+-------+-----------+-------+
| Field                                   | Type        | Null | Key  | Default | Extra |
+--------------------------------------+-------------+------+-------+-----------+-------+
| mvccVersion                          | bigint(20) | NO  |         | 0          |         |
| assetEntryAssetCategoryRelId | bigint(20) | NO  | PRI   | NULL    |         |
| assetEntryId                          | bigint(20) | YES  | MUL | NULL    |         |
| assetCategoryId                     | bigint(20) | YES  | MUL | NULL    |         |
| priority                                 | int(11)      | YES  |        | NULL    |         |
+-------------------------------------+--------------+------+--------+----------+-------+

タブについては
AssetEntries_AssetTagsテーブル
+---------------+------------+-------+-------+-----------+-------+
| Field          | Type       | Null | Key  | Default | Extra |
+---------------+------------+-------+-------+-----------+-------+
| companyId | bigint(20) | NO  | MUL | NULL    |          |
| entryId      | bigint(20) | NO  | PRI   | NULL    |          |
| tagId         | bigint(20) | NO  | PRI   | NULL    |          |
+---------------+------------+-------+-------+-----------+-------+
に情報が登録されます。
ユーザのuserIdの値が
AssetEntryAssetCategoryRelではassetEntryIdのカラムに
AssetEntries_AssetTagsではentryIdのカラムに
設定されます。

カルタムフィールドについてはExpandoという機構を利用していますが、
これについては別の機会にお話したいと思います。

【組織】
ユーザが所属する組織の情報については
Users_Orgsテーブル
+-------------------+-------------+-------+------+-----------+-------+
| Field               | Type        | Null | Key | Default | Extra |
+-------------------+-------------+-------+------+-----------+-------+
| companyId      | bigint(20) | NO   | MUL | NULL    |        |
| organizationId | bigint(20) | NO   | PRI  | NULL    |        |
| userId             | bigint(20) | NO   | PRI  | NULL    |        |
+--------------------+------------+------+--------+----------+-------+
に設定されています。

【メンバーシップ】
ユーザが所属するサイトの情報については
Users_Groupsテーブル
+---------------+--------------+------+-------+-----------+-------+
| Field          | Type         | Null | Key | Default  | Extra |
+---------------+--------------+------+-------+-----------+-------+
| companyId | bigint(20) | NO   | MUL | NULL     |         |
| groupId      | bigint(20) | NO   | PRI  | NULL     |         |
| userId        | bigint(20) | NO   | PRI  | NULL     |         |
+---------------+--------------+------+-------+-----------+-------+
に設定されています。

ユーザが所属するユーザグループの情報については
Users_UserGroupsテーブル
+-----------------+-------------+-------+-----+-----------+--------+
| Field            | Type        | Null | Key | Default | Extra |
+-----------------+-------------+-------+------+----------+--------+
| companyId   | bigint(20) | NO   | MUL | NULL   |         |
| userId          | bigint(20) | NO   | PRI  | NULL    |         |
| userGroupId | bigint(20) | NO   | PRI  | NULL    |         |
+-----------------+-------------+-------+------+----------+--------+
に設定されています。

【ロール】
ユーザが割り当てられているロールの情報については
Users_Rolesテーブル
+---------------+-------------+-------+-------+-----------+--------+
| Field          | Type        | Null | Key   | Default | Extra |
+---------------+-------------+-------+-------+-----------+--------+
| companyId | bigint(20) | NO   | MUL | NULL     |          |
| roleId        | bigint(20) | NO   | PRI   | NULL     |          |
| userId        | bigint(20) | NO   | PRI   | NULL     |         |
+---------------+-------------+-------+-------+-----------+--------+
に設定されています。


【プロフィールとダッシュボード】
この項目からはユーザ個人の公開サイト(プロフィール)、非公開サイト(ダッシュボード)へ移動できます。
ユーザの個人サイトの情報は
Group_テーブル
+----------------------------------+-----------------+------+---------+-----------+-------+
| Field                                  | Type            | Null | Key    | Default | Extra |
+----------------------------------+-----------------+------+---------+-----------+-------+
| mvccVersion                      | bigint(20)     | NO   |         | 0            |         |
| uuid_                                | varchar(75)   | YES  | MUL  | NULL      |         |
| groupId                             | bigint(20)      | NO   | PRI   | NULL      |         |
| companyId                        | bigint(20)      | YES  | MUL  | NULL      |         |
| creatorUserId                    | bigint(20)      | YES  |         | NULL      |         |
| classNameId                      | bigint(20)      | YES  | MUL  | NULL      |         |
| classPK                              | bigint(20)      | YES  |        | NULL       |         |
| parentGroupId                   | bigint(20)      | YES  |         | NULL      |         |
| liveGroupId                        | bigint(20)     | YES  | MUL  | NULL      |         |
| treePath                            | longtext        | YES  |        | NULL       |         |
| groupKey                           | varchar(150)  | YES  |        | NULL       |        |
| name                                 | longtext        | YES  |        | NULL       |        |
| description                        | longtext        | YES  |         | NULL       |        |
| type_                                | int(11)           | YES  | MUL | NULL       |        |
| typeSettings                      | longtext         | YES  |        | NULL       |        |
| manualMembership            | tinyint(4)       | YES  |        | NULL       |        |
| membershipRestriction      | int(11)           | YES  |        | NULL       |         |
| friendlyURL                       | varchar(255)  | YES  |        | NULL       |         |
| site                                   | tinyint(4)       | YES  |        | NULL       |         |
| remoteStagingGroupCount | int(11)           | YES  |        | NULL       |         |
| inheritContent                   | tinyint(4)       | YES  |        | NULL       |        |
| active_                              | tinyint(4)       | YES  |        | NULL       |        |
+----------------------------------+------------------+-------+-------+------------+-------+
に設定されています。
このテーブルのClassPKカラムの値にユーザのuserIdと同じ値が設定されているものがユーザ個人のサイトになります。

【パスワード】
パスワードについては
User_テーブルのpassword_カラムに値が登録されています。

【アプリ】
デフォルトでは設定されていません。

連絡先タブ

次に連絡先タブについてみていきましょう。
連絡先タブには
  • 住所
  • 連絡先情報

の2つの項目があります。


【住所】
ユーザの住所情報については
Addressテーブル
に登録されます。

【連絡先情報】
ユーザの連絡先情報については、いろいろな項目があります。
各々の設定については以下のようになっています。
  • 電話番号       :Phoneテーブル
  • 追加メールアドレス  :EmailAddressテーブル
  • Webサイト       :Websiteテーブル
  • Jabber       :Contact_テーブルのjabberSnカラム
  • Skype        :Contact_テーブルのskypeSnカラム
  • SMS        :Contact_テーブルのsmsSnカラム
  • Facebook       :Contact_テーブルのfacebookSnカラム
  • Twitter         :Contact_テーブルのtwitterSnカラム
  • OPEN ID      :User_テーブルのopenIdカラム



表示タブ

最後の表示設定タブについてみていきましょう。
表示設定タブには

  • 通知設定
  • 表示設定

の2つの項目があります。


【通知設定】
ユーザの通知設定情報については
AnnouncementsDeliveryテーブル
+----------------+---------------+-------+--------+----------+--------+
| Field           | Type           | Null | Key   | Default | Extra |
+----------------+---------------+-------+--------+----------+--------+
| deliveryId   | bigint(20)    | NO   | PRI   | NULL    |          |
| companyId  | bigint(20)    | YES  | MUL | NULL    |          |
| userId         | bigint(20)    | YES  | MUL | NULL    |          |
| type_          | varchar(75) | YES  |        | NULL    |          |
| email          | tinyint(4)    | YES  |        | NULL    |          |
| sms            | tinyint(4)     | YES  |        | NULL    |          |
| website      | tinyint(4)     | YES  |        | NULL    |          |
+----------------+---------------+-------+--------+---------+---------+
に設定されています。
表示設定の項目で
共通は"general"
ニュースは"news",
テストポートレットは"test"
がtype_に設定されます。

【表示設定】
標準時についてはUser_テーブルのtimezoneIdカラム
あいさつ文についてはUser_テーブルのgreetingカラム
に設定されています。

以上で、ユーザ情報の設定項目に対応するデータベースのテーブル情報について
確認できました。
ユーザに関連する情報だけでも、さまざまなテーブルが利用されていることがわかりましたね。
Liferayではデータの追加・削除はデータベースを直接操作するのが推奨されていない理由が体感していただけたのではないでしょうか。

それでは、次回はまた別の設定項目についてみていきたいと思います。


Monday, June 22, 2020

Liferayでアクセス解析ツールを設定してみよう

こんにちは。大谷です。

Webサイトの運用にあたっては、どのページがよく見られているか、流入や離脱はどのようになっているのかなどのアクセス解析を通じて、ユーザー行動や成果を可視化し、Webサイトの改善につなげていきたいですよね。一般的にはGoogle Analyticsをはじめとするアクセス解析ツールが用いられますが、Liferayで作成したWebサイトについてもこれらのアクセス解析ツールを利用することができます。

そこで今回は、Liferayで構築したサイトへのアクセス解析ツールの設定方法を紹介したいと思います。大きく3つの方法があるので、それぞれについて説明します。

1. Google AnalyticsのトラッキングIDを指定する


Liferayは、Google AnalyticsのトラッキングIDを指定するだけでトラッキングコードを埋め込むことができます。設定方法は以下のとおり、とても簡単です!

1. こちらのドキュメントを参考にしてGoogle Analyticsをセットアップし、トラッキングIDを入手する。
2. Liferayにログインしてアクセス解析対象のサイトに移動し、「設定」->「サイト設定」->「詳細設定」タブを開く。
3. 「Google アナリティクスID」に先ほど入手したトラッキングIDを入力して「保存」をクリックする。

これでトラッキングコード埋め込み完了です。Google Analyticsでアクセス解析できるようになります。以下、2点ほど注意点があります。

  • 設定はサイト毎に行う必要があります。多数のサイトをアクセス解析対象とする場合は3.の方法を検討した方がよいかもしれません。
  • 埋め込まれるタグはGoogleアナリティクスタグ(analytics.jsスニペット)です。グローバルサイトタグ(gtag.jsスニペット)を埋め込みたい場合は2.の方法を検討してください。

2. アクセス解析ツールのトラッキングコード(タグ)を埋め込む


また、Liferayでは指定したアクセス解析用トラッキングコードをそのまま埋め込むこともできます。例えば、Matomo(旧Piwik)やAdobe AnalyticsなどGoogle Analytics以外のアクセス解析ツールを利用したり、Google Analyticsでもグローバルサイトタグを埋め込みたい場合はこの方法が便利です。

1. 利用するアクセス解析ツールをセットアップし、トラッキングコードを入手する。
2. Liferayに管理者でログインし、「コントロールパネル」->「設定」->「インスタンス設定」->「その他」タブを開く。
3. 「分析」欄にアクセス解析ツールの名前を追記して「保存」をクリックする(名前は区別がつけばよいだけなので適当でOK。以下の例では「gtag.js」を追加)。


4. アクセス解析対象のサイトに移動し、「設定」->「サイト設定」->「詳細設定」タブを開く。
5. 先ほど追加した項目にトラッキングコードを入力して「保存」をクリックする。


これでトラッキングコードが埋め込まれます。1.の方法と同様、サイト毎に設定を行う必要があります。

3. カスタムテーマにトラッキングコード(タグ)を埋め込む


多数のサイトに一括でトラッキングコードを埋め込みたい場合は、カスタムテーマにトラッキングコードを記述し、カスタムテーマを適用した全てのサイトにトラッキングコードを埋め込むという方法もあります。
他にも埋め込むべきタグがある場合や、タグ埋め込み先を詳細に管理したい場合などは、タグマネージャを利用する方がよいかもしれません。タグマネージャで埋め込むタグや配信先を管理するイメージです。具体的な方法は Liferayのサイトにタグを埋め込む の「全てのページにタグを埋め込む」で紹介していますのでご参照ください。


今回の記事は以上になります。アクセス解析ツールには無償利用可能なものもありますので、是非試してみてください。