Mission1 企業の運用管理規程を攻略せよ
弊社ではWordPressを使用したサイト制作や高速化チューニングを専門としています。あるとき、某大手精密機器メーカからのBtoB向けの商品情報の紹介サイト制作依頼をいただきました。この案件での必須要件は、ユーザ情報などの個人情報については、プライバシーマークなどを得た組織が運営する信頼の置けるサーバに置くということでした。
WordPressにはwp_usersとwp_usermetaというユーザテーブルがあります。この2つのテーブルのデータを、ユーザ情報を格納するための外部のサーバ(以下、外部サーバと称する)に持つ必要がありました。
試行錯誤の結果、以下の図のような仕組みを考案しました。下記は認証時のイメージ図です。
考案したシステム構成
外部サーバには本当のユーザ情報を入れて、WordPressのwp_usersとwp_usermetaにはダミーのユーザ情報を保持しています。本当のユーザ情報は、WordPressのデータと外部サーバのデータを紐付ける固有のキーを持たせることで必要な時だけ取得します。
今回の案件ではWordPressのログインIDをデータ取得用のキーとして使用しました。
会員登録の際はあらかじめ外部サーバにユーザ情報を登録しておきます。ユーザがWordPressの会員登録フォームからメールアドレスを入力すると、外部サーバ上でユーザ情報を取得してWordPress用のログインIDを発行し、WordPressにログインIDとパスワードが登録されます。その際wp_usersテーブルにメールアドレスやブログ表示名を登録する必要があるのですが、そのデータはダミーのデータ(乱数等で生成)を登録するようにしました。
ログイン時はメールアドレスとパスワードを入力してもらいます。入力されたメールアドレスを元に外部サーバからキーとなるログインIDを取得し、このログインIDとパスワードでWordPressの認証を通します。
ログイン後は、サイト上に表示するブログ表示名や、メールアドレス(お問い合わせへの自動返信等で必要になる)はすべてログインIDをキーとして毎回、外部サーバに取得しに行くという仕組みにしました。
以上の仕様をプラグインとして実装することで、今回の要件をすべて満たすことができたのです。
Mission2 WordPressとWindows Azure連携を実現せよ
上記で紹介した案件後、一番に考えたことはこれをサービス化できないかということでした。
とくに日本ではクラウドの利便性は理解しているものの、個人情報の取り扱いという観点から、クラウドサービスの利用に断念する企業もかなり多いのではないかと思います。
実際、弊社で高トラフィックが見込まれるサイトに関してはクラウドをサーバの基盤としてWordPressサイトを構築することがほとんどです。クラウドサービスをサーバの基盤とすることの利点としては、コントロールパネルなどを使用したGUIにより容易にスケールアップ、スケールアウトができてしまうという点があります。有名なメディアに掲載されて急にサイトのトラフィックが上がってサイトの負荷が一時的に急上昇しても、ボタンひとつで容易にスケールアップを行うことができます。
「個人情報は外に出せない。しかしクラウドサービスは利用したい。」
この相反する要件を満たしたサービスのために考えついたのが、Microsoft社の展開するクラウドプラットフォームWindows AzureとWordPressとの連携でした。
Windows Azure上でWordPressを利用する
WordPressはクラウドサーバに置いて、Windows AzureをWordPressで使用するユーザ情報を取り扱うサービスとして使用します。認証プロバイダは企業に導入済みのActive Directoryを使用しますが、Windows Azure Access Control Serviceを利用することでフェデレーション認証を実現します。これにより、企業内の個人情報を外部に保存することなくクラウドサービスを利用することが可能になります。
Mission3 実装がシンプルなPluginを開発せよ
現在、日本マイクロソフト社の支援の元、WordPressと上述のWindows Azureベースのサービスとの連携を行うプラグインの開発を行っています。
Active Directoryを認証プロバイダとして利用していれば、会社のPCにログインすることで、そのままWordPressの管理画面にもアクセスすることができます。WordPress上から直接、Windows Azureベースのサービスのデータストアに対して、データベースの定義、各データ項目の作成を行うことも可能です。
データベースの定義
各データ項目の作成
Windows Azureベースのサービスの各種設定やアクセスできるIPアドレスなども管理画面から制限をかけることができます。
テーブルの編集
ここで登録したデータはすべてWordPress上から使用することができ、使用している側からは、データがWordPress上にあるのか、Windows Azureにあるのかということは一切意識しなくて良いという利点があります。
また、WordPressのテーマからはWindows AzureのデータストアにアクセスするためのAPIを使用して、会員データを呼び出して自由に表示することができるのです。
Mission4 Windows Azure連携のメリットを最大化せよ
まずは、このサービスをWordPressのユーザ情報用のサーバとしてリリースすることは必須ですが、その後の展開としてはさまざまなサービスが考えられます。
これらはあくまでも、データを別のサーバに保存して個人情報を保護する部分のみのサービスです。それが可能になれば、データをどんどん貯めることができるので、データを加工した形で提供できるようになります。たとえば以下のようなサービス展開が考えられるでしょう。
メール配信するサービス
メルマガ、さらに開封率等測定してメールマガジンのA/Bテストなどを行います。また、サイトへの訪問回数に応じて、文面の内容を分けてキャンペーンメールを送信するなどの機能も考えられます。
サイトの解析ツール
クラウドサービスとしてサイトの解析ツールは存在しますが、サイトの情報外部に持たせたくないというニーズに向けたサイト解析ツールの提供。
問い合わせの一元管理
問い合わせの内容を一元管理して、誰がどのようにして対応したか等のログが履歴として残せます。
Microsoft Office製品との連動
Excelへのエクスポート機能など。
上記で述べたのはあくまで例ですが、こういった形でデータがたまれば、データを加工することで、さまざまなサービスが可能となるのです。