見出し画像

非エンジニアがSQLを覚えてよかったコトと学習方法について

こんにちは!recotoriという旅行SNSを運営しているowano(@owano49)です。ディレクターやプロダクトマネージャーとして、アプリ側をメインで担当しています。

最近SQLを使えるようになりまして、企画の精度や業務効率がすごくよくなったので、覚えてよかったコトと、どのように学習したのか?をまとめてみました。

「SQLを使えたほうがいいんだろうか?」「どうやって勉強するんじゃ?」などの未来のSQLの使い手の参考になったら嬉しいです。(自分も先人の非エンジニアの記事にすごく助けられました🙇‍♂️)

ちなみにレベル感でいうと、複数テーブルのJOIN、CASEで条件分岐、サブクエリ、集計関数、あたりは普通に使えます。WITH句とかUNION、WINDOW関数は使ったことないですが多分使えます。

SQLを使えてよかったこと

画像1

■要件や仕様を考える精度&速度がUP!
・「テーブル構成はどうなってるか?」とか「どうやってデータを抽出して返してるのか?」がイメージできるので、無理ゲーな仕様を考えることが無くなります!

実際のデータをみながら仕様検討ができます。たとえば「いいね数順で並べたらどんなデータがでるのか?」「期間が7日と10日でどう違いがでるか?」とかも一撃で出せる

■施策の効果検証がスピーディー&ラクになる
・施策を打ったあとにいちいちEXCELで分析せずとも、ダッシュボードを作っておけば一瞬で分析できる

・EXCELだと重すぎて扱えない大量のデータでもスピーディーに集計できる

■エンジニアにデータ抽出を依頼しなくて済む
・エンジニアが開発に集中できる、ディレクターが依頼を”気負わずに”、見たいデータをすべて抽出できる

・たとえば抽出してもらったあとに「あ、やっぱり◯◯のカラムも入れてもらえますか?」「数日経ったので最新データをもう一度もらえますか?」などの気まずいやりとりが皆無になる(けっこう大事?)

■エンジニアとの議論がスムーズになる
・「この仕様だとパフォーマンスに影響でそうっすね」という言葉がこれまではブラックボックスすぎたが、「なんで処理が重くなるのか」がなんとなく分かるので、あらかじめ想定しておける

学習方法

画像2

実際にどのように学習したのか?を書いていきます。ひとことでいえば、「習うより、慣れろ」です。「勉強」に時間をかけすぎないほうが良いと思います。

■前提
・3年ほど前にProgateのSQLコースを2周やっている
 ┗業務で使ったことがないが、select A from B と書くことは覚えていた

・EXCELはそこそこ得意
 ┗IF文などの関数使ったり、データ分析は少しやってた

・環境は自社データベース(mysql)を自由に叩ける環境がある
 ┗最初はなかったけど、途中でエンジニアに作ってもらった(マジ感謝!)
 ┗正直、この「SQLを自由に叩ける環境」がないと実務レベルでのスキルは身につかないと思います。。(ここを知らずに昔SQLを勉強したけど、実務で使わないとやっぱり身につかない)

■学習の流れ
実際には、もっと試行錯誤したけど、もう一度以前の状態に戻るとしたら、何をやるか?をふまえて書きました。

1.Progateを1周(半日もかからない)
いわずとしれた定番サイトです。本当にお世話になりました。入門にうってつけだと思います。

2.Progateをもう1周(2〜3時間)
一撃でおわります。

3.SQL tutorial を読む(1時間ぐらい)
ビジネスサイドの人がSQLの概念を理解するためにオススメ。

4.自社のデータベース構造を理解(1時間ぐらい)
・ER図をエンジニアに出してもらって、眺めた
 ┗どんなデータがあるのか?どんな感じでリレーションしているか?をざっくり理解する
 ┗実際のテーブルの中身を眺めた(recotoriであれば、ユーザー情報、投稿情報、スポット情報、などのテーブルの中身を知る)

5.自社のデータベースをひたすら叩いて実践
・欲しいデータ、見てみたいデータを、ひたすら叩きまくる

この本を辞書的に使ってました。

つまづいたことと解決方法

画像3

やる気を出して学習を進めても、どうしても躓きポイントは出てくると思います。自分はメンター的なエンジニアが同じチームにいたので、なんとかなりました🙇‍♂️

・SQLの構文はわかるんだけど、自社のデータベースに対してクエリが思いつかない問題
⇒自社のデータベース構造がわかってないことが原因。超簡単なselect文でいいからまず自社データで抽出してみると良い
 ┗たとえば「select A from B where ◯◯ limit 10」とかでよい
 ┗ちょっとずつ、JOINつかったり、条件増やしたりする
 ┗最初からイキって複雑な分析やろうとすると詰むので注意

・サブクエリの概念が理解できない問題
 ┗例えば「1人あたり投稿回数の分布(ヒストグラム)」が出せなかった。EXCELなら余裕なのに。。。
⇒「サブクエリは新たにテーブルを作成するイメージ。from句に記述して、joinするとよい」とエンジニアに教えてもらってから、霧が晴れた。

・(ある程度慣れたあとに)より複雑なクエリを書きたいけど、どんなことができるのか、イメージがわからない問題
⇒本を買って、事例をひたすら調べた(現在進行形)

さいごに

ここまで読んでいただきありがとうございました!繰り返しになりますが、自分はSQLを学んですごく良かったですし、もっと早く知っておきたかったな〜と思います。むしろ、SQLを知らずに、よく今までディレクターやってたなという感じです。

今後の豊富ですが、まだ弊社ではRDBを叩く環境しかないので、big queryと連携して、アクセスデータやイベントデータも抽出して最強ダッシュボードを作りたいです。(ようやくこの前big queryと連携された!練習し放題)

もしよろしければ、感想やフィードバックをコメント欄やTwitterなどでいただけたら嬉しいです。

ほそぼそとTwitterやってます⇓

【参考にしたURL】
SQL Tutorial
非エンジニアがSQLを学習する際の11の心得
非エンジニアが最速でSQLをマスターする方法
非エンジニアが気づいたらSQL書けるようになった話@BASE
ディレクターがSQLを使えてよかった話
プロダクト改善のためにウォッチしておくべき7つの指標
ディレクターがSQLを覚えて、捗った話



この記事が気に入ったらサポートをしてみませんか?