クリスマスだし､エンジニア以外の職種の方々にもSQLを使って欲しいから推してみる

# 要約

* エンジニア以外の職種の方々がSQLを学ぶことはメリットがたくさんある
* SQLは他のプログラミング言語と比べてそこまでハードルは高くない
* <a href="https://trocco.io/lp/index.html">trocco</a>最高!!データカタログめっちゃ便利なのでオススメ!!

# はじめに

「データドリブン」とか､「データ利活用」とか､
データをうまいこと使って効率よく業務回していこうよ!!という風潮がメジャーになり(なって欲しい)
現在では非常に多くの部門やチームでデータの利活用が行われています｡

セールスやマーケターなど､エンジニアでは無い人が
SQLを利用してデータを取得・加工している場面もよく目にするようになりました。

エンジニアではないが､SQLに興味はある｡
だけど､SQLはやったことないし､できたほうが便利なのはわかっているけど､
正直流行っているだけで､本当に役に立つのかも怪しい｡

何事も､身につける上で難易度なんて人それぞれかと思います｡

ただ､前述の通り､データドリブンであることがスタンダードになりつつ昨今､
SQLスキルを取得することのメリットは大きいはずです｡
また､(他のプログラミング言語と比べて)SQLは非エンジニアにもとっかかりやすいので
そこまでハードル高くないよ､とも思います｡

**どうしたらSQLの習得に前向きになってもらえるか**を
深夜のテンションで考えた結果､記事ができあがりました｡

なお､技術的なことは今回一切書いておりません｡また内容にも保証はありません｡
アドベンドカレンダー用の**ポエム**です:relaxed:

# 読んでほしい人
* データの抽出・加工に課題を感じている､エンジニア以外の職種の人｡
* SQLに興味があるけど､､難しそうだから手をこまねいている人
* SQL初心者でつまづきそうな人
* SQL以外のプログラミング言語に挑戦したけど挫折した人
* クリスマスやサンタクロースが好きな人
* 暇で他にやることがない人

# 読まない方がいい人
* クリスマスやサンタクロースというワードが嫌いな人
* 暇じゃない人

# データドリブンに必要なもの
「データドリブン」にやろうと思っても､すぐにできるわけではありません｡
データ分析基盤を作る必要があります｡

データ分析基盤を作るために必要なことは以下です｡

1\. **様々なデータソースからデータを収集**
2\. **収集したデータをDWHへ投入する**
3\. **DWHへ投入したデータを使いやすいようにSQL等で加工する**
4\. **加工した結果を抽出したり､可視化したりする**

1～4は､主にエンジニアが担当する領域です｡

1～2は､「データ分析基盤を作る」
3～4は､「データ分析基盤を運用する」ために必要なことです｡

ただし､社内のエンジニアが少ない・いない・頼れないなどで
データ分析基盤が作れず､､困っている方も多いのではないでしょうか｡
また､データ分析基盤はあるものの､エンジニアが忙しくてオーダーの順番待ちに回されてしまう…なんて人もいるのではないでしょうか｡


# エンジニアの仕事とサンタクロースの仕事には共通点がある


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/9195d377-b1b5-adc7-780b-98cc67224283.png)


急にどうしたという感じですね｡


まず､ **仕事内容**で比較してみましょう｡

* プレゼントを仕入れる( =  **様々なデータソースからデータを収集**)
* 倉庫に運ぶ (=  **収集したデータをDWHへ投入する**)
* 倉庫からプレゼントを選びラッピングする ( =  **DWHへ投入したデータを使いやすいようにSQL等で加工する**)
* 各エリアに届ける( = **加工した結果を抽出したり､可視化したりする**)


また､ **仕事で必要とされるスキル**で比較してみましょう｡

サンタクロース( = **エンジニア** ) になるためには
* 空を飛ぶソリ操縦の運転免許 ( = **エンジニアリング力** ) 
* 各エリアに必要なアイテムを適切に梱包し届ける技術 ( = **データを加工・抽出する技術** ) 
が必要です。

つまり **サンタクロースはエンジニアであり**､
 **エンジニアはサンタクロース** と言っても良いでしょう｡

面倒くさいので､しばらくは **サンタクロースはエンジニアである前提で話を進めます｡**


# サンタクロース 我が家に来ない問題
 **残念ながら、サンタクロースの人数には限りがあります。** 

先程､以下のようにお伝えしました｡

>サンタクロース( = エンジニア) になるためには
> * 空を飛ぶソリ操縦の運転免許 ( = エンジニアリング力 ) と
> * 各エリアに必要なアイテムを適切に梱包し届ける技術 ( = データを加工・抽出する技術)
> が必要です。

実は､これらを両方兼ね備えたサンタクロースの育成・発掘はなかなか大変です。

また、サンタクロースと契約するにはまあまあ高いお金が必要になります。
各エリアで、十分なサンタクロースの人数を確保するのは大変なことなのです。

クリスマスなのに、サンタクロースがいないから、プレゼントをもらえない。
そんなエリアにお住まいの方々もいるのではないでしょうか?

サンタクロースがいないエリアにお住まいの方々は､そういうものだと諦めるしかないのでしょうか??

サンタクロースが少ないエリアにお住まいの方は､クリスマスを過ぎて年明けになってしまっても、
プレゼントが届くことを信じて、健気に待つことしかできないのでしょうか??


違います｡


 **あなたがサンタクロースの代わりになって､プレゼントを届けてあげればよいのです。**


そろそろサンタクロースという言葉に脳が疲れてきたと思いますので
ここからはちょっとずつ話に戻します｡


# データ分析基盤に必要な要素

データ分析基盤を作り､効果的に運用するために､以下が必要とお伝えしました｡

> * 空を飛ぶソリ操縦の運転免許 ( = エンジニアリング力 ) と
> * 各エリアに必要なアイテムを適切に梱包する技術 ( = データを加工する技術)

これらについて簡単に現状をご説明します｡

# エンジニアリング力
エンジニアリング力というのは､プログラミングができて､システム周りの環境を構築できて､
実現したいことを実現できる力みたいな感じだと思ってください｡


先程お話した､「データ分析基盤を作るために必要なこと」のうち､1～2に必要な力になります｡

>1\. **様々なデータソースからデータを収集する**
>2\. **収集したデータをDWHへ投入する**
>3\. DWHへ投入したデータを使いやすいようにSQL等で加工する
>4\. 加工した結果を抽出したり､可視化したりする



まずエンジニアリング力を身につけるのは大変です。
日々エンジニアは厳しい修行に耐え､しのぎを削ってエンジニア力を鍛え高めています｡
エンジニア同士で､生き残りをかけた戦いが行われているのです｡

また､十分なエンジニアリング力がないと、
イチからデータを取得し連携する仕組みを構築しようとすると大変です｡

つまり､高いエンジニア力をもつエンジニアを確保することは､非常に難しいことなのです｡

 **でも大丈夫｡**
現代の世の中には､エンジニアリング力にあまり左右されず、
データ連携を可能にするサービスやツールがあります。

それが **trocco** ｡
画面に従って設定をするだけで､データの収集・連携が簡単に実現可能です｡

troccoのようなサービスを用いることで
 **エンジニアでない方**でも､データの収集が可能になります｡


サンタクロース( = **エンジニア** ) がソリに乗る ( =  **エンジニアリング力で解決する** )なら､
 **trocco**は **無免許でも乗れて空も跳べる､電動キックボードみたいなもの**といってよいでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/b4797694-cb41-c380-a41b-9be094d7a623.png)



もちろん､この電動スクーターはソリに乗るより圧倒的に簡単でメンテナンスも楽ちんです｡
ソリだとトナカイの飼育という手間が発生しますよね｡それがなくなります｡

あまりにもクリスマスに毒された表現になってしまいましたね｡

 **troccoだと､コードを書く手間がぐっと減らせて､また運用面でも便利な機能が詰まってます｡
troccoは機能面でも運用コスト面でも､ エンジニアの皆様に非常にご活用いただいております｡**

そういうことが言いたかったんです｡


話が脱線してしまいました｡

つまり､ **現代社会では､高いエンジニアリング力を持つエンジニアが沢山いなくても､便利なツールを活用することで､データ分析基盤が作れるのです｡**




# データを加工・抽出する技術

**これが本題です｡**

>1\. 様々なデータソースからデータを収集する
>2\. 収集したデータをDWHへ投入する
>3\. **DWHへ投入したデータを使いやすいようにSQL等で加工する**
>4\. **加工した結果を抽出したり､可視化したりする**

データを加工・抽出する技術は､3～4で必要になります｡

1～2が簡単にできるようになっても､3～4が十分にできないと
せっかく作ったデータ分析基盤はデータの倉庫となり､本当に使いたいデータはどこかに眠ったまま…
また､データを取り出すのも一苦労です｡

データを加工する技術は色々ありますが､エンジニアはSQLという言語を利用しています｡
というより､SQLが一番使いやすく､ **SQLができればある程度なんでもできます**｡
これがSQLの取得をオススメする第一の理由です｡

とはよくいうものの､エンジニアではない方がはこう思うことでしょう｡

* SQLなんて書いたことがないからできない
* プログラミングでしょ?なんか難しそう
* だったら普段触っていて手慣れているExcelやマクロみたいにやりたい

Excelやマクロがとても得意で何でもシュッとできる方であれば､それで全然問題ないと思います｡

ただし､Excelやマクロでデータを効率よく収集・加工できず､
かつ､これ以上どうにかできるポジティブなイメージがついていないからこそ
SQLの存在を知るまでにたどり着いたのではないでしょうか｡




## つまり


**データの取得・収集はツールに任せればある程度はできるけど
より効率よく､より使いやすい形で収集し､加工するにはSQLできたほうが良いよね**

ということです｡

 **逆に､SQLができれば､あなたもサンタクロースのように
必要なデータを必要としているメンバーに届けることができます!!**



## でも、難しいんでしょう…？

**そんなことはありません｡**


 **SQLの学習は(他の言語と比べて)圧倒的にわかりやすく､かつ､リターンが大きいです｡**



# SQLのよいところ① (他の言語と比べて)圧倒的にわかりやすい

そもそも「何の処理をやっているのか」がなんとなくわかる｡

SELECTだったら選択､UPDATEだったら更新…
詳しい動きは解読が必要だけど､とりあえず何やっているかはパッとみてわかる｡
個人的にはマクロより全然とっつきやすいです｡

また､SQLはデータベースを操作する言語です｡
そのため､世界がデータベースに閉じている｡

「SQLを書くだけ」であれば､ブラウザとか､サーバーとか､ネットワークとか
他に意識することがそんなにないのも､エンジニアじゃない人からしてみれば嬉しいところ｡



# SQLのよいところ② いろんな製品で使える

SQLを覚えると､データベースに保存されているデータに対して
「取得」「更新」「削除」「追加」ができるようになります｡

更に､SQLは国際標準化されているため
データベースやDWHはもちろん､様々なサービスや製品でSQL/SQLに近しいものが実行できます｡

一度覚えたことが､他で無駄にならないってめっちゃよくないですか?


# SQLのよいところ③ 基本的な機能が使えれば実務で十分活かせる｡

SQLの基本動作は「選択」「更新」「挿入」「削除」の4つに分けられます｡
さらに､「選択」さえ身につけ､必要なデータを取り出すことができれば､**すぐに実務で活かす**ことができます｡

ちなみにこの「選択」の動作ですが､突き詰めると色々な事が､色々な様にできます｡
つまりはやりこみ要素です｡
わかりやすくて､無限に遊べる｡SQLって神ゲーなのかもしれません｡




# やる気あればできるってコト?

ぶっちゃけやる気あればできます｡

でもそんなガチなやる気じゃなくて､試しにやってみようかな､ぐらいの気持ちで大丈夫です｡
試しにやってみたらわかります｡


# そこまでいうならオススメの勉強法とか教えてくれるわけ?


なんでもそうですが､実際に手を動かしてみることが一番だと思います｡

例えば､すでに会社内でBigQuery､RedshiftなどのDWHを利用していて､参照権限をもらっている場合｡
試しに自分が使う情報をパッと抜けるSQLを書いてみるとか｡
それで自分が便利になればハッピーだし､勉強にもなるし､一石二鳥ですよね｡

DWH以外でも｡
例えばBIツールによっては､SQLライクに操作できる機能を搭載しているものもあります｡

現状使えるDWHもBIも無い場合も大丈夫｡
簡単にSQLを触れる､いい方法がいくつかあります｡

例えば練習問題に対してブラウザでSQLを書いて実行できるサイトは沢山あります｡
http://sql.main.jp/

Googleスプレッドシートでは､表をテーブルに見立て､SQLライクに操作できたりします｡
https://admin-it.xyz/operation-efficiency/spreadsheet-query-series1/

ちょっと難易度は上がりますが､自分のパソコンに自分専用のデータベースを作って､実行してみるとかもオススメ｡
教本やオンラインラーニングなどを検討している場合､大抵そちらに自分専用の練習環境の作り方も書いてあるので､それに従えば大丈夫◎

初心者学習!となると､教本やオンラインラーニングなどがメジャーだと思いますが
まずは自分が便利に使えるSQLを作ってみて､それをどんどんアップデートしていくほうが体に刻み込まれます｡

ただし､SQLはデータベースを操作する言語という性質上､
ちゃんとやろうとすればするほど､データベースに関する論理的が必要になります｡

これは､手を動かすだけではなかなか身につかないこともあるので､
そちらだけはきちんと知識を身に着けていく必要があるかも｡

本格的に学習をしたい場合は､もっと詳しくまとめてくれている先人がいるので､そちらを見てください!



# どうですか?
話が脱線しまくりましたが､ちょっとはSQLに対するチャレンジのハードルが下がったら嬉しいです｡

# この記事を何故かここまで読んでしまったSQLが書けるエンジニアの方へ

データ抽出やってみたい! SQLも勉強してるんです!

そんな非エンジニアの方が近くにいたら**大切にすべき貴重な人材**なので
ぜひ応援とサポートをしてあげてください｡

優しくするつもりで､エンジニアじゃなきゃ難しいよとか言わなくていいです:relaxed:

実行環境どうやってつくればいいよとか､
オススメの勉強法はコレだよとか教えてあげてくださいね｡

社交辞令だったら､そのときはそのときです｡


# 最後に

私がカスタマーサクセスを努めているtroccoは*とても優れたETL/ELTツール*です!!
ユーザーとしては､情シス､エンジニアの方に多いですが､マーケターや営業の方にもご愛用いただいております｡

SQLがなくても設定可能なデータソースはありますが､
**SQLが書けるようになると､さらに柔軟にできるコトが増えますよ!!**

さらに､troccoにはSQL作成を支援する機能も備わっています｡

それが **<a href="https://trocco.io/lp/function/data-cataloging.html">データカタログ機能</a>**!!

例えば…
「SQLは書けるようになったけど､肝心のデータ同士の関係性を調べるのに時間がかかる…」
そんなときは､データ同士の関係を表現してくれる **ER図作成機能**や､**カラムリネージ機能**が便利:star2:

「自分が抽出したいデータが､どのテーブルのどの項目を見ればいいのかわからない…」
なんと｡データカタログ機能では､テーブル名/カラム名/メタデータ(データについての説明書きみたいなデータ)をまたいだ **あいまい検索**に対応しています｡


気になるワードから､気軽にデータに関する調査が進められるのは嬉しいですね:strawberry:




私も､業務に必要なデータを抽出するSQLを書くときは､データカタログを活用しています:sparkles:

またtroccoを開発・運営しているprimeNumberでは､ソリューションサービスも提供しています｡
データ利活用における課題解決はもちろん､お客様自身でデータ利活用を自走いただけるようサポートをしています｡


**クリスマス的に**いうと:snowman:

サンタクロースの代わりにプレゼントを配りたいけど､
空を飛ぶソリの免許を持っていない人に､空を飛べる電動キックボードを提供する｡

肝心のサンタクロース不足も解消するために､サンタクロースの育成もする｡

 **世界中のみんなに､データというプレゼントを届けるため頑張る､夢たっぷりやさしい会社です｡**
僕はこの会社に転職してから､寝言で笑うようになりました｡

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/f3da2ddc-0845-ff4c-fe46-ad9a6a9ac7bc.png)


この記事で興味をもっていただけるかもなんて思っていませんが
(ふざけて書きすぎて怒られないか震えてる)
もし興味がありましたらお気軽にお問合せくださいね｡

それではメリークリスマス:snowflake::snowflake::snowflake: