プログラミング初心者のマーケターがSQLを学んでよかったと感じること

こんにちは。NewsPicksマーケティングチームの吉富です。
[NewsPicks Advent Calender 2019](https://qiita.com/advent-calendar/2019/newspicks) の18日目として、「プログラミング初心者のマーケターがSQLを学んでよかったと感じること」をお届けします。

# はじめに
NewsPicksでは非エンジニアでもSQLを叩いてユーザーの行動データを集計・分析できる環境があります（プライバシー保護の観点から、個人を特定できる情報は含まれておりません）。

私が所属しているマーケテイングチームは、ユーザー獲得やリテンションを担っているのですが、基本的には自分たちでSQLを叩き、施策の効果検証やユーザーの行動を確認し、分析しております。
このようなスキルは、NewsPicksだからというわけではなく、デジタルマーケティングに関わるマーケターであれば誰しもが今後求められてくる時代が来るのではないでしょうか。

そこで今回は、プログラミングの経験がほとんどない私が、SQLをどのように学び、それにより感じたメリットをご紹介したいと思います。

# 必要なSQLの知識はそんなに多くない
SQLを使ってデータ分析できるメリットの話をする前に、

1. SQLとは
2. マーケターが最低限知っておくべき構文とは
3. どのようにSQLを学んだか

という点についてお話ししたいと思います。

## 1. SQLとは
SQLは大きく分けて3つ種類の言語から構成されております。データベースを制御したり操作したりする際に使い分けられ、すべて命令文で動詞と目的語を組み合わせた構文になっております。

**●データ定義言語（Data Definition Language）**
テーブル等のオブジェクトの構造や、それらの関係を定義する構文です。

　　CREATE：新しいデータベースやテーブルなどのオブジェクトを定義する
　　JOIN：テーブル同士を結合する
　　DROP：定義したオブジェクトを削除する
　　ALTER：定義したオブジェクトの内容を変更する
　　TRUNCATE：データをすべて削除する

**●データ操作言語（Data Manipulation Language）**
データベースを操作するための構文で、目的語やさまざまな条件を示すキーワードと組み合わせて使われます。

　　SELECT：データベースを検索する
　　INSERT：データを挿入する
　　DELETE：データを削除する
　　UPDATE：データを更新する

**●データ制御言語（Data Control Language）**
データへのアクセスを制御する構文で、ユーザーのアクセス権を制御したりするために使われます。

　　GRANT：ユーザー権限を付与する
　　REVOKE：ユーザー権限を削除する
　　BEGIN：トランザクションを開始する
　　COMMIT：トランザクションを確定する
　　ROLLBACK：トランザクションを取り消す

## 2. マーケターが最低限知っておくべき構文
上記でSQLの構文の種類についてご紹介しましたが、マーケターが最低限知っておくべき内容はそんなに多くありません。
複雑な処理を行おうとすると習得にそれなりの時間はかかりますが、データベース技術者ではないので、データの整備ためのものを学ぶ必要がないからです。
主に、SELECT文・WHERE句・GROUP BY句・ORDER BY句・JOIN句・WITH句・比較演算子等を扱うことができるようになれば基本的な分析は問題ないと思います。

## 3. どのようにSQLを学んだか
異論はあると思いますが、私の場合は初めに基本構文を一通り学んだのち、（環境があれば）実務で実際に社内のデータベースに触れ、わからないことがあれば調べるを繰り返すのが効率的だと考えております。

基本構文を学ぶのに役立ったのは[Progate](https://prog-8.com/)のオンラインレッスンです。
ボリュームがそこまで多くないので、短期間に集中して5周くらいしました。
<img width="1440" alt="スクリーンショット 2019-12-18 0.56.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/541110/5044ed30-6c2c-c6ab-5e99-5e4e7464866c.png">

ある程度の知識がついたらあとは実務で学んでいくのが効果的です。 不明点が出ても検索すれば基本出てきますし、それでもわからなければ社内のエンジニアに聞けば教えてくれるはずです。

# SQLが使えるようになって感じたメリット
### メリット①：「分析思考」になることができる
データドリブンマーケティングという言葉が広く浸透してますが、これには意思決定の材料となるデータをどのように得るかという「分析思考」が必要になります。
どのようなデータがあれば正しい判断ができるのか、そのデータはどのような分析で得られるのかを明らかにすることがデータドリブンマーケティングの最初のステップだと考えております。

SQLが使えるようになると、上記のデータをどのように分析して出そうかと考えるようになるので、必然的に「分析思考」が身についていきます。

しかし、分析という行為は、「何を」知りたいのかを正確に定義しておかないと、ダラダラと時間を使ってしまうことが多々あります。

そこで私の場合は下記の3点を明確にしてから分析を始めるよう心がけております。

- 分析の目的は「何か」を言語化し、
- その目的をどのような指標で計測するかを決定し、
- その計測した結果を、次はどのようなアクションに活かすか

これを行うことにより、

- 「この分析ってなんのためにやってるんだっけ？」と迷走し始める
- どのようなアウトプットが適切なのかわからない
- 考慮したい変数が増え、分析に過剰に時間を使ってしまう

というような事態を防ぐことができます。

### メリット②：PDCAが回しやすい
突然ですが読者の皆さまは、施策のPDCAのスピードに満足しておりますでしょうか。
多くのマーケターが直面する課題の一つがこのスピード感ではないかと思います。

ところが、これもSQLが使えるようになると、

- 分析のためのエンジニアのリソースが確保できない
- 分析を依頼しても多少なりともタイムロスが生まれてしまう

といった悩みがなくなり、データを見ながら打ち手をすぐに変えることが可能になります。

また、定常的に見る数値であれば、ダッシュボードを作り、モニタリングすることで異常値の検知と対策もスムーズにできます。

### メリット③：詳細な分析ができる
Google Analytics等の計測ツールを使えばある程度のサービス・アプリの使用状況はわかります。
手軽に使うことができ、ユーザーのアクセス状況、経路などの分析が直観的に行えるので重宝している方も多いのではないでしょうか。

しかし、社内のデータベースにしかないデータを掛け合わせるとなると限界が見えてきます。

一方で、SQLを使えば、社内に蓄積されたデータベースの情報に直接アクセスできるため、例えば「どのチャネル経由のユーザーの課金率が高いのか」「どのコンテンツで課金したユーザーの継続率が良いのか」といったような、詳細な行動分析を行うことができます。

ただし、すべてのデータをSQLで見る必要はなく、集客チャネルのパフォーマンスや、大まかなアクセス状況の把握にはGoogle Analytics等の計測ツールを利用し、ユーザー行動の変化や、詳細な行動分析にはSQLを用いるなどの使い分けが必要になってきます。

# さいごに
SQLを学び始めると意外と簡単にデータを扱えるようになります。

そして単純に面白いです。

データを見始めるようになると
「切り口を変えてみたら結果にどのような変化があるのだろう」
「良いユーザーってどのような行動を取っているのだろう」
と次々にアイデアが出てきます。

ぜひSQLでの分析を始めてみてください！