本業Webアプリエンジニアのデータサイエンティスト副業事情

* Webアプリエンジニアはたくさんいるので相対的に価値が下がってきている気がする
* 将来的に何か別の能力を身に着けておかないと手遅れになる気がする
* Webアプリを何度もやって飽きてきた

私は上記のようなことを日々考えながら生活しています。どうやって自分の幅を広げるか、それをどうやって成果にしていくか考えています。

私は、Webアプリエンジニアになってデータパイプラインの設計をしたときに、データサイエンス系を強めて自分の幅を広げようと考えました。

去年、私のキャリア構築論は Qiita に書いたので興味があれば見てみてください。

https://qiita.com/tamanobi/items/a74bc813562ed3460c29


将来的には「経営に効くエンジニアリングができるエンジニア」を目指していますが、年の瀬になって経営戦略の部分でお手伝いをさせていただく機会が手に入りました。


そんな私の今年の成果について振り返ってみます。


# 副業でやったこと

| 内容 | 使用技術/サービス/手法 | 役割（カッコ内はやっていないこと） | 期間 |
| --- | --- | --- | --- |
| レンタルスペースの予約サイト構築 | ・Wordpress<br>・upnow | ・リサーチ<br>・提案<br>・実装 | 3ヶ月(週4時間) |
| クチコミサイトの広告撤廃 | ・広告関連技術(GAM, Prebid.js)<br>・Ruby on Rails<br>・Google Optimizeを利用したサーバーサイドABテスト<br>・Google Analytics | ・リサーチ<br>・提案<br>・実装 | 3ヶ月(週16時間) |
| クチコミサイトのインサイト発見 | ・データ分析(Pandas, statsmodels, scikit-learn)<br>・BigQuery<br>・Google Vertex AI Notebook<br>・Redshift<br>・Redash | ・データアナリスト | 2ヶ月(週16時間) |
| 社会人向けスクール事業立ち上げ | ・カスタマージャーニーマップ<br>・ジャベリンボード<br>・mixpanel<br>・Cyfons<br>・Google Optimize<br>・miro | ・競合リサーチ<br>・LP作成<br>・顧客管理ツール構築<br>（顧客ヒアリング） | 6ヶ月(週10時間) |
| 中高生向け事業の立ち上げ | ・AWS | ・PjM<br>・要件定義<br>・技術提案<br>・MVP設計<br>・エンジニア採用<br>（実装） | 3ヶ月(週10時間) |
| 実店舗経営のテクノロジー戦略 | ・LINE(LIFF)<br>・データポータル<br>・BigQuery<br>・Selenium<br>・データ分析(Pandas, matplotlibなど)<br>・RFM分析 | ・スクレイピング実装者<br>・データアナリスト<br>・エンジニアリングコスト見積もり | 1ヶ月(週7時間) |
| 大学の研究に客員研究員として貢献(2件) | ・VertexAI<br>・Google AutoML Vision<br>・Tensorflow<br>・OpenCV | ・提案及び実装 | 3ヶ月(週4時間) |
| エンジニア向けメンタリング | ・コーチング<br>・ティーチング |  | 6ヶ月(週4時間) |
| 起業したい人向けメンタリング | ・コーチング<br>・ティーチング |  | 6ヶ月(月1時間) |


# 学びなおしてよかったデータ系技術

今年は「AIでなんとかして！」という案件よりも「データを紐解いてインサイトを教えてくれ」という案件が増えた気がしています。Deep Learning 系は成果保証がしづらいため、契約もしづらいので今年は助かりました。

本業でも副業でも Pandas と BigQuery 、線形モデルが大活躍しました。

## Pandas

Pandas は忘れていることが少なくなかったので、[東京大学のデータサイエンティスト育成講座](https://amzn.to/3ETAm8t) で基本を勉強し直しました。おかげで `qcut` などのビニングを使いこなせるようになりました。おかげでデシル分析がラクチン。

## SQL

SQL 書く時間がかかりすぎていると感じたので改めて [達人に学ぶSQL徹底指南書](https://amzn.to/3s4K04G) で学びなおしました。相関クエリと Having の理解がだいぶ深まりました。

## BigQuery

とあるデータ分析案件で Amazon Redshift を使っていたんですが、クエリがタイムアウトになりがちだったので BigQuery にスナップショットを移してもらいました。 BigQuery はクエリが帰ってくるのが圧倒的に早くて助かりました。TB級の行動ログデータも余裕でした。これまで Redshift 経験がなかったのですが、今後データウェアハウスは BigQuery に決定です。クエリの制限掛けられるのも安心ですね。

Redshift でも BigQuery でも毎回データをSQLで取ってくると時間がかかってしまうので簡単なキャッシュツールを作りました。

https://twitter.com/tamanobi/status/1440167245624135688?s=20


## データポータル

経営戦略を立てるために店舗データの分析を請け負っていました。LTVの計算などで Python が必要だったため、 JupyterLab で分析していました。「こういう切り口だとどう？」という話が多かったので（了承をもらって）BigQuery に上げてデータポータルと連携しました。

いまどきだと、 Streamlit とか Plotly とか Bokeh を使うんでしょうがホスティング環境が用意できなかったので、データポータルをBIツールとして導入しました。

複数人でひと目で確認できるダッシュボードがなく、エクセルで管理を頑張っていたようですが、理想的な形を示せました。データポータルは表示速度とメンテナンス性に難があるので、できれば Looker を使いたいんですが経営者目線だと金額が高すぎて手が出せません。


## AutoML Vision

大学の応用研究で、画像の分類タスクなどの依頼が２つ来ました。両方ともヒアリングしてみると新しいモデルの提案である必要がなさそうだったので、Google Cloud が提供している AutoML Vision をおすすめしました。

紹介したら「これなら学生でも成果が出せるじゃん！？」とめちゃくちゃ喜んでもらえました。私の仕事はなくなりました（笑）

しかも、エッジデバイス向けに出力すれば Tensorflow Lite向けのモデルがダウンロードできます。Google が提供する予測エンドポイントよりは、精度下がりますが手元で安価に（インターネットなしで）動かせるのは魅力的だったそうです。


## 線形モデル( statsmodels )

今年はテーブルデータの扱いが多く、インサイトを求められたため、決定木、線形モデル、勾配ブースティング木を学びなおしました。

結局説明に使ったのは、影響度合いが説明しやすい重回帰モデルでした。最初は Scikit-learn を使っていましたが、出力される情報が少なすぎたので statsmodels を使うことにしました。

分析結果の一部は、依頼者の予想通りでしたが「○○をこれくらいすると○○くらい上がるよ」という説明にだいぶ喜んでいただけたようでした。

また、分析を出す過程で特徴量エンジニアリングを行っています。

特徴量エンジニアリングは得意ではなかったので [機械学習のための特徴量エンジニアリング](https://amzn.to/3rYtNxM) と [Kaggleで勝つデータ分析の技術](https://amzn.to/3EYjIo8)、[前処理大全[データ分析のためのSQL/R/Python実践テクニック]](https://amzn.to/3ypHEOJ) を読んで学びなおしています。


# 能力が足りず請けられなかったもの

- 時系列データ
- 金融系ドメインを持ったデータ分析

この辺はまだまだ弱いです。テーブルデータの扱いにも慣れてきたので来年は Kaggle にチャレンジする予定です。


# 来年の予定

* 大学で講師
* LIFFを使ったプロダクト開発
* Google Cloud 上にデータ基盤構築(2件)
* Kaggle

以上です。