データドリブンな意思決定を支援する社内データ分析基盤

はじめまして!estie VPoEの青木です。
社内では、エンジニアチームが全速力で正しい方向に走れるようにお手伝いをしています。
最近は、コロナの影響もあり自宅にいる時間が長くなってきたので、ハリネズミを飼おうかなと真剣に検討し始めました。

さて、そんな雑談はさておき、今日はestieのデータ基盤についてご紹介します。

そもそもestieってどんな会社?

オフィス不動産を主なドメインとする"不動産テック企業"です。
現在、以下2つのプロダクトを様々な領域のオフィス不動産に関わるユーザに提供しています。

estie pro

全国8万件以上、都心5区90%を網羅した日本最大級のオフィスビル情報プラットフォームです。
オフィス不動産業界の物件を所有している「オーナー」、オフィスに入居される企業様との間で契約を仲介する「仲介会社」といったオフィス不動産に関わる「pro」のユーザーの方々に利用していただいています。

leasing.estiepro.jp

estie

オフィス探しをシンプルにするための賃貸オフィスのマッチングサービスです。
オフィスを探している企業の方が登録するだけで、複数の優良エージェントからまとめて物件の提案を受けることが出来ます。
また、自分で条件を指定して物件を検索したり、独自開発したアルゴリズムによるAI自動提案を受けることも可能です。

www.estie.jp

各サービスに利用するデータ

上記の2つのプロダクトに新鮮で価値のあるデータを提供するために、estieでは大量の独自ソースからの情報を収集し各サービスに提供してます。

f:id:estie:20200629005838p:plain
estie proに表示しているデータ

estieのデータ分析基盤

なぜデータ分析基盤が必要なのか

estieは上記の通り多くのソースからデータを集め、整形し、ユーザに提供しているため、その提供価値を磨いていくために社内用の分析基盤が必要不可欠です。
また、estieではデータドリブンにユーザ決定することを重視しているため、そのために必要なデータを収集し解析することが可能な環境が重要でもあります。

どのようなデータ分析基盤が必要なのか

前述のような意思決定を高速に実行するためには、社内全員(全エンジニアではなく、ビジネスサイドも含めた全てのメンバ)が容易にアクセスできる環境が必要です。
実際estieでは不動産業界出身が多いビジネスサイドのメンバも、全員がデータ分析基盤を用いてデータの確認・分析をしています。

データの対象としては、以下のような多岐にわたる社内データを参照できる必要があります。

  • ビル・募集している区画などの物件データ
  • サービス利用ユーザの登録したデータ
  • 外部連携パートナーから受領したデータ
  • 各サービスのユーザの行動ログデータ

また、「それぞれの施策の分析結果が各担当者のローカル環境で保持していて分散してしまう」というようなことがないよう、全員が統一した方法(例えばSQL)でアクセスし、その場で共有できることも重視しています。

どのようにデータ分析基盤を構築しているのか

OSSで提供されているダッシュボードredashをAWSのEC2上に構築し、上記要件を満たす分析基盤環境を用意しています。
データ取得元の各サービスとの関係は大まかに以下のようになっています。
(簡略化のために一部詳細は省いています)

f:id:estie:20200630001620p:plain
redashのシステム構成図

構成のポイント

データの入力

各データのソース及び形式に合わせてredashにデータを入力できるように設定しています。

各アプリケーションDB及びデータソースDB

AWSのセキュリティグループでネットワーク上アクセス可能な設定とした上で、データベースの接続情報を入力してアクセスしています。
データ分析基盤用の参照(SELECT)権限のみを保持するデータベースのユーザを作成してアクセスするようにしています。

f:id:estie:20200628234618p:plain
redashのDB接続設定

テキストファイル(csv, json)

社外から受領したテキストファイル形式のデータや、データソースとしてパートナー関係にある会社のAPIを実行した結果、またアプリケーションからfluentdを用いて出力したログファイルは、Amazon S3に格納し、AWSのテキストファイルへのクエリサービスであるathenaを用いてredashに連携しています。
aws.amazon.com

redash自体がデータソースとしてathenaをサポートしているため、redash側での設定作業は多くないです。

f:id:estie:20200628235903p:plain
athenaデータソース接続設定

athena側では、実際にファイル形式に合わせてGUIでのガイドに従ってカラムの構成等を設定すると、Apache Hiveのテーブルが作成されデータをクエリで参照可能な状態となります。
文字コードがSJISの場合や、区切り文字を変更したい場合など読み取りに際して特殊な設定が必要な場合には、自分でCREATE TABLE文を記載して細かい設定を施すことも可能です。
docs.aws.amazon.com

データ参照と集計

クエリ作成

上記の手順で接続したデータソースに対しては、社内メンバであれば誰でもSQLを用いてデータにアクセスすることが可能です。

f:id:estie:20200702114711p:plain
クエリサンプル
作成したクエリは、名前を付けて社内のメンバに共有することも可能です。
f:id:estie:20200629002640p:plain
クエリ一覧画面

データソースをまたぐ処理

複数データソースをまたいだ集計を可能にするredashの「query_result」というデータソースを指定することで、
「ログファイルとサービスDBのユーザテーブルをJOINして、ユーザ属性ごとに分析したい」といった複数のデータソースを用いたデータ分析も可能です。

f:id:estie:20200629003443p:plain
query_resultを用いたクエリ

データの出力・活用

全社で展開可能なダッシュボードの作成

データ分析した結果をvisualizationした上で組み合わせて、ダッシュボードを作成することが可能です。以下のような要件も実現可能で、使い勝手もとても良いです。

  • クエリ内にパラメータを設定して、ダッシュボード参照時に引数を変更しながらデータを参照する(対象の物件の住所を指定するなど)
  • スケジュール更新設定を用いて定期的にデータが最新となるように設定する
  • 緯度経度のカラムを指定してvisualizationすることで地図上でデータをインタラクティブに分析する

estieが扱うデータは全国のオフィス情報も多いですので、非常に利用機会も多い機能です

f:id:estie:20200629003947p:plain
地図を用いたダッシュボード

slack連携

redashにはslackのintegrationも存在しています。
こちらを用いることで、毎日slackで特定のクエリの結果をリマインダーとして定期的に社内のメンバが確認するように設定することが可能です。
estieでは毎日更新される物件情報の数などの情報を関連するメンバに通知するように設定しています。

f:id:estie:20200702224012p:plain

おわりに

estieでは採用強化中です!
今回ご紹介したようなデータ分析基盤を一緒に構築していくことや、そのような基盤を用いてデータドリブンに意思決定しながらプロダクトを前にすすめることに興味有りましたら、お気軽にお問い合わせください!

一緒にデータ基盤を作っていくデータエンジニア

www.wantedly.com

データドリブンに意思決定しながらプロダクトを前に進めるリードエンジニア

www.wantedly.com