寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

BQMLのサンプルのqueryitを触ってみた

query-itってなに?

Groovenautsさんが作った、BQMLのサンプルアプリケーション ソースコードもろもろは多分 こちら

こちらのURL からアクセスできたのでメモがてら記事を残します。

使い方

URLでアクセス

http://queryit.magellanic-clouds.com/ にアクセスします。

最初、reCAPTCHAが表示されるのでポチッとしましょう。

f:id:chidakiyo:20190411085732p:plain

メニューを選ぶ

  • wikimediaのイメージから似たものを探す
  • ニューヨークのレンタル自転車の需要予測

の2つから選択できます。

f:id:chidakiyo:20190411085756p:plain

wikimediaを実行してみる

wikimediaのアイコンをクリックしたあとでランダムに画像が3点表示されます。 選択した画像に似た画像をBQを利用して公開画像から探して表示をしてくれます。

3つのうちのどれかを選択してみましょう

f:id:chidakiyo:20190411085813p:plain

実行するとBQでクエリが実行され少し待ち時間があります。

f:id:chidakiyo:20190411085835p:plain

クエリの実行が終了すると画面内にBQが似ていると判定した画像たちが表示されます。 たしかに結構似てますね。

f:id:chidakiyo:20190411085855p:plain

実行したクエリを見る

ShowSQLボタンを押すと実行したクエリが表示されます。 クエリの一部が表示されるので、スクロールして全体を見ることができます。

f:id:chidakiyo:20190411085914p:plain

レンタル自転車の需要予測を実行してみる

メニューからニューヨークのレンタル自転車の需要予測を選択します。

条件を指定するダイアログが表示されますので、 予測したい条件を入力します。

f:id:chidakiyo:20190411085935p:plain

クエリが実行され、しばらく待ちます。

f:id:chidakiyo:20190411085950p:plain

だいたい20秒ぐらいで予測が完了します。 めちゃ速いですね

f:id:chidakiyo:20190411090008p:plain

画面のcloseを選択し、地図上に表示された予測を見てみましょう

f:id:chidakiyo:20190411090030p:plain

先程と同様に ShowSQL ボタンを押すことでクエリを見ることができます。

さいごに

こちらのデモは2年ぐらい前のGoogle Next Tokyoで見たのですが、 BQの可能性を感じたとてもおもしろいサンプルで、今回publicにアクセスできるURLを見つけたので感動をシェアしたくて記事にしました。

BQ便利なのでどんどん使っていきましょう!

自分がよく利用するDockerのコンテナ(メモ)

CI/CDをする際によく利用する、GCPを利用するなら特に知っていたほうが良さそうなコンテナたちをメモ。

GoogleCloudPlatform/cloud-builders

GitHub - GoogleCloudPlatform/cloud-builders: Supported builder images for Google Cloud Build

この辺りが含まれています。

f:id:chidakiyo:20190311094126p:plain

GoogleCloudPlatform/cloud-builders-community

GitHub - GoogleCloudPlatform/cloud-builders-community: Community-contributed images for Google Cloud Build

だいぶいろいろあります。

gcpug/docker-appengine-go

GitHub - gcpug/docker-appengine-go: https://gcr.io/gcpug-container/appengine-go

gitlab-ciでデプロイする際に私は利用しています。

enjoy!

GCP Update 2019/03/06

直近のGCPのアップデートはこんな感じ

- BigQuery sandbox: beta
- Kubernetes Engine – node auto-repair: GA
- Kubernetes Engine – node auto-upgrades: GA
- Compute Engine – guest attributes: beta
- Kubernetes Engine – Application-layer Secrets Encryption: beta
- Compute Engine – health checking and autohealing for managed instance groups: GA
- Cloud Composer – support for multiple Apache Airflow versions: GA
- BigQuery available in São Paulo: GA
- Cloud TPU on Cloud Machine Learning Engine: GA
- Compute Engine machine types: beta
- Cloud ML Engine – training with custom containers: beta
- Cloud Storage – Bucket Policy Only: beta
- Transfer Appliance model TA480 available in Europe: beta

Key announcementsは BigQuery sandbox で アナリティクスに対して無料でクエリできるよ、みたいな感じだろうか。

GCP 2019/02/19 の UPDATE

UPDATEがあった項目は以下

Cloud Firestore: GA
App Engine flexible environment – WebSockets support: beta
Internal load balancer – service discovery: GA
Private Google Access for on-premises hosts: GA
Apigee Developer Portal – SmartDocs, account management, and new theming tools: GA
SSH access to Cloud Source Repositories: beta
BigQuery INFORMATION_SCHEMA: beta
BigQuery – Cloud Audit Logs v2: beta
BigQuery available in two new locations: GA
Cloud Machine Learning Engine – quad-core instances for online prediction: beta
Compute Engine – Cloud TPU v3: GA

Firestore の GA が Key Announcement となっているように、
お待ちかねの Firestore の GA で GAE から利用する Datastore も便利になってテンション上がる!

CloudSQL へローカルから接続できない(という人のために)

GCPMySQLPostgreSQL のような RDB をマネージドで利用したい場合に CloudSQL を選択することが多いと思います。

ポチポチっと押せばすぐにインスタンスが出来上がるし、gcloud コマンドや、Cloud Shell を利用することで用意に接続ができるので、ふとローカルの msql コマンドだったり、 MySQL Workbench のようなツールからつなごうとすると「接続ができない」という状況になることがあると思います。 というかデフォルトの状態では接続ができません。

CloudSQL はデフォルトでは外部からの接続をすべて拒否している

見出しのとおりなのですが、CloudSQL の Connection のタブを見てもらうとわかりますが、

Authorize a network or use a Proxy to connect to your instance. Networks will only be authorized via these addresses

とあるので、プロキシを利用するかネットワークを承認する(IPアドレスを Whitelist に追加する)必要があるようです。

ネットワークを承認する方法

単に接続元の IP アドレスを Whitelist に追加すれば良いので Add Network ボタンを押し以下の画面から自分のローカルPCが外部に接続する際のゲートウェイの IP アドレスを登録すればよいです。 注意点は外部に接続する IP アドレスなので、作業している端末の(ローカルの)IP アドレスではないという点です。

f:id:chidakiyo:20190224045922p:plain

調べる方法としては 確認くん などのサイトが利用できます。

IPアドレスを入力したら、 save ボタンを必ず押しましょう。 (ただ自分が試した際には、うまくsaveされませんでした。その場合には画面をリロードすることでうまくいくことがあるようです)

まとめ

上記に書いたIPアドレスを登録する方法の他にProxyを利用する方法というのもあります。 先程の、外部似でていくためのIPアドレスが固定されておらず、変わる可能性がある場合にそちらを利用する必要があります。 一般的なプロバイダの場合、固定IP契約ではない場合にはIPアドレスが動的に変わることがありますが、比較的リース期間が長いことが多いので検証用等の場合にはIPが変わる可能性はあるが、IPアドレスのWhitelist追加で利用してもしばらく大丈夫な場合があります。

ではでは。

GAE(Appengine)のハンドラの例にある `_ah` ってなに?

くも

こんにちは。chidakiyo です。
皆さんappengine使ってますか?

_ahはどういうサンプルに出てくる?

appengineのサンプルで、 ハンドラのパスに _ah というパスが含まれていることがあると思います。

例えば、warmupするための こちら の例を見てみましょう。

inbound_services:
- warmup

handlers:
- url: /_ah/warmup
  script: _go_app
  login: admin

ありましたね、 _ah
url: /_ah/warmup のような形で利用していることがわかります。

で一体何なのこれ?

stackoverflow にこのような投稿がありました。

Q: What does _ah mean in Google App Engine? / Google App Engine_ah の意味はなに?

A: It comes from apphosting, the underscore is to make it more difficult to collide with some user provided URL. / それは apphosting からきている、アンダースコアはユーザが定義したものと衝突をしないようにしているよ。

I worked at Google, apphosting was the first name they selected for AppEngine, and this name still remains in some parts of the internal configuration. / apphosting は AppEngineのために選ばれた最初の名前であり、その名前は未だいくつかの箇所に残っています。

まとめ

ということで 「歴史的な経緯で _ah」 が利用されているということがわかります。

めでたしめでたし。