BigQueryを使用したデータ分析

業務でBigQueryを使うにあたって、以下の連載記事を参考にした。

medium.com

今まで業務で触ってきたmysql,postgresqlと違う癖の強い所があってとっつきにくく感じていたが、他のDBにはない便利な関数があったりして慣れれば便利かと思い始めた。

通常のDBと違い、各行のデータとして配列、構造体の配列なんかを含めることができる。 最初はえらく複雑な構造だと思ったが、構成を理解した上でunnest関数を使ってやればそれほど難しくもないように感じるようになった。 developers-jp.googleblog.com

あと、連載記事にもあるように、データポータルや、AutoML Tablesとシームレスに連携して分析が可能なのが魅力に感じた。それとcountif関数が便利。

COUNTIF Function  |  Google Cloud Dataprep Documentation

しかしデータ量増えた場合のクエリの課金を気にしないといけない所がネックだな、と感じる。 SQLの試行錯誤もしにくいのがちょっとつらい。

SQLを手になじませる訓練中

ここ3年くらいはWebエンジニアとしてRailsやらJSやらをずっと書いていたのだけれど、4月からデータ分析の仕事に携わることになったので、 最近はSQLを基礎からやり直している。

そもそもはWebアプリのフロントエンドエンジニアとして今の職場に入り、次第にRailsのバックエンドも触るようになってきて、そうするとActiveRecordが生成するSQLを理解しないとN+1などのパフォーマンスの問題改善ができないので、必要に駆られてSQLは学んできた。(基本情報取るときにSQLも勉強した気もするが、10年以上前の話で、それからしばらくJS, CSSばかり触っていたのでほぼ忘れていた)

以下のドリルを一通りやったりした。 www.amazon.co.jp

といってもWebアプリ制作時にはそれほど複雑なSQL文を書くことはあまりなく、今まで使わなかったCASE式や、集合演算などを思い出すため改めて上のドリルの 2章、3章をやってみた。

GitHub - taka-yoko/sql_drill_202003: SQLの基礎体力づくりのためSQLドリルをすべて解く

一度やっているし、実務での経験も積んでいるので比較的スムーズに終わったが、CASE式を使ったクロス表作成やunionでの組み合わせの出力など、データ分析で使いそうな所を手を動かしながら復習できたのはずごくよかった。

Vue.jsの全てをそこに置いてきた

Vue.js入門 基礎から実践アプリケーション開発まで

Vue.js入門 基礎から実践アプリケーション開発まで

業務でVue.js使っているのだけれど、フロントエンドのタスクがしばらくなかったりすると忘れる(ruby脳→js脳に切り替える必要がある)ので、Vue.js入門の第2章を読みつつ本の通りに実装した。

割とこの例でVue.jsの基本的な所をすべて抑えているので、Vue.js脳に切り替えるためにはちょうどいいと思う。 filterはあまり使わない人が多いみたいだけど、mixinにして金額や日付の共通フォーマットにしたりすれば便利。

Elm Meetup in Summer に行ってきた

8/25(日)にElmのMeetupに行ってきました。 elm-jp.connpass.com

2019年にわざわざ学ばなくてもよい言語で一位になったElmですが、qiitaではちょくちょく ランキング内に記事が上がっていて、最近お気に入りの無職やめ太郎氏も記事にしていたり したのでちょっと興味がありました。

japan.zdnet.com

qiita.com

qiita.com

行ってみた感じでは、

  • 純粋関数型言語なので実行時エラーは起きない
  • react, vueなど、後々Elmの思想を吸収している。(最終的に全てがElmになる?)
  • 実案件では社内に1人はElm masterがいないとつらいかも
  • フォームのテストなどは書きやすい、とのこと

やめ太郎氏のqiita記事にもあったように、Elmを触ってみて関数型、静的型付けの恩恵を 理解した上でreactなりvueなりに戻ってみるだけでも意味はありそう。

Baseball Mapping Talks+ #2 に行ってきた

connpass.com

togetter.com

8/29(木) にBaseball Mapping Talks+の第二回に行ってきました。

野球を色々な切り口から楽しむための会で、前回に引き続き参加。 特に元西武・巨人の豊田清さんの対談があるのに引かれました。

「Player Developmentとデータ分析者の立ち位置」 森本崚太さん (@ryota_mrmt)

野球のデータ解析を行い、それを実際にプロ野球選手にフィードバックしているプロのデータアナリストの方のお話。 データを選手の能力開発にどう活用するか、どう伝えるか。

「現役プレイヤーだからできる発信の意義と影響力」 前沢力さん (@riki_maezawa)

軟式野球チームで活躍している前沢さんのお話。 アマチュア野球では、一部の強豪校を除き、トレーニング方法がアップデートされていない所が多い。その点を変えていくにはどうすればよいか? 現役選手の感覚を言語化して発信・共有することで他の選手の能力の向上に役立つ。

私立武田高校でのデータを使った効率的な練習方法。 https://news.yahoo.co.jp/byline/takagiyu/20190103-00109942/

【特別対談】豊田清さん

豊田さんは西武の絶対的守護神というイメージ。 実際優勝した2002年の成績はかなり圧倒的

「一流選手の感覚を伝えるという、“無茶”なチャレンジ」 中島大輔さん(@nakaji72)

選手の感覚をライターとしていかに伝えるか、の試行錯誤のお話。

「Mapping mapping mapping」 やきうのおじさん (@yakiunoojisan)

やきうのおじさん(おじさんではない)の話は前回同様野球以外にも通じる一般的な話 で、聞いていると自分の立ち位置を客観的・俯瞰的に見れるようになる感覚がある。

こんな感じのトークを2時間聞けて、大変面白かった。 野球を楽しむにしても色々な視点で見れると、楽しさが倍増する気がします。

Gunma.webに行ってきた

1年ぶりくらいに地元群馬のWeb勉強会Gunma.webに参加しました。 フリーテーマのLT大会で、どの発表も興味深いものばかりでした。

gunma-web.org

「可能な限りRDB脳のままCloud FireStoreを使ってみる」@TsukasaGR さん

speakerdeck.com

Firebaseが提供しているクラウドデータベースCloud FireStoreの話。 フロントから操作できるので別言語でバックエンドの記述をしなくてすむ。 その他サーバー管理不要でオートスケールまでしてくれ、リアルタイム同期も簡単に実装可能。 ただし複雑なリレーションなどは苦手なよう。 無料で始められるので、ちょっと触ってみたいと思いました。jsで完結するのがよいですね。

「インストール不要!ブラウザでARはじめました」 @nobnov さん

speakerdeck.com

AR/VRの市場がこれから伸びてくる。調査によればARの方が伸びる可能性が高いらしい。 jsでARを実装できるAR.jsとデモを見せてくれました。 ARも手軽に実装できるようになってきましたね。

「今さら聞けないAnsible」@kanayannet さん

speakerdeck.com

サーバーの構成管理ツールAnsibleと他のツールとの比較。AnsibleはYAMLで記述できるので他のツールに比べて学習コストが低い。clientはSSHで接続できる。 個人的にインフラ周りはあまり触る機会がないのですが、お試しは簡単にできそうなので実際に手を動かしてみたいと思います。

「Nuxt.jsから始めるPWA生活」@pori さん

speakerdeck.com

Nuxt.jsを使うと異世界チートが可能である、というお話。(たぶん) でもiOSでちょっと問題があるらしい。 Nuxt.jsはvue.js版のrailsみたいなイメージで、今どきのwebにはこれ必要だろ、という点が簡単に実装できそう。

JavaScriptを使わない」 @Childhooooo さん

speakerdeck.com

昨今のjsの流行とは逆に、jsを一切使わずにフロントのインタラクティブな処理が書ける。 こういう選択肢があるとは思わなかったので目から鱗でした。

「Array.reduce TIPS」@_shimizu さん

shimz.me

javascriptのArray.reduceの便利な使い方。rubyのreduceは結構使っているのですが、jsのreduceも非同期処理などで結構使えそう。

懇親会も出席したのですが、人見知りが炸裂してあまり喋れなかったのがちょっと残念でした。 次回はなにか発表できたらと思います。

柳生Classの野望

歴史の流れをUMLを使って書き出す、というのをtwitterで見てから面白いな、と思いつつVS CodeにPlantUML の機能拡張を入れたまま放置していたのだが、クラス図を使って家系図を書けるのでは、と思って柳生一族の家系図を書いてみた。

Yの文字がちょっとダサかったり、並びが左→右の順なので本来の家系図に沿うならば逆に書かないといけないけど、細かい点は抜きにして結構楽しく書けた。 githubで管理すれば随時拡張して、履歴も残せるので便利。

https://github.com/taka-yoko/yagyu_family_tree/blob/master/out/yagyu/yagyu.png

参考

qiita.com