コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

FusionTableをつかってみりゅぅぅぅ

GoogleにはFusionTableというものがあるらしい

いままで僕はグーグルにおける全ての情報はスプレッドシートでデータを管理するのが正義だと思っていたのですが、GoogleにはDBとして使えるFusionTableなる機能が提供されているようです。

chrome.google.com
こいつらしいです。
更新日: 2014年7月2日と試運転用というめっちゃ不安になる要素しかないけど、使ってみるよ。なんといっても無料ですからね。


ヘルプ
About Fusion Tables - Fusion Tables Help


評判とか割とよくないけど、DB設計の練習用なんだと思えば使い道でてくるでしょう。よくわかんないですけど。てなわけで、SQLいじるよりもパズル解く感のあるDB設計について軽く触れます。どうせ、ここであげたツールも利用できるSQLに制限付いてるんだからなんとかするには設計でカバーするしかないしね。

1. エンティティの洗い出し
エンティティ……日本語だと「実体」なんて言われます。インスタンスも「実体」とか訳されます。混乱しますね。とりあえず、こっちの単語はDBつくりで出てくる単語だと思えばいいと思う。それで、これを使って何をやるかと言うと実際に必要なデータ集めです。例えば、「商品、在庫、値段……」などの情報のことを言います。

2. リレーションの定義
エンティティ同士の関連性です。エンティティ同士の関係性を考慮していきます。プロダクトとかで見ると、「ヒト・モノ・カネ・情報」みたいな経営資源で関連性を見出していくとうまくいきそうな気がする(いい加減)。

3. 正規化
関連性をつくっても、似たようなデータの繰り返しになってしまうことあります。そんな時にデータを分離します。なんとかIDとか作ってボンガボンガ振り分けていくと良い感じに行くイメージ(いい加減)。

4. ER図の作成
ER図はEntity-Relationship Diagramの略で、上記内容を図として視覚化したようなものになります。やっぱり視覚化って大事で、上みたいにいい加減なことをやったときに「良くないよね」みたいなパターンが出た際に分かりやすくなります。

ざっくりと言ってしまうとこんな感じのことになります。僕がめちゃくちゃいい加減なこと書いてますが、この設計が崩れたらクソDBになるので重要です。こんな説明でも興味がでてしまったら「データモデリング」でググるなりして理解を深めたり、深めなかったりしてください。

早速、つかってみる。

そうしたわけで、設計の話を軽く入れてみましたが僕は使ってみたいだけで触っているクズなので上記の設計的なことはしません。ぶっちゃけ正解わかんないしね。そもそも思い付きのデータをボンガボンガ追加するような使い方しか想定してないし、前提条件が崩壊してるしね。


とりま、起動するとこんな感じです。
f:id:andron:20180527201427p:plain

んで、使い方よくわかんないけど新規のテーブルでも作ってみます。
f:id:andron:20180527202212p:plain
マップとかチャートとかあるけどなんなんですかね……。それと、カラムの追加分からなかったんですけど、カラムのチェンジを選択することで追加できるらしい。何その仕様意味わかんない……マジ無理リスカしよ……。

それでとりあえず、つくるテーブルが思いつかなかったので試験的に僕がインタビュー系サイト(Ask.fmとか)でやっているどうでもいいデータをここにぶち込んでみることにしました。これやることで何がわかるかとか、できるとか分らんけど僕のネット依存度とかわかるかもしれない…?

f:id:andron:20180527215421p:plain
ま、こんな感じのデータをねじ込んでみます。使える型は「Text、Number、Location、Date/Time」らしいです。それぞれの細かい仕様はよくわかんないです。
とりあえず参考になりそうなやつ
Data entry - Fusion Tables Help

テーブルを確認してみる

そんじゃ、せっかくテーブル作ったんでGASでSELECT投げて確認してみます。作ったテーブルはdocidで管理されるっぽいですね。
f:id:andron:20180527222609p:plain

GAS開いたら準備として「リソース」→「Googleの拡張サービス」から「Fusion Tables API」を有効にして*1、「Google API コンソール」のほうの「Fusion Tables API」も有効にして*2、以下の確認スクリプトを流して確認できるようです。

function myTableSelect() {
   var docid = "Your DocID";
   var sql = "SELECT * FROM " + docid;
  
   var result = FusionTables.Query.sqlGet(sql);
   Logger.log(result);
}

実行結果

[YY-MM-DD *******] {kind=fusiontables#sqlresponse, columns=[サービス名, 更新内容, 回答数, 回答満足度(%), 更新日], rows=[[Ask.fm, 質問の回答, 5, 75, 2018-05-26], [Sarahah, 質問の回答, 0, 0, 2018-05-27]]}

とりあえず、これでひとまずDBとしての利用の確認はできました。お疲れ様です。Where句が使えないとかちょっと何言っているのか分からない情報がインターネットに錯綜していたりしますが、僕は無料で使える限りこれで頑張っていこうと思います。


*1:面倒くさい

*2:とても面倒くさい