inFablic | Fablic, inc. Developer's Blog.

フリマアプリ ラクマを運営する Fablic の公式開発者ブログです。Fablic のデザイナー・エンジニア・ディレクターが情報発信していきます。

CSの中年エクセルおじさんがSQLを覚えた話

こんにちは。CSマネージャーのshigeです。

今年の4月にここに入社して初めてSQLなるものを使いました。
挫折はあったものの、覚えるとすごく便利なんですよね。
CS(カスタマーサポート)業務の改善活動にも役立つことがたくさんありましたので
ちょっとご紹介しようと思います。

f:id:infablic:20171220002900j:plain


〜概要〜

  • 今まで「SQL」ってものの正体も知らずに40年生きてきたよ。

  • でもこの会社の風土的に覚えるハメになっちゃったよ。

  • いざSQL覚えるとめっちゃ捗るじゃん!CSでも色々活用できるじゃん!

  • 神の声を聞けるのめっちゃ便利

  • 「覚えるハメ」なんて言ってごめんなさい!

みたいなお話です。



〜今までの私〜

ちょっとだけ自己紹介を。

私はこの4月にFablicに入社する前、10数年ほどコールセンター業界におりました。
これまでは、私の中での集計作業や分析作業はExcelが全てでした。

というのも、コールセンターで使用されているCRMシステムやPBXなどの多くは、
様々なデータをCSVで出力できる機能があり、そのCSVをエクセルにインポートして
実績数値の集計をしたり、コール数の予測をするというのが一般的なためです。

また、ExcelはAccessに比べて難易度もコストも低いので導入しやすいということも、
多くのコールセンターがエクセルを活用している要因になっています。

Accessを使っているセンターもありますが、Accessの場合は何かあった時に
現場でメンテナンスできる人が少ないため、敬遠される傾向にありました。


〜Fablicに入社!〜

入社当初はExcelで色々やっていた私ですが、徐々に
「データベースにある情報をもっと活用したい!」と思うようになって来ます。

どんなデータが取れるかはおぼろげながらわかって来たので、
その都度エンジニアさんに「こういうデータを出して欲しい」というお願いをし、
出してもらったデータを加工して作業をしていました。

CSでは問い合わせ数の予測を元に必要な稼働時間数を計算し、
「この日に何人出勤しないといけないか?」という管理をしています。

さらには、
「どうやったら問い合わせ自体を減らせるか?」
「どんな属性のユーザーが問い合わせをしてくる(可能性がある)のか?」
などもフォーキャストの材料となります。



〜SQLとの遭遇〜

…その日は唐突にやってきました。


入社から2ヶ月ほど経った6月のある日のことです。
「次はこんな数字を出して欲しいんです」的な事を話していたMTG終了後に
エンジニアさんからとあるURLが送られて来ました。

恐る恐る開いてみるとそれは当社で使用している
「Re:dash」というダッシュボードツールの画面。
そして私が入社する前に開催された社内勉強会の資料。

f:id:infablic:20171220024610p:plain

薄々覚悟はしていたのですが、
「ついにこの日が来たか…」という気持ちでした。

40歳を過ぎて新しい事を覚えられるのだろうか?
Excelしかわからないのに、そんな難しそうなものを使いこなせるのだろうか?


そんな不安を胸に、恐る恐るやり方を教えてもらうことになりました。

私は「クエリ」という単語にある程度の拒否反応を示すレベルの超初心者で、
selectとfromはわかるけど、何でwhereなんだよ…」としょっぱなからつまずき、
帰り道にフリルでSQLの入門書をポチッとしてみました。
なお、未だに「where」には納得できていません。

今は私のデスクに2冊の入門書が仲良く並んでいます。
(もう一冊はSQLとの戦いに惜敗してしまった同僚からの借り物です。)



〜デビュー戦〜

いよいよ私もSQLデビューの日を迎えます。
やはり一筋縄では行きませんでした…

私はCSの中でアカウント関連の問い合わせ対応をするチームの担当なので、
「日々どのぐらいのユーザーが退会していってしまうんだろう?」
という数字を出すことをデビュー戦の相手に選びました。
退会申請の件数が他のどの数字の波と関連しているかがわかれば、
「退会したい」という問い合わせの件数を予測できるようになるわけです。

最初に書いてみたのがこちら。
 ↓

select created_at, count(id)
from [退会申請テーブル]
where created_at BETWEEN '2017-06-01' and '2017-06-30'
group by created_at;

[退会申請テーブル]に退会申請のデータが入っていて、
その申請日created_atごとに件数をカウントしたかったんですね。
しかしこのcreated_atは秒までのデータが含まれているため、
こんな感じの結果になってしまいました。
f:id:infablic:20171220004353p:plain

Oh、思ってたのと全然違う…。

本当の戦いはここから始まります。

私はRe:dashの中にある、他の人が組んだクエリを漁りました。
ちなみに、私が若かりし頃にExcelの関数を覚えたのも主にこの手法でした。

「ふむふむ、どうやらDATE_FORMATというのを使えば表示形式を変えられるらしい。
 これを使えば解決だ!質問せずに自己解決したオレって素晴らしい!」

そんなことを思いながら組んだのがこちら。
 ↓

select DATE_FORMAT(created_at, '%Y/%m/%d'), count(id)
from [退会申請テーブル]
where created_at BETWEEN '2017-06-01' and '2017-06-30'
group by created_at;



意気揚々と実行した結果、こんな感じになってくれました。
f:id:infablic:20171220004907p:plain

時間の表示が消えただけじゃん…。
本当に表示形式が変わるだけなんですね。

これ以上の自己解決は難しいと思った私は、神々の声を聞くべく
「#SQL」チャンネルに質問を投げかけました。



〜神々の住む板〜

SQLチャンネル、
それは神々の住む板。
-----そこで民は神々の声を聞き、クエリを完成させる。

当社には「エンジニア以外もSQLをどんどん使えるようにしよう!」という風土があります。
社内コミュニケーションで使用しているSLACKに「#SQL」というチャンネルがあり、
私のような素人が愚問を投げかけると神々が降臨し、親切に答えを導いてくれるのです。

そこで神から「こうやってasを使いなさい」という啓示をいただき、やっと正解にたどり着きました。

select DATE_FORMAT(created_at, '%Y/%m/%d') as day, count(id)
from [退会申請テーブル]
where created_at BETWEEN '2017-06-01' and '2017-06-30'
group by day;

f:id:infablic:20171220005219p:plain

これで無事に過去の実績を出すことができ、他の様々な数字と照合したところ、
退会申請数が「ある別の数字」とシンクロしているらしいことがわかりました。
そちらはある程度の予測が出ていたので、そこから私が担当している業務ボリュームも
予測することができました。

無駄なく人員を配置するためには、必要工数予測は不可欠なんですよね〜。



〜神々は忙しい〜

このようにSQLチャンネルで質問をしまくっていたのですが、
神々の本業はエンジニアなので、なかなか愚問ばかりに答えているわけにもいきません。

しかしここからが当社の本当の懐の深さです。
「せっかくSQL覚えたいという人が増えたんだから、
ちゃんと教えてあげられる制度を作ろう」

ということで「SQLバディ制度」が発足しました。

CSやマーケティング担当者など、SQLを習いたい人に対して
エンジニアが1人専任でトレーナーになってくれて、
恥ずかしいぐらいの初歩的な質問にも嫌な顔一つせずに答えてくれます。

私のバディには@tooooooooomyさんがついてくれることになりました。
40代のオッサンの相手させて申し訳ない気持ちでいっぱいの中、
「わからないものはしょうがない!」と割り切って聞きまくりました。

本当に@tooooooooomyさんには感謝しています。



〜SQL覚えて良かった!〜

振り返ってみると、こんなレベルのSQL組んでちょっとした数字を出すために、
わざわざ優秀なエンジニアの手を止めさせるのはナンセンスだな〜、と思います。

日々の業務の中でちょっと気になった数字を出したりするのが気軽にできるようになり、
CSの運営計画も立てやすくなったのは大きなメリットだと感じています。

また、基幹システムの改修をしないと一覧化できなかったデータなどを
自分で出せるようになったので、CS内で色々な問題を解決できるようにもなりました。

今後もSQLをどんどん覚えて、色々なデータを分析できるようになりたいと思います。

「JOIN激闘編〜outerだったのか〜」
「AS死闘編〜こんな所にもas〜」
などは、機会があれば(今回の記事が好評だったら)またご紹介します。



この記事はFablicAdventCalendar23日目の記事でございました。
明日もCSマネージャーが登場します!