ミネムラ珈琲ブログ

AI画像Tシャツ屋/ITラノベ著者/さすらいのコーヒー屋/WEBサービス開発チームマネージャーの日記

Google Fusion Tablesを有効活用するたったひとつのポイント

悪いことは言わない。やめておけ。

前提

Google Fusion Tablesというのは、Googleドライブ上で使えるRDB的なアプリケーション。ドライブのアプリケーションなので、当然GoogleAppsの利用範囲においては追加的なコストは発生しない。APIからSQLを叩いてデータの入出力ができる。ファイルを削除しないかぎり、GoogleDriveがダウンしないかぎり24時間いつでもアクセスできる。はっきりいって超イケてる。

ちなみに暗黙の前提だが、Fusion Tablesを不特定多数のユーザー向けアプリケーションのDBに据えようという人はあんまりいないと思う。ベータ版だし、容量にも限度はあるし。自分のGoogleアカウントと紐づく形でしか作れないし。

おそらくFusion Tablesを使いたくなる人は以下の様な人だと思う。

  • ノンエンジニア
  • 大なり小なりなにか数字を集計/分析する仕事をしている
  • ちょっとしたDWH的なRDSが欲しい
  • ダッシュボード的なものの元データにしたい、アドホックな分析もしたい。

こういう人にとって、Fusion Tablesの備えているスペックは神のようだ。

項目 Fusion Tables AWS or GAE 社内サーバー 手元のPC
費用 追加無し 従量課金 追加なし 追加なし
稼働 24時間 24時間 たぶん24時間 電源ON時
導入ハードル ほぼ無し 要金銭的決裁 サーバー管理者に許諾 インストールと設定
メンテナンス 不要 不要 同居人が怖い いろいろ不安

AWSとかGAEを使うのが理想的な感じはするんだけど、会社員としては、1円でもコストを追加コストを払うには決裁をとらないといけない。金額が大したことないので、自己決裁で済ませられるケースも多いだろうし、必要だったとしても「OK?」「OK!!」ぐらいのやり取りで終わるかもしれない。しかし、それでも0と1の差は大きい。

社内のサーバーはちょっと微妙な選択肢だ(ノンエンジニアを前提としているので、自分の管理下にサーバーはない)。24時間動いているはずだけど、割り当てられるところによっては常時動かす必要もないのでカジュアルにメンテで止められたりするかもしれない。気づいたら1回分バッチが回ってなくて、報告した数値が間違ってたとか目も当てられない。あと、許諾を取るのがめんどくさい。大したことではないんだけど、人に作業してもらうのって少し気が重い。その後も何かあるたびにコミュニケーションが必要だ。

手元のPCは選択肢としては遠い。日頃持ち歩いていてネットがつながっていなこともある。業務中以外は電源も切っている。自分以外がアクセスできない(させたくない)。DBのインストールとか設定とかやりたくない。

Fusion Tablesはサイコーだ。とにかくもうめんどくさいことがなにもない。Googleドライブ内なので、Google App Scriptで動かすのも心地よい。

でもこれらはごくごく表面的なことだ。

やってみたら詰んだ

ウキウキしながら使い始めたのだけれど、合計丸一日ぐらい試行錯誤した結果、やめた。悔しくてむせび泣いた。

WHERE句でORが使えない

もうこの時点でやめるべきだった。

でもまだ「Fusion Tablesすげえ!」ってなってるから、「俺が悪かった!アルゴリズム考えるよ!」とか思って、ORを使うたびにクエリを叩く回数を増やす感じになる。

SELECT以外でWHERE句使うときは、rowidでしか条件指定できない

なぜこの時点でやめなかったのか。

ぎりぎり「うーん、、、Fusion Tables、この使い勝手の悪いところもカワイイ・・・!」ぐらいだから、「ここを超えれば素晴らしい景色にたどり着くんだ!」とか思って、SELECTでrowidをリスト抽出して頑張ってみる。

DELETEはそもそもWHERE句使えない

rowidを抽出して頑張ったのですが、どうにもうまくいかなくて、調べているとDELETEはWHERE句をそもそも使えない、つまり1行でもデータを消したいときはテーブル全体を消すしかない。これはちょっとDWH的な使いかた流石に無理だ。「いや、delete_flgカラムを作って、0,1を切り替えていく運用にすれば・・・!」って今思いついたけどもう本当にやめようと思う。

そもそも情報がない

日本語英語含めて、情報はかなり少なかった。いまではその理由がわかる。使えないからだ。少なくとも、2016年6月時点では。