機械学習用のLinuxインスタンスの環境構築(GCEやEC2などクラウド)

最近では機械学習の計算のためにLinuxマシンを構築しては消し、を繰り返すことが多い。サーバの構築と消去が柔軟に可能なことからもEC2やGCEなどクラウドのインスタンスをよく使うということも影響している。 この記事では一般的なサーバ構築の記事では紹介されていない、クラウドのインスタンスで意外と盲点になる点を中心に、機械学習の計算用サーバとして安定した運用をするために最低限必要な設定をまとめた。 Linuxで最初にやっておくべき設定 Amazon EC2やGoogle Compute Engingなどのクラウドインスタンスのデフォルトの設定では不都合があるため、設定を追加する必要がある。 スワッ…

続きを読む →

GA4/Firebaseのログをフラット化する汎用クエリ

GA4(Firebase)のログを扱う際、ネストされているイベントパラメータやユーザープロパティをフラット化しないと使いにくい。ところが格納されているパラメータやプロパティは決まっているわけではないため、通常はそれをハードコーディングで指定することが多い。つまり使用しているパラメータやプロパティに応じてその都度クエリを手動作成することになる。 しかしそれでは面倒なので、どんなイベントパラメータやユーザープロパティを使っていても、それがどんな型であっても、オールマイティにフラット化するクエリを作る。存在するパラメータやプロパティに基づいて動的にクエリを作って実行する。このクエリひとつあればどんな…

続きを読む →

GCPのIAMポリシー

GCPのIAMポリシー(権限設定) GCPにおける階層と言葉の定義 組織 (フォルダ) プロジェクト 各種リソース Cloud Storage BigQuery Compute Engine : プロジェクトとリソースを中心に考える。 フォルダや組織はプロジェクトを便宜的に束ねるもの。フォルダや組織は設定しなくてもいい →後述するが、組織/プロジェクト/リソース単位で権限設定ができる アカウント アカウントには2種類 ユーザーアカウント Googleのログイン画面からログインできるアカウント 人間ユーザ。異動や退職とともにアカウントがなくなるケースも想定する必要がある 一部のGoogleアカウ…

続きを読む →

Googleアナリティクス4のBigQueryエクスポート仕様

GA4のBigQueryエクスポートの仕様とデータの扱い方を説明する。GA4のログはネストされたレコードなど特殊な形式になっており、そのままでは扱いにくいのでいくつかテクニックがある。 BigQueryへのエクスポート設定 GA4の管理画面で設定するが、手順はこちらの記事を参照。 テーブルの場所 GA4のBigQueryエクスポート設定で指定したプロジェクト データセット「analytics_999999999」(「999999999」の部分はプロパティID) テーブル名 前日までのデータ(日付別に)「events_20210101」 「20210101」の部分は日付 今日のデータ、前日未集計…

続きを読む →

WordPressで生成した静的サイトをNetlifyで公開する

本ブログではたびたび静的ウェブ配信について説明してきたが、 個人で静的配信するなら決定版といえる方法を紹介する Netlifyとは WordPressで静的サイトを生成し、Netlifyで公開する。Netlifyは 静的サイトのホスティング AWS Lambdaのような関数 フォーム などができる、サーバレスで何らかのサービスを配信するためのプラットフォームである。個人用途であれば大部分の機能を無料で使える(複数ユーザ、Basic認証などは有料)。 端的に言うと静的サイトの配信を無料でできるサービスである。リダイレクトや転送(リバースプロキシ)も可能でリスト形式で設定できる。動的コンテンツは別…

続きを読む →

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

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

続きを読む →

Digdag / TreasureData Workflowのエラー処理

Digdag / TreasureData Workflowのエラー処理。エラー時の処理を指定する_errorだけでなく_checkやfail:>などの処理もあり、エラー発生/成功時の処理をカスタマイズできる。自由度が高く、ワークフローの階層構造とともにうまく使えばワークフローのコードが簡潔になる。公式ドキュメントの説明が不十分なので補足する。 Digdagがエラーと判定して_errorを発動する条件 コマンドの戻り値が0であれば正常、0でなければエラーとみなす。つまりシェルスクリプト(sh:>)の場合は exit 1 であればエラーとなる。 _errorを複数の階層で記述するとど…

続きを読む →

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が可能…

続きを読む →

WordPressのウェブサイトを静的化し、Firebaseで配信する

Firebaseといえばネイティブアプリ(iOS, Android)のイメージがあるが、ウェブ運用でも便利。今回は純粋なWebサイトだけの運用のケースで環境をFirebaseに統一してみた。使うのは以下の機能 Firebase Hosting: 静的HTML、画像などのファイル配信 Google Analytics for Firebase: 計測 これらを独自ドメインのHTTPS環境で公開する。コンテンツはWordPressで管理、生成する。 ドメインは https://marketechlabo.com https://www.marketechlabo.com wwwのないURLからww…

続きを読む →