非エンジニアが独学でSQLを学んだハナシと勉強方法
某メガベンチャーでプロダクトマネージャーをしている若狭烈です。今回はSQLについてです。毎日1-2時間、基本的な理解ができるまで1ヶ月、ある程度SQLを書けるまで3ヶ月かかったときの具体的なハナシをします。
この記事にたどりついた人はなんらかの興味を持っていると思いますが、特に伝えたいのは「プロダクトマネージャーやディレクターなど非エンジニアで企画・データ分析に関わる業務をしている人は、ぜひSQLを身につけてほしい!!」ということです。
今回は、非エンジニアでプロダクトマネージャーをしていた自分が、どんなキッカケでSQLを学び始めたのか?SQLを使えることでよかったことやメリットはなにか?どのように学習をし、勉強時間はどのぐらいだったたのか?を書きたいと思います。
あとで記載しますが、学習コストも大してかからず、学んだ後の効果や価値は大きいため、コストパフォーマンスがとても高いスキルの1つです。英語や資格試験などを勉強するよりも効果が圧倒的に感じやすいのでオススメです。
この記事を読み終えたときには、「よし、SQLを勉強してみるか!」と思える状態になったら嬉しいです。
▼SQLに関するその他の記事
・【初心者向け】SQLおすすめ本8冊(独学で入門するステップ付き)
・データ分析のおすすめ本・参考書!現役アナリストが厳選
余談:普段はこんな記事を書いてます↓
・プロダクトマネジメントをする人が読んでおきたいおすすめ本
・第四次産業革命スキル習得講座(Reスキル)対象!おすすめプログラミングスクール一覧(最大70%の給付金)
また、本ではありませんが、こういったYoutube動画も参考になると思うので貼り付けておきますね♪
結論:SQLの勉強方法
先に結論だけ書いちゃいます!毎日1-2時間ほど学んで、基本的な理解ができるようになるまで1ヶ月かかりません。その後は実践的なデータで練習しつづけ、2〜3ヶ月ぐらいでだいたいのことができるようになりました。イメージとしては、以下の1〜4のうち、3までを最初の1ヶ月でやる。4を残り2ヶ月ぐらいでやっていれば、そのうち自然にクエリが書けるようになって、初心者から卒業しているはずです。
1.progateを3周する
プログラミング初心者にとても人気のサイトprogateでまずは学び始めました。課金もしました!ちゃんと時間を作れば1週間で終わるので、1000円ポッキリです。ここはケチらずに課金して基礎を身に着けましょう。(念の為ですがprogateからお金をもらってはいない。シンプルに入門に最適です)
https://prog-8.com/courses/sql
2.SQLチュートリアルを読む
非エンジニア向けにSQLの概念説明スライドです。Twitterでオススメだと流れてきて知りました。これはまじでおすすめ。EXCELの理解がある人ならばスッとアタマに入ってくるはずです。
3.SQL入門書を2周(select文だけでOK)
次にSQL入門書を2周ほどやりました。いくつかやりましたが初心者には「スッキリわかるSQL入門」がおすすめです。普通の入門書はエンジニア向けなので、データベースの概念解説とSELECT文のところだけやれば問題ないです。持論ですが何かを学ぶときは「基礎(軽く)→実践→間違いを確認→再度実践→間違いを確認・・・」という形で実践と間違い確認をひたすら繰り返していくのが最も近道だと思っています。なので、SQL入門書も読むタイプではなく、ドリル形式で手を動かしながら学んでいくスタイルのものを推奨しています。
シリーズ累計60万部突破!「スッキリわかるSQL入門」の特徴は6つ!
出版社より
・すぐにSQLを書き始められる!
・「はじめて」のあなたのための解説!
・SQL難所を絶対納得できる裏技!
・自信がつく特訓量「256問」のドリル
・エラーなんて怖くない! 解決のコツを伝授!!
・インストール不要!どこでも学習できる仮想環境。
4.ひたすら実践(自社データでSQLを叩ける環境があればそれを叩く、なければ実践本をやり込む)
自社でSQLを叩ける環境があればそれを叩いて、実施にデータを抽出しながら学習・習得していきます。ポイントとしてはコピペNGです。面倒ですが必ず自分で手入力していきましょう。そのほうが近道です。
「このデータ出したいけど、どうすれば良いのか検討もつかない!」など困ったときはのために「ビッグデータ分析・活用のためのSQLレシピ」を購入しておくのがオススメです。データ分析したい人向けに書かれた本なので、一般的に使われる事例(例:ABC分析で売れ筋商品を分析、時系列にそってユーザーアクションを分析するなど)とそのクエリが書かれており業務で即使えます。今でも辞書として手元においており重宝しています。
本書は、著者が普段の業務で実際に作成しているレポートやSQLのコードをより汎用化し、レシピ集としてまとめたものです。「データの加工」「売上の把握」「ユーザーの把握」「Webサイト内のユーザー行動の把握」「異常値の検出」「検索機能の評価」「レコメンド」など、具体的なシーン別に、実践的な手法とノウハウを解説しています。
出版社より
もし自社でSQLを叩ける環境がない人は、SQLチュートリアルで紹介されているSQLZOOというサイトで実践練習ができるので、一通りやりきるのが良さそうです。
https://sqlzoo.net/wiki/SQL_Tutorial
以上、SQL未経験の初心者が勉強していくステップでした。毎日1-2時間×3ヶ月(90日)なので、だいたい90-180時間ぐらいやればある程度のことはできるようになります。学習時間もそこまで長くないですしコスパが非常に良いスキル・・・!
現在では他の教材もやったりしてもうちょっと深い部分まで学んでいますが、初心者が最速で身につけるには上記が一番効率的だと思われます。
SQLを学んだキッカケ
そもそも、なぜ非エンジニアである自分がSQLを学びはじめたかというと、前職のスタートアップ時代に必要に迫られたからです。スタートアップのプロダクトマネージャーなので当然ながら業務は忙しいですし、エンジニアのリソースも限られています。そんなときに「あのデータがほしい!」などのデータ抽出をエンジニアに依頼してたのですが、やはり必要なデータはすぐに自分で出せるようになりたい。そんな経緯で重い腰をあげてSQLを勉強しはじめました。
どのぐらいSQLを使えるのか
SQLを使えるといっても、非エンジニアの人がどこまで使えれば「わたしはSQLを使えます!(ドヤ!)」と言って良いのか?イメージがわかないですよねw(自分は湧きませんでした。完全に手探りで進めました…)
そこで、実際の企画業務で利用しているSQLのレベル感を紹介してみたいと思います。おそらく初心者の域は脱していて、中級者になりたてぐらいのレベル感です。
●(前提として)データベースのテーブル構造がわかる
RDBであれば、具体的にはER図を読んで、どのようなリレーションがされているのかイメージがつく。実際にER図を読んだりテーブル構成を見て、欲しいデータを抽出して分析ができる。
データベースを学ぶにはデータベース(DB)について学べるおすすめ本・参考書24冊もおすすめですよ♪
こちらのツイートでも話したとおり、SQLを学ぶことでテーブル構造の理解につながり、総合的な企画精度の向上になります
●複数テーブルのJOIN、サブクエリ、UNION、などが使える
SQLのレベル感でいうと、複数テーブルをJOINしたり、多段クエリ(サブクエリ)を書いたり、UNION、集計関数を使ったり、WITH句などは全く問題なく使いこなせます。基本的に「このデータみたいな」となったら大体のものは自分で抽出することができます。
例えばN回以上購入したユーザー数や、購入リピート率を月別で出したり、WAU/MAUの比率を出したり、特定の機能の利用ユーザー数を日別で出してみたり、といったことは問題なくできます
●エラーがでてもググって解決したり、解決するまでの道筋を自分で立てられる
かなり大事な目安として、「エラーがでたり、そもそもどう抽出すればいいかわからないときに、ググって自分で問題解決ができる」です。例えば、曜日別でアクティブユーザーを出したいだけど、、、というときに、ググっておおよその目処が立つかどうかです。
●できないこと
逆にできないことは、パフォーマンスを考慮したクエリを書くことです。これはできないですが、今の所できなくても特に問題なく業務を回せています。
SQLを学ぼうとすると、四大構文(SELECT、UPDATE、INSERT、 DELETE)が出てきますが、非エンジニアであれば「SELECT」だけ使えればOKです。他の構文はデータベースに書き込みや削除などを処理する命令なので使いません。もちろん、自分もSELECTしか使えないです。
SQLを使えてよかったこと
SQLを使えてよかったこととしては、当初の目的だった自分でデータ抽出することで分析業務をスムーズにできるようになったことです。ですが、それ以外にもたくさんの副次的な効果がありました!それぞれ紹介していきます。
●施策の効果測定や分析などのスピードが速くなった
自分でデータ抽出ができるので、気になった数値を「ちょっと見てみるかー」と気軽に見れるようになりました。それによって、エンジニアに依頼する心理的な負担もなくなるので、よりデータドリブンな意思決定ができるようになっていると感じます。
もちろん、「数値を見たい」と思ってから実際に抽出するまで自分で完結できるので、分析のリードタイムも短くなりました
●要件定義や仕様作成の精度があがった
テーブル構造などデータがどう入っているか?理解があるので、要件定義をする際の質がアップした気がします(これは定量的には測りづらいので感覚ですが…)
細かいデータを見ながら仕様検討ができるので、きちんと定量に基づく仕様策定ができるようになりました。例えば、ボタン配置1つとっても、データ分析をした上で決めるのと感覚で決めるのでは大きく精度が変わると思います
●エンジニアとこれまでより技術的な会話ができるようになった
「SQLができる=データベースやテーブル構造を理解できている」なので、エンジニアと技術的な会話ができるようになります。
●(転職前)転職時にスキルセットの1つとして語ることができた
数年前に前職のスタートアップから現職のメガベンチャーへ転職した際に「SQLは書けますか?」「(職務経歴書をみて)SQL書けるんですね!」とよく言われました。わりとポジティブな評価をしてもらえたと感じます。
もちろん、SQLが書けるから採用されたというわけではないですが、やはりプロダクトマネージャーやディレクターとしてプロダクト企画開発に携わるのであれば、持っておいたほうが良いスキルの1つといえそうです。
●(転職後)メガベンチャーの企画職においても、毎日のようにSQLを書いてデータ抽出・分析をしています。
中にはSQLを書けないプロダクトマネージャーやディレクターの人もいますが、やっぱり書けたほうがスピーディーですし、企画の精度も高まるので、書けるにこしたことはないと考えています。
まとめ
以上がプロダクトマネージャーである自分がSQLを身に着けたおハナシでした。最初は誰でもつまづきますし大変だとは思いますが、乗り越えればその先に素晴らしいSQLライフが待っています!ぜひ頑張って取り組んでみてください^^
参考書籍
こちらもおすすめ↓