記事の情報は登壇当時のものになります。
データを可視化するDS.INSIGHT・DS.GALLERY、具体的な使い方
ヤフーが展開するヤフー・データソリューションとは、ヤフーのさまざまなサービスで取得・蓄積したビッグデータを分析できるサービスである。その中には可視化までしてくれるサービスがある。それが「DS.INSIGHT」と「DS.GALLERY」である。
「DS.INSIGHT」はヤフーのビッグデータを分析できるデスクリサーチツールで、「企業や教育機関に提供している」と猪目氏は説明する。一方の「DS.GALLERY」は、会員登録が不要で、データ可視化コンテンツを一般向けに提供しているサービスである。
具体的にどんなデータが可視化されるのか。ここで猪目氏はまず、DS.INSIGHTのデモを実施。基本画面で検索窓にキーワードを入力すると、そのワードと一緒に検索されたキーワード(共起キーワード)がマップ形式で表示されるのだ。それらのキーワードについて性別や地域別割合という切り口でも見ることができる。
地域別の面白い事例として、「豚まん」と「肉まん」と言うキーワードを使って分析の例を紹介。肉まんは関東、豚まんは関西でより多く検索されていることがはっきりと日本地図に示された。そのほかにも検索数の推移グラフなども用意されており、例えば先の「肉まん」や「豚まん」は、「冬になると上昇するワード」と猪目氏は話す。
DS.GALLERYでは、最近急上昇しているトレンドワードをチェックできる。それらのトレンドワードの性別や年代別の割合も表示。カテゴリーごとのランキングも見ることができる。「毎週更新。カテゴリー30種の中で3つのカテゴリーをピックアップしています」と猪目氏。すべてのカテゴリーを見たい場合は、DS.INSIGHTへの登録が必要だ。
このようなデータ活用の仕組みをヤフーではどう作ったのか。データはユーザーのアクションから生まれる。ページの閲覧やリンククリック、検索、購入などのユーザーのアクションがログとして記録され、ロギングAPIによってデータレイクに送られる。データレイクとは「ヤフーの多種多様かつ膨大なデータをまとめて保管しておくストレージ。ヤフーではApache Hadoopを使用している」と猪目氏は説明する。
アナリストはデータレイクのデータを活用することもできるが、ヤフーではデータをより活用しやすく整理した、データハウスやデータマートも用意。データソリューションでは分析用にTeradata、可視化ツール用にオブジェクトストレージ、Apache Cassandraなどを使用している。
可視化ツールとは、データを理解しやすいようにグラフ化やダッシュボード化をするためのツール。ヤフーが提供しているのが、DS.INSIGHTやDS.GALLERYである。アナリストはこれらの可視化ツールを使って分析をすることになるが、ヤフーでは可視化ツールを社内外のアナリストに提供している。またアナリストがデータベースから直接データを取得して分析する場合は、「Tableauがよく使われている」と猪目氏は語る。
3パターンある可視化ツールに至るデータの流れ
このようにヤフー・データソリューションでは、DS.INSIGHT、DS.GALLERY、ユーザーによる可視化の3パターンの可視化ツールに至るデータの流れを用意している。DS.INSIGHTは、Nuxtで作られた動的Webアプリケーションなので、BFF(Backends For Frontends)でデータ取得APIを叩く構成になっている。データ可視化には主にHighchartsというグラフを簡単に記述できるJavaScriptのライブラリを使っている。「開発自体はTypeScriptで行っています」(猪目氏)
次のDS.GALLERYは、FaaS(Function as a Service)で集計プログラムを定期実行している。DS.GALLERYは週1回と月1回の更新なので、それに合わせてこのプログラムを更新する。出力データはCMSに配置し、サイトから読み込む構成になっている。この仕組みの良い点は、データをあらかじめ用意しているので、シンプルな構成になっていること。そしてサーバーのメンテナンスも不要なことである。
では、具体的にDS.INSIGHTのシステム構成はどのようになっているのか。DS.INSIGHTはユーザーの興味関心を分析する機能、位置情報に関する分析をする機能、世の中のトレンドを分析する機能など、さまざまな機能が提供されている。各機能は個別のNuxtプロジェクトで構成されており、各BFFが裏側にあるAPI群を叩くという形を取っている。「一言で言うと、DS.INSIGHTはNuxtプロジェクトの集合体」と猪目氏は言い切る。
このように、機能ごとにリポジトリやメンバーも分かれている構成にするメリットは、フットワーク軽く新機能の追加や修正が可能になること。8月下旬に急上昇トピックやトレンドを可視化分析できる「DS.INSIGHT Trend」がリリースされた。もしDS.INSIGHTが巨大なホストプロジェクトにすべての機能が入り、そこでリポジトリをすべて管理している構成であれば、「このようにフットワーク軽くリリースできず、今も開発中だったかもしれない」と猪目氏は明かす。
一方で、各機能を個別のNuxtプロジェクトとして開発するので、システム内で統一感がなくなるのでは」という懸念もある。それについて猪目氏は、「デザインシステムを用意することで、全プロジェクト一貫性のあるデザインを実現している」と言う。
データ可視化の開発運用コストを下げるためのポイント
「次にデータ可視化の開発運用コストを下げるために、私が普段気をつけていることを話したい」と前置きし、猪目氏は開発運用コストを下げるためのポイントの解説へと移った。
1つ目は、データ更新頻度の検討である。データ更新頻度が低ければ開発コストは小さくなり、高くなると、開発運用コストは大きくなる。例えばデータ更新が不要で、その場限りのスナップショットでOKな場合は、1回データをダウンロードして、その場限りの可視化だけで済む。だが週1回など定期的な更新、さらにリアルタイムな更新が必要になるなど、更新頻度が上がれば上がるほど、集計ミスの確率も上がる。その分、システム障害が発生する確率も上がる。「要件を満たす限りでデータ更新頻度を下げることを勧めます」と猪目氏は指摘する。
また更新頻度だけではなく、更新タイミングにも気をつけたい。データ更新のタイミングは、データ集計の失敗が起こるタイミングでもあるからだ。「データ更新のタイミングは、できるだけユーザーに影響がない、かつ運用担当者が万一失敗してもすぐに対応できるタイミングを選ぶのが良いと思います」(猪目氏)
2つ目は、使うデータ量の検討。使うデータ量が少なければ少ないほど、開発運用コストは小さくなり、多ければ多いほど開発運用コストは大きくなる。「DS.GALLERYのように、例えば少量のデータで簡易的な可視化であれば、決まったデータを読み込む静的Webサイトで十分かもしれません」(猪目氏)
一方、DS.INSIGHTのように大量のデータから複雑な絞り込みや検索にも対応しなければならないような構成にするのであれば、裏でAPIリクエストを行う動的Webアプリケーションを開発することになる。「私は両方の開発に携わったことがあるが、作業はすごく大変になる。これもできるだけ要件を満たせる範囲で、可能なら静的Webサイトでいけるか考えてみてはどうか」と猪目氏は話す。
データ量が少なければ可視化ツールにExcelを使うこともできる。一方、データ量が多くなると、TableauのようなBIツールが必要になり、利用料もかかる。またBIツールを活用すると、使える人も限られてくる。「できるだけ活用するデータ量も減らすことを考えるコトも必要だと思います」(猪目氏)
3つ目は、データの見せ方。一般的なグラフで良ければ開発運用コストは小さくてすむが、ダッシュボード化するなど少しリッチに見せたい、今までにない可視化表現を創造したいと、より特殊な見せ方が求められるようになると開発運用コストも大きくなっていくからだ。「できるだけ一般的なグラフで表現することを検討することをお勧めします」(猪目氏)
もう一つ、見せ方で大事になるのはユーザーに合わせた可視化表現をすること。DS.GALLERYは一般向けなので、楽しさ重視の見せ方となっており、DS.INSIGHTはデータ活用したい人向けなので、機能重視の見せ方となっている。
またデータ可視化をする際に、忘れがちだが気をつけたいポイントがある。
まずは、データの調達について。データの収集・加工から行うのは大変なので、「すぐに使えるデータやAPIがないか、社内外で探してみましょう」と猪目氏。次に、データ取得APIの利用料についても気をつけたい。従量課金制APIをライブ接続すると、利用料が高額になるからだ。「定期実行で節約することをお勧めします」(猪目氏)
さらにDS.INSIGHTやDS.GALLERYのように社外公開する場合は、社外秘データが含まれていないかはもちろん、差別用語、アダルトワードなど公開NGワードが含まれていないかをチェックすることも重要になると猪目氏は言う。
「データ可視化の実現方法は多種多様です。企画の段階から要件を絞り込んで、できるだけ小さく初めて見ることが大事だと思います」(猪目氏)