Monday, September 14, 2015

LiferayのAudience Targetingでユーザーセグメントを定義して使ってみよう

こんにちは、最近自動車の運転を練習しているかわべです。カーシェアで早朝にちょこっと運転してパン屋さんでおいしいパンを買って帰り、家でゆっくり食べる、という夢があるのですが、先日練習したところどこにも駐車できずに疲れて帰ってきました。先は長そうです。

さて、本日はLiferay社が開発しており、Marketplaceから無償で入手してインストールすることができるAudience Targeting(オーディエンス・ターゲティング)という機能について紹介したいと思います。日本語では「ユーザー解析」という名称に訳されている、複数のポートレットやフックから構成されるプラグインです。2回に分けて記事にしようと考えているので、前半である当記事では機能の説明、インストール方法、そしてユーザーセグメントの利用方法について説明したいと思います。

Audience Targetingで何ができるようになる?

デフォルトのLiferayの機能でも、ユーザーが所属する組織やサイト、割り当てられたロールなどによって特定のコンテンツやページを表示する/しないという制御をすることはできます。これは権限のないユーザーからコンテンツを保護するためのポータル製品としての機能と言えます。
Audience Targetingを利用すると、ユーザーに最適なコンテンツを動的に表示させる更に細かいルールの適用が可能になります。例を挙げると、

  • 30代の男性ユーザーにはコンテンツA、40代の男性ユーザーにはコンテンツB、それ以外のユーザーにはコンテンツCを表示する
  • 午前6時から午前10時までにアクセスしたユーザーにはコンテンツEを表示する
  • コンテンツDを10回以上閲覧したユーザーをキャンペーンEの対象とし、登録フォームへの入力率を一般ユーザーと比較する

などです。ポータルサイトとしての可能性が広がりそうな機能だと思いませんか?

これらの表示ルールの一部は、EE版で提供されていたDroolsルールエンジンとポートレットを応用すれば以前から実現可能でしたが、Droolsではルール適用のためにスクリプトを記述する必要があり、そこに導入のハードルを感じた方もいるかもしれません。一方、Audience Targetingでは管理画面からのUI操作だけでルールが設定できるので、コーディング知識は必要ありません。

それではインストールから順を追って使い方を見ていきましょう。以下ではLiferay Portal 6.2 EE SP12をTomcatバンドルでMacにインストールしたものを使用しています。

Audience Targetingのインストール

Audience Targetingに限った話ではありませんが、Marketplaceにあるプラグインをインストールするには方法が2つあります。
  • Liferayの起動中に管理者としてログインし、コントロールパネル→MarketplaceでLiferay.comのアカウントを紐付けて画面上から購入、インストールする
  • ブラウザでMarketplaceにアクセスし対象のプラグインを購入後、ダウンロードし、ダウンロードしたファイルをLiferayのdeployフォルダに配置する

今回は後者の方法で進めます。Liferay.comに登録した自分のアカウントでAudience Targetingを購入(無料)し、プロフィールの「購入済アプリケーション」からダウンロードします。Audience Targeting EE.lpkgというファイルがダウンロードされます。Audience TargetingにはCE版も用意されているので、CEを利用されている場合はそちらを入手してください。
deployフォルダはLiferayを展開したフォルダ配下に存在するはずなので、その中にこのファイルを置きます。と、ここで注意。
通常、LiferayのプラグインはLiferayが起動していてもホットデプロイすることが可能ですが、Audience Targeting EE.lpkgはLiferayが停止しているときにdeployフォルダに入れ、その後Liferayを起動してください。
そうしないとエラーログが出力されてデプロイに失敗してしまいます。
また、これは試している中で気づいたことですが、deployフォルダにプラグインを入れて起動が完了した後、もう一度Liferayを停止→起動してください。そうしないとドックバーが一部無効になってしまうようです。(使えるようなら問題ありませんが、例えばコンテンツ追加のための「+」を押しても反応しなかったりしたら再起動しましょう。)

起動と停止をするにあたり、ついでに停止中に<TOMCAT_DIR>/bin/setenv.shでJVMのメモリサイズ設定を確認し、デフォルト値のままになっている場合は値を大きくしましょう。Audience Targetingを使用する場合、最低でも"-Xmx2048m -XX:MaxPermSize=512m"を割り当てることが推奨されているようです。

無事にインストールが完了すると、管理者としてログインした際にドックバーにシミュレータ用のボタンが追加されているはずです(クリックするとこんな風に左サイドペインが開きます)。



また、システム管理→編集へと移動すると、「ユーザー解析」という項目が追加されています。次はここから操作を行い、ユーザーセグメントを追加していきます。

ユーザーセグメントとは?設定方法は?

名前から想像が付くとおり、ユーザーを特定の条件に従ってセグメント化したものです。このセグメントごとにコンテンツの表示ルールやキャンペーンが設定できます。今回は、保険会社の加入者向けポータルサイト「Aegif Demo Insurance」である範囲の年齢と性別を条件としたユーザーセグメントを作成するという例を試してみたいと思います。
管理者としてログインし、対象サイトのシステム管理→編集→ユーザー解析へ移動すると、「ユーザーセグメントの追加」ボタンがあるはずなのでクリックします。すると、どのようなルールでユーザーセグメントを作成するか、画面から作成することができます。標準で用意されているルールは以下です。

ソーシャル(Facebook連携ログインを利用する場合のみ有効。Facebookの各項目を使用した分類)
  • 学歴
  • 特定ページへの「いいね!」有無
  • 性別
  • つながり
  • 年齢

振る舞い(Liferayポータル内で訪れたコンテンツによる分類)
  • 閲覧済みコンテンツ
  • スコア(タグのついたコンテンツの訪問回数を集計)
  • 閲覧済ページ

ユーザー属性(Liferayに登録した属性などによる分類)
  • サイトメンバー
  • 性別
  • サイトロール
  • ユーザーグループ
  • ログインの有無
  • 組織ロール
  • 組織メンバー
  • 標準ロール
  • 年齢

セッション属性(IPアドレスなどアクセス元による分類)
  • ロケーション
  • ブラウザ
  • OS
  • 時間
  • デバイス
これらのルールはもちろん組み合わせて利用することが可能で、必要な項目をドラッグし、希望する設定値を追加するだけでOKです。今回は「21-35歳男性」というユーザーセグメントを以下のように作成してみました。



ユーザーセグメントコンテンツディスプレイの利用

このユーザーセグメントに当てはまる場合のみ特定のコンテンツが表示されるように、「ユーザーセグメントコンテンツディスプレイ」ポートレットをページに配置してみましょう。今回はTOPページに置いてみます。ドックバーの「+」(追加)をクリックし、対象のポートレットをページにドラッグします。



右上の設定アイコンから、以下の条件で表示されるように設定して、保存します(日本語がいまいちだったので英語表示にしています)。
  • ユーザーが「21-35男性」のセグメントに当てはまる場合、「自動車保険へのリンク」というWEBコンテンツを表示する」
  • それ以外の場合、「保険見直しへのリンク」という別のWEBコンテンツを表示する


ところで上の画面キャプチャからわかるように、セグメントは複数を同時に利用することが可能で、セグメントの「すべてに」または「どれか1つに」該当する場合、という設定をすることができます。更に「+」を押すとセグメントの判断を追加できるため、「AならA', BまたはCならB'、Dなら…」というような複雑な表示設定も可能です。また、表示させるコンテンツもWEBコンテンツだけに限らず、ドキュメントやブログ記事など他の種類にも対応しています。

さて、それでは実際にユーザーセグメントが有効になっていることを確認してみましょう。以下3人のテストユーザーを作成し、Aegif Demo Insuranceに順番にログインしてみることにします。

1. Boy Forty 40歳男性



2. Boy Twenty-Five 25歳男性


3. Girl Twenty-Five 25歳女性


ちゃんと設定したユーザーセグメントに従ってコンテンツの表示がされました!
また、いちいちそれぞれのセグメントに該当するユーザーで入りなおさなくとも、管理者など権限があるユーザはドックバーのシミュレータボタンをクリックすると「このユーザーセグメントに属するユーザーにはどういうページに見えるのか」というのを確認することができます。


ユーザーセグメントリポート

各ユーザーセグメントに当てはまるユーザーがどのコンテンツを閲覧したかを表示する機能も備わっています。システム管理→編集→ユーザー解析→ユーザーセグメントに移動し、それぞれのユーザーセグメントで操作→リポートを選択すると、「そのユーザーセグメントに当てはまるユーザーが閲覧したコンテンツ」を見ることができます。



デフォルトでは1日に1度更新されますが、更新ボタンをクリックするとその都度更新されます。これもユーザーの動向を分析するために活用することができそうです。

次回予告

ユーザー分析にはまだ紹介できていない機能があります!後編として、ユーザーセグメントのタグ、そしてキャンペーン機能について近いうちに紹介したいと思います。

Monday, September 7, 2015

Enterprise API Hack night#1 に行ってきました!

コレステロール値に要観察の結果がでてしまった(前から出ていた?)ナクラです。

先週、木曜日(9/3)に第一回Enterprise API Hack nightに行ってきました。
正直な話、当日までこういうものがあるのは知らなかったのですが、
弊社の自社開発チームのメンバが、「行きたいのに行けない」と言うので
代わりにちょっと様子を見ようと気楽なノリでいってしまいました。

さて、皆さんEnterprise APIってなんだと思いますか?
私も全然こういう言葉に感度がなくて何なのだろうと思っていました。
「Enterprise」は日本語に訳せば「企業」
APIはApplication Programming Interfaceの略称ですので、
企業向けアプリケーションソフトウェアのインタフェースということでしょうか。
結局明確な定義はちゃんと理解できなかったのですが、
最初の登壇者の事務局の加藤さんは
B2BのAPIの普及を進めていきたいという話をされていたので、
大まかな捉え方としては、B2B向けのAPIがEnterprise APIで問題なさそうです。
とはいえ、公開APIの話もあったので、完全にB2Bに閉じたものでもないようです。

さて、このHack Nightでは3つの講演がありました。それぞれ簡単に感想を書いていきたいと思います。

講演1:ビジネスのデジタル化におけるAPI活用事例

apigee(アピジーと読むらしいです)の清水さんが話されました。
グローバルの世界では、今APIの活用がどんどんと進んでいるらしいです。
Walgreens、AP通信社、SalesForce、Dell、BECHTELなどで行われているAPIの活用事例を紹介してくださいました。
とくにBECHTELではipadを使った工事管理の事例で、Appleのipad事例にもなっているそうです。
こういった大規模なAPI群を管理するためのAPIマネジメントプラットフォームが重要になってきているという話でした。(apigeeもこの分野を取り扱うソフトウェア(?)のようです)

講演2:APIがNTTコミュニケーションズのサービスを変える!

NTTコミュニケーションズの緒方さんが話されました。
現在NTTコミュニケーションズでAPIの代理店向けのAPIが公開されはじめていて
代理店のポータルシステムとNTTコミュニケーションの情報を管理するシステムとが連携して、
ポータル側で契約情報や故障情報などがリアルタイムで確認できるようなことになっているそうです。
APIの利用を促進するために、
標準化ルールの設定、APIの管理、ニーズを捉えたAPIの作成が必要だと言う話をしていただきました。

講演3:IoT/M2M分野におけるWeb APIの使い方とデモ 

MOONGIFTの中津川さんが話されました。
M2Mについて最近はmachine to machineでは無くmachine to cloud to machine
M2C2Mになっているという話で、cloudの部分ではブラウザなどでアクセスして情報を閲覧したりできるような形になっているということでした。
M2Mは利用目的によっていろいろな方法がとれるので、ネットワークの設計を慎重に検討して、最適なネットワークを選ぶことが大切だというお話でした。
IoTのWeb APIの話では、大量のデバイスからデータを取って、データを蓄積するビックデータ型と
ビーコン系のデバイスとスマフォを通信させてるスマートフォン型の利用方法があり、それぞれのメリットでメリットの話も聞けて、とてもためになりました。
また、音声入力でチャットしたり、玄関の電球を灯けたりするデモも見せてもらいました。
今更ながら、ラズベリーパイが欲しくなってしまいました!




講演の後にはライトニングトークがあって、何人かの方が発表されていましたが、
お酒が振る舞われた後だったので正直あまり覚えていません(汗)



弊社もNemakiWareやCmisSyncなどAPIを活用した自社ソフトウェアがありますので、
この流れにおいていかれないように、今後もEnterprise API Hack Night は「要チェックや!」と思いつつも、コミュニケーション力を高めていかないと、なかなかコミュニティに入り込めないなと、ひとしきり反省しながら帰りました。

興味を持っていただいた方はツイッターで#entapihackのハッシュタグで検索してみてください。

また次回参加したらブログに感想を書きたいと思います
ではでは。

Tuesday, September 1, 2015

Alfresco勉強会#29 ユーザのアクティビティを可視化してみる

こんにちは。錦織選手が全米オープンで初戦敗退と聞いて凹んでいるてらしたです。足のケガで出場できるかどうかも微妙だった去年が準優勝で、万全と言っていた今年が初戦敗退とはわからないもんですねぇ。

さて、開催から1週間も経ってしまいましたが、先日29回目のAlfresco勉強会が開催されました。今回は弊社の戸谷がAlfrescoでのユーザアクティビティの可視化について発表しました。

Alfrescoにはユーザがサイトに参加した、ファイルをアップロード/ダウンロードした、といった操作内容を記録して表示するためのアクティビティという機能があります。標準機能でも、アクティビティをダッシュレットに表示したり、日次でメールで通知したりすることができるのですが、それをもうちょっとわかりやすく可視化できたらおもしろいんじゃないか、という内容でした。

具体的には、LogstashでAlfrescoのREST APIを叩いてアクティビティを取得 → Elasticsearchに登録 → Kibanaで見てみる、という話です。この内容を参考にして、収集するアクティビティや見せ方を色々応用していったらおもしろそうです。ご興味があればぜひ試してみてください。


次回のAlfresco勉強会は10月28日(水)です。たくさんの方のご参加お待ちしております。参加登録は以下のリンクからお願いします。

第30回Alfresco勉強会

もちろん発表も大歓迎です。発表はできないけどこういう内容が知りたい、こんなところで困っているから教えてほしい、といった要望があればconnpassのフィードに投稿していただければと思います。