Googleアナリティクス：サイト内でよく検索される単語をワードクラウドで可視化する方法

![p1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/deef6f0e-dd09-0ec5-c51d-2df74529d991.png)

# Googleアナリティクス：サイト内でよく検索される単語をワードクラウドで可視化する方法

Webコンテンツやeコマースのサイトを運営するなかで、サイト訪問者が興味のあるコンテンツや商品を探せるように、サイト内検索ウィンドウを設置して、顧客体験を良くしようとすることはよくあります。

[Exploratory](https://ja.exploratory.io/?utm_campaign=ga_wordcloud&utm_medium=blog&utm_source=qiita)も[インサイト・ページ](https://exploratory.io/insight?utm_campaign=ga_wordcloud&utm_medium=blog&utm_source=qiita)にて、分析に関するhow-toノートなどが検索できるようにしています。

そして我々Exploratoryもそうですが、多くの検索ページはURLに検索クエリのパラメーターをつけることで、検索結果のページを動的に生成しています。

![p2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/a4408008-8478-13a3-a178-b71c006c1b8c.png)

またWebサイトの運営にあたっては、訪問者がどのようなキーワードをどのくらいのボリュームで検索しているかを理解できれば、サイトのデザインや今後提供していくコンテンツを検討するうえで有益な情報となります。

一方でGoogleアナリティクスから、そういったデータを取得しようとすると、該当する検索クエリの抽出に手間取ったり、抽出した後にその結果を可視化したものが直感的に理解しにくいといったことがあります。

そこで、今日はサイト内の検索クエリの情報を簡単に取得して、ワードクラウドというチャートで可視化する方法を紹介します。

# 検索クエリ可視化のステップ

今回は以下のステップで検索クエリの情報を取得した後、可視化していきます。

1. ページビュー数を取得する
2. クエリページにフィルタする
3. パラメーターを取得して、検索クエリを取得する
4. 取得したパラメーターを整える
5. ワードクラウドで可視化する

# 1. ページビュー数を取得する

それでは早速、Google アナリティクスからデータを取得していきます。Exploratoryで新規プロジェクトを作成したら、データフレームの横にある+（プラス）ボタンをクリックして「クラウドアプリケーションデータ」を選択します。

![p3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/b297c98a-a7a0-86da-128b-4dfa87a7fef7.png)

- ExploratoryとGoogle アナリティクスの接続方法 - [Link](https://docs.exploratory.io/import/google-analytics-ja.html)

続いてクラウドアプリケーション・データソースからGoogle Analyticsを選択します。

![p4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/4dfe41c4-e4a9-fd8d-76f2-22522900cdd5.png)

するとGoogle アナリティクスのデータ・インポート・ダイアログが表示されるので、データを取得するアカウント、プロパティ、ビュー、セグメントを選択します。

![p5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/62eb4e7a-d24a-2743-4ee8-17795810124d.png)


続いてデータを取得する期間を設定します。今回は直近1ヶ月の検索クエリを取得したいので、期間で「直近Nヶ月」を選択し、数値を「1」に設定します。

![p6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/7ec65f71-8f52-76dc-a417-8892e69b4952.png)

続いてクエリ数の取得です。冒頭でも紹介しましたが、今回は、検索クエリがURLのパラメーターに含まれるようなケースになるので、特定の検索クエリのパラメーターを含むページビュー数が検索クエリ数となるわけです。

従って、ディメンションに「 ページ（Page）」を選択し、指標から「ページビュー数（Pageviews）」を選択、実行ボタンをクリックして、データを取得します。


![p7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/a21d2f8b-111d-d93b-4f20-7ef16afc3cca.png)


すると直近1ヶ月のページビュー数がプレビュー画面に表示されるので、保存ボタンをクリックします。


![p8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/164e320d-1fa2-0e8c-70b3-e7d9ff93f4da.png)


データフレームの名称設定ダイアログが表示されるので、今回は「query」という名前にして、作成ボタンをクリックします。


![p9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/e5c5df88-1db3-973b-16f7-df5c7901ec13.png)


これでデータの取得は完了です。


![p10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/5841f62c-27b7-e110-b439-1d8e006970de.png)


# 2. クエリページにフィルタする

続いて、検索クエリが含まれるURLをフィルタしていきます。Exploratoryのインサイトページの場合、検索クエリのパラメーターが含まれるページのURLは、`https://exploratory.io/insight?q=検索語`といった形になるので、`https://exploratory.io/insight?q=`が含まれるページにだけにフィルタします。

このときURLに関係なく、全ての検索クエリを抽出したければこのステップは飛ばして次のステップに進んでください。

pagePathの列ヘッダーメニューからフィルタを選択し、「この文字列を含む」を選択します。


![p11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/1443c530-532a-48ef-07bb-d9412cd32e24.png)


Google アナリティクスではトップページのURLは「/」（スラッシュ）となるため、スラッシュより後の「insight?q=」を入力し実行ボタンをクリックします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/24839131-a886-9217-6e1a-c6c4b782c413.png)



すると、以下のように「表示するデータがありません」といったエラーが表示されます。


![p13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/f7862625-0319-ac9f-ef84-b21d65e8bf74.png)


これはR言語とそのUIであるExploratoryが先程のフィルタの中で正規表現と呼ばれる、「文字列の集合を記号や文字と組み合わせて表現する」方法をサポートしているためです。

正規表現の世界で「?」は「直前のパターンを0回以上繰り返す」という特殊な意味を持っており、そのため今回「?」が文字列として認識されず、該当するデータがなくなってしまったわけです。

今回のようなケースでは「?」を特殊な意味を持つ記号ではなく、ただの文字列として捉えたいので、そういったときは「\」（バックスラッシュ）という記号を「?」の前に入れて、正規表現として解釈させないようにすることができます。

それでは画面右のフィルタのステップをクリックして、「?」の前にバックスラッシュをつけて「insight\?q=」とタイプして、再度実行します。


![p14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/5fb150a2-e018-48ce-e3d3-d069e26435ce.png)


これで検索クエリ用のパラメーターが含まれるページだけにフィルタすることができました。

![p15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/d3396bfd-cb74-c533-3089-324c8ee15c24.png)



# 3. パラメーターを取得して、検索クエリを取得する

続いて検索クエリのパラメーターを取得していきます。ここでやりたいことは`https://exploratory.io/insight?q=検索語`というURLからの検索語のみを抜き出すことです。

では「/insight?q=」という文字列を取り除けばいいのかというと、そこまで単純な話ではありません。例えば、下記のようにURLが持てるパラメーターは一つではなく、「&」で繋げることが可能です。つまり検索クエリとは関係ないパラメーターも混じっているわけです。


![p16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/4d00ee27-d871-262e-3653-a35947100a30.png)



そういったときには**「パラメーターの取得」機能を利用することで目的のパラメーターの情報のみを簡単に抽出する**ことが可能です。実際にやっていきましょう。

「pagePath」の列ヘッダーメニューから、「URLの操作」、「パラメータ」の取得を選択します。


![p17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/755d35bb-ed2b-d056-c311-7493a17159a5.png)


すると「計算を作成」ダイアログが表示されます。ここでは「?」と「=」の間の文字列で定義されたパラメータ名を指定します。今回は取得したいパラメータ名は「q」となるので、「url_param(pagePath, "q")」と入力します。


![p18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/622b766d-68d6-42ad-6439-23b10a1e3de0.png)


そして検索クエリのみを抽出した列を作成したいので、「新しく列を作成」を選択して、列名を「query」として、実行します。

![p19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/a678fe2f-0559-2119-f993-e015f1d86e18.png)


これで複数のパラメーターから、検索クエリ用のパラメーターのみが取得ができました。


![p20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/04d3b92e-3a0b-1fcd-fd15-f1f378631788.png)


# 4. 取得したパラメーターを整える

ここまで来たらあと一息です！取得したデータを見ていると大文字、小文字が混在していることが分かります。


![p21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/6ce11deb-02ee-edcf-ca37-1faca44d2091.png)


2020/02/24時点でワードクラウドでは大文字、小文字を尊重した形で文字列を集計するので、大文字、小文字の表記を統一していきます。

queryの列ヘッダーメニューから、「テキストデータの加工（UI）」、「変換する」を選択します。

![p22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/bc62e280-1b97-2278-8411-577ae2fe7d91.png)


すると「テキストを変換」ダイアログが表示されるので、変換タイプに頭文字が大文字になる「TitleCase（タイトルケース）」を選択し、プレビューをクリックします。


![p23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/ec385dca-a3ad-6b55-b037-4188bc29bd62.png)


すると全てのクエリがタイトルケースに変換されていることが確認できるので、実行ボタンをクリックします。


![p24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/b268edf4-7e6b-9dc4-24e8-169ba1a8b219.png)


これで全てのクエリが、タイトルケースに変換できました。


![p25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/d0c0ac65-8c5d-7021-450d-93eb520e2f40.png)


# 5. ワードクラウドで可視化する

さあ仕上げの時間です！チャートタブに移動して、タイプに「ワードクラウド」、単語に「query」、色で分割に「pageviews」を選択します。


![p26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/beba0f7c-076e-ecbb-1a35-9052d7851f7f.png)


このとき「pageviews」の数値を足しあげたいので、集計関数に「SUM」を選択してください。


![p27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/6cde1c91-0277-bd0e-d227-adf654f336d5.png)


ワードクラウドの完成です！


![p1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/deef6f0e-dd09-0ec5-c51d-2df74529d991.png)


 
探索的データ分析をみんなでやりながら学ぶ[EDA Salon](https://exploratory.io/note/kanaugust/EDA-Salon-crT4VNp7aa)や、[SaaS](https://exploratory.io/tag/?q=tag:saas)向けのコンテンツ、[Prophet](https://exploratory.io/tag/?q=tag%3Aprophet&language=ja)や[パラメーター](https://exploratory.io/insight?q=%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BC)などの機能に関する内容が多いことが直感的に理解できました！

こういったチャートから、今後どのようなコンテンツを増やしていくのかといった議論を進めていくことも有用です。

# 自分のデータで実際に試してみる

[Exploratory](https://ja.exploratory.io/?utm_campaign=ga_wordclouod&utm_medium=blog&utm_source=qiita)では30日間、無料でトライアルができます。実際に自分達のデータを使って試してみたい方は下記より無料トライアルをご利用ください！


![p28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226318/ca455316-4c08-6216-652a-b4d95aa838fa.png)


# データサイエンス・ブートキャンプ、5月開催！

データサイエンスの分析手法を一から体系的に学び、現場で使える知識とスキルを身につけていただくためのトレーニング、データサイエンス・ブートキャンプを5月に開催します。

データを使ってビジネスを成長させたい、または問題を解決したいという方は、ぜひこの機会に参加をご検討ください！
詳細は[こちら](https://exploratory.io/training-jp/?utm_campaign=ga_wordclouod&utm_medium=blog&utm_source=qiita)になります。