Googleアナリティクス4のデータをBigQuery出力する

Googleアナリティクス4ではサイト訪問の行動ログをBigQueryに出力できるようになった。 従来のGoogleアナリティクス(ユニバーサルアナリティクス)ではGoogleアナリティクス360(GA360)を利用し、そのうえでGoogleに申請しないとログデータをBigQueryに出力することはできなかった。そのためコスト面での高いハードルがあったのだが、Googleアナリティクス4ではGoogle Cloud Platform(GCP)の従量課金コストだけでログをBigQueryに出力できるようになったのである。以前はこの設定で直接Firebaseの管理画面からダミーアプリを作る手順が必…

続きを読む →

PythonプログラムでGoogle認証してGoogleのサービスを利用する

プログラムの中でGoogleのサービス(API)を操作するとき、Google認証が必要になる。しかしこれがややこしく、Googleの公式のドキュメントの記述も古かったりサービスの種類によって方法がばらばらだったりして分かりにくい。この記事ではこれを整理して説明する。 プログラムでGoogle認証する場面 具体的なケースを想定するとわかりやすいのだが、 たとえばGoogleアナリティクスからAPIでデータ取得し、そのデータをGoogle Cloud StorageやBigQueryに書き込みする場合、Googleアナリティクスのレポート閲覧権限(特定のビューに紐づいた)とGCPの権限(Googl…

続きを読む →

Google Cloud Functions / Cloud Functions for Firebaseの微妙な使い勝手

AWSのLambdaは高機能だが、GCPのCloud Functionsは機能が少なめでシンプル。ただ微妙なクセがある。 Google Cloud FunctionsとCloud Functions for Firebaseの関係 Cloud Functions for FirebaseはGoogle Cloud Functionsを簡素化してFirebaseで使えるようにしたもの Node.jsのバージョン8のみ Google Cloud Functionsは独自ドメインが使えないが、Cloud Functions for Firebaseでは使える(独自ドメインSSLのWeb APIが可能…

続きを読む →

Googleクラウドで格安お手軽スケーラブルな静的ウェブ配信

Google Cloud Platformの静的コンテンツ配信機能は低コストで手軽に使うことができる。サーバサイドプログラム(PHPなど)のかかわらない静的ウェブサイトの配信(HTML+CSS+JavaScript+画像+動画など)だけであれば、ApacheやNginxなどのウェブサーバなど不要でできてしまう。スケーラブルでトラフィックによるサーバ負荷を気にする必要がない低コストの環境が簡単に使える。WordPressでも静的配信をしているのであれば相性がいい。キャンペーンのランディングページなどもこれで十分なケースがほとんどである。 この記事ではGoogle Cloud Storageを使っ…

続きを読む →

格安に使えるGCEのプリエンプティブインスタンスの勝手に停止対策

プリエンプティブインスタンスの設定

格安で使えるGCEプリエンプティブインスタンス。問答無用でシャットダウンされるというクセが困りものだが、使いようによってはハイスペックのインスタンスを安く効果的に使うことができる。ここではそのシャットダウン対策と最大限活用するためのヒントを紹介する。 プリエンプティブインスタンスとは Google Compute Engineのプリエンプティブインスタンスは 最大で24時間起動 勝手に停止される(停止することをプリエンプト=preemptするという) 安い(同スペックの通常インスタンスの半額以下、1/3程度) という特徴がある。ミッションクリティカルな用途には向かないが、何よりも安いのでCPU…

続きを読む →

Google ColaboratoryでRを使う

無料でPythonの実行環境を使わせてもらえるGoogle Colaboratory。しかもGPUと12GBのメモリ、350GBのディスクまで使える環境であり、手元のPCよりハイスペックな人も多いだろう。 RユーザにとってはPythonだけでなくRでも使えたらいいのにと思うところである。そこで、この記事ではこの環境でRを使う方法を解説する。 Rを使う4つの方法 実はGoogle ColaboratoryのインスタンスにはRの環境(RのバイナリとJupyter Kernel)がインストールされており、わずかな手順で使えるようになるのである。 参考までにインストールされているKernelの一覧はマ…

続きを読む →

Googleアナリティクスの計測ログをBigQueryに送る(無料版対応)

Googleアナリティクスで収集しているデータ(メジャメントプロトコル)をBigQueryに送り、集計・可視化できるようにする。無料版のGAにも対応し、しかもサーバレスでシンプルに実装できる。 本来BigQueryを使ったウェブ行動の詳細分析はGA360を使うべきなのだが、限りなく低コストでこんなことができるという参考程度で紹介する。 通常無料版のGoogleアナリティクスではできないログベースの行動分析をするのに使ったり、有料版であったとしてもGAはどのようなトラフィックを除外して集計しているのか、Googlebotなどのクローラがどんな動きをしているのかなどを検証するのに使うといいかもしれ…

続きを読む →

Google Compute Engineでcronを使って日次バッチ処理を実行する

クラウドを使った理想のバッチ運用 Google Compute Engineのメリットはリサーブ不要で、 使う時間だけ起動してコストメリットを享受できる点にある。 毎日決まったバッチ処理をする時間だけインスタンスを起動し、終了時に停止する運用をすれば、 本当にバッチ処理を実行する時間しか課金対象にならない。 ハイスペックなインスタンスを使ってもそんなにコストはかからない。 そんな運用ができたら、毎日決まった時間にインスタンスを起動することができたら理想なのだが… 実はGoogle Cloud Platformの管理画面上ではできないのだが、 インスタンス管理用のGCEインスタンスを作れば可能に…

続きを読む →

一般的なDBに慣れてきた人がBigQueryを扱う際にハマりやすいポイント(Legacy SQL編)

一般的なSQLに慣れてきた人がBigQuery(Legacy SQL)を使う際によくハマるポイント、 特にGoogleアナリティクス360(旧Googleアナリティクスプレミアム)が出力するログデータを扱う場合に直面する問題を中心に解説する。 Googleアナリティクス360のログデータはBigQueryの特徴的なところを嫌というほど満載している。 ということで、これを扱えれば大概の問題には対応できるようになるだろう。 なおLegacy SQLに限定した話。Standard SQLは未検証。 言語個別の仕様 ネストされたデータ形式 BigQueryでは各レコードの1個のカラムに複数の値、つまり…

続きを読む →