Skip to content

Instantly share code, notes, and snippets.

@AKB428
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AKB428/b555d7a0e98b9f9add6f to your computer and use it in GitHub Desktop.
Save AKB428/b555d7a0e98b9f9add6f to your computer and use it in GitHub Desktop.
マイクロDMP作成 ハンズオン公開用

#「Mastering DMP」

この本について

Play FrameworkでマイクロDMPを作成します

用意するもの

  • OS: Windows or Mac

  • AP: Play Framework

  • DB: MariaDB or MySQL

  • HTTP Server: Nginx

  • IDE: Eclipse or IntelliJ

  • Java8

  • Chrome EditCookieプラグイン

この本のレッスンで作成できるもの

  • MicroDMP AP Server ・・ Play Framework(Java)
  • Nginx Server ・・ Browser Request -> Nginx -> mDMP
  • mdmp.js・・ 3rd Party Cookie を扱うJavaScript

第1部 Cookieを利用したDMPを作ろう

0章 開発準備

この本で題材にする「OpenMicroDMP」(OMD)システム構成図

Imgur

開発の際の構成図

Imgur

開発用端末で起動するサーバー群

Server Software TCP PORT 役割
Nginx 80 ダミーサービスサイト
Nginx 8080 DMP HTTP サーバー
Play Framework 9000 DMP AP サーバー
MariaDB 3306 トラッキングデータを保存

/etc/hosts 設定

sudo vi /etc/hosts

127.0.0.1       travel.com
127.0.0.1       hotel.com
127.0.0.1       nodazon.com
127.0.0.1       mdmp.com

Nginx (ダミーサービスサーバー側)

cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.dummy_service.conf
sudo nginx -c /usr/local/etc/nginx/nginx.dummy_service.conf

動作確認

ブラウザで以下にアクセスし成功すればOK

いったん止めておく

sudo nginx -s stop

Nginx (DMP側)

設定ファイルだけコピーしておく

cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.dev_mdmp.conf

PlayFramework

Playインストール

https://playframework.com/ Activatorをダウンロードし activator newでプロジェクトを新規作成する。(Javaプロジェクト)

~/code/activator-1.3.5-minimal/activator new

Fetching the latest list of templates...

Browse the list of templates: http://typesafe.com/activator/templates
Choose from these featured templates or enter a template name:
  1) minimal-akka-java-seed
  2) minimal-akka-scala-seed
  3) minimal-java
  4) minimal-scala
  5) play-java
  6) play-scala
(hit tab to see a list of all templates)

5

Enter a name for your application (just press enter for 'play-java')
>anzu

cd anzu


activator run

起動確認

http://localhost:9000/ にアクセスし成功したらOK

MariaDB

mysql.server start
mysql -u root

[sql console]
create database open_micro_dmp
use open_micro_dmp

TABLE

CREATE TABLE `audience_3rd_access_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `audience_cookie_id` varchar(80) NOT NULL DEFAULT '',
  `access_host_name` varchar(255) NOT NULL DEFAULT '',
  `access_url` varchar(4096) NOT NULL DEFAULT '',
  `access_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_first` tinyint(1) NOT NULL,
  `ip` varchar(15) DEFAULT NULL,
  `ua` varchar(255) DEFAULT NULL,
  `created_at` datetime NOT NULL,
  `updated_at` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `audience_cookie_id_index` (`audience_cookie_id`),
  KEY `access_host_name_index` (`access_host_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Chrome EditThisCookie プラグイン

デバッグでCookieをよく操作するので以下のプラグインを入れておく

https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg?hl=ja

1章 3rd Party Cookieでピクセル トラッキングサーバーを作る

この章で学ぶこと

  • Play Frameworkのコントロラーの書き方
  • Play FrameworkでのCokkie操作
  • 透明の1x1ピクセルを返すレスポンスの生成方法

Mastering DMP Capter01

2章 Play FrameworkとNginxを連携する

この章で学ぶこと

  • nginx.confの書き方
  • NginxとPlay Frameworkとの連携を学ぶ
  • サービスサイトにトラッキングタグを埋め込む

Mastering DMP Capter02

3章 DNTに対応する

この章で学ぶこと

  • DNTの仕組み
  • DMPサービスのDNT対応
  • DNT対応のON/OFFの切り替え方法
  • play frameworkのapplication.confの使い方

Mastering DMP Capter03

4章 オプトアウトに対応する

この章で学ぶこと

  • オプトアウトの概念
  • オプトアウトページの作成
  • DMPのオプトアウト対応

Mastering DMP Capter04

5章 データーベースにCookieを保存する

Mastering DMP Capter05

この章で学ぶこと

  • Playからmariadb(mysql)への接続
  • リクエストデータの永続化

とりあえず、ハンズオンの2時間でここまでできたら嬉しいライン

6章 トラッキングした情報を元にドメインをまたいだ広告表示を行う

この章で学ぶこと

  • JSタグでのトラッキングの仕組を学ぶ
  • ブラウザに該当のクッキーIDの閲覧履歴を表示する(ドメインをまたいだ広告表示の元ネタ)

ここからは自己学習

補足

A章 APサーバーの高速化のため、CookieのDBへの保存を工夫する

この章で学ぶこと

  • リアルタイムにDBへ保存するのでなくログファイルからDBへ保存する
  • 定期的にログをDBへ格納するバッチを作成する
  • またFluentdやFlumeを検討する

B章 ビッグデータに対応するためMySQLからHBaseへ切り替える

この章で学ぶこと

  • HBaseの利用方法
  • 管理画面からのSQLの実行のために、BigDataTable(HBase)とMySQLの両方にデータを持たせることも検討する
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment