Web/アプリエンジニアのあなたが、データエンジニアになるべき理由

# はじめに

リンクアンドモチベーション・データユニット所属の みく / Ryo Koizumi ([@slpwalks](https://x.com/slpwalks)) です。
本記事は [リンクアンドモチベーション Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lmi) の 23 日目 の記事になります。

突然ですが、自分は紆余曲折を経て、現在はリンクアンドモチベーションで **データエンジニア** として働いています。

自分自身のキャリアを見返した時、一時データサイエンティストをやっていた時期もありますが、大半はWebフロントエンド・バックエンドエンジニアとしてのキャリアを積んできました。今でも得意領域はそちらであり、現在の業務でも Python や SQL より [TypeScript を書いている時間の方が長い](https://qiita.com/slpwalks/items/7adf5de22bddd923cfcf) です。

2023年の現在においても、あえてデータエンジニアを目指す人というのはまだまだ少ないと思います。しかし、自分はデータエンジニアというのは **とても重要で、面白いポジション** であり、また他のポジションからコンバートしても十分活躍できる可能性が高いポジションだと思っています。

**これを読んでいるあなたも、データエンジニアを目指してみませんか？**

# データエンジニアとは何なのか？

「データエンジニア」の定義については色々あると思いますが、
自分は **データの流れを円滑にするためになんでもやる人** と説明しています。

弊社では、モチベーションクラウドのエンドユーザーや社内のコンサルタントの行動ログなどから得られるデータを、同じ社内のデータサイエンティスト・アナリスト、あるいは開発組織のPMやエンジニアが **簡単に扱えるようにする** ことが主な仕事になります。またデータサイエンティストの作成した予測モデルをシステムに組み込んだり、データを元に現場のコンサルタントや営業の行動改善を行うことも仕事の一つになっています。

やることは多岐に渡りますが、 社内・社外のステークホルダーを **データを通してなめらかに繋ぐ** ということは共通しており、実際に社内の多くの意思決定を支えることができる、重要な役割と言えます。

# なぜデータエンジニアを目指すべきか？

これに対する答えはシンプルに **「今求められているから」** です。

2020年の技術レポートにおいて、データエンジニアのポジション数が前年と比べて最も成長しているというデータが示されました。この成長率はデータサイエンティスト、バックエンドエンジニアを上回っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64915/a7418fbe-c75a-fcd5-f521-513525a6d4ff.png)

（引用元: [Dice 2020 Tech Job Report](https://techhub.dice.com/Dice-2020-Tech-Job-Report.html))

かつて Harvard Business Review において [データサイエンティストが最もセクシーな職業](https://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century) と言われたことを記憶している人は多いと思います。しかし、現実に今足りていないのはデータエンジニアです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64915/d484e4b2-0e81-7eb5-4ffa-65176a16138a.png)

（引用元: [Data Science Job Market Shrinking as Data Engineering Grows Exponentially, New Study by Interview Query](https://www.prnewswire.com/news-releases/data-science-job-market-shrinking-as-data-engineering-grows-exponentially-new-study-by-interview-query-301225469.html)）

なぜ今データエンジニアが求められているのでしょうか？その答えのヒントが下の図にあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64915/3f7c02e3-23d3-64a7-1af6-3c027a68ff76.png)

（引用元: [Hidden Technical Debt in Machine Learning Systems (2014)](https://proceedings.neurips.cc/paper_files/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf)）

この図は機械学習システムの構成を表しています。中央の黒い部分がいわゆる純粋なモデルの領域ですが、そこでカバーできる領域は非常に狭く、その周辺にデータ収集、パイプライン、インフラ構築、分析などの様々な要素が存在することを示しています。

要は、データサイエンティストの構築したモデルをシステムに組み込み、継続的にビジネス価値を生み出し続けるにはモデルの領域以外にも様々な考慮が必要になり、自分はこれこそがデータエンジニアの腕の見せ所だと考えています。
（これはデータサイエンティストの重要性を否定するものではありません。依然としてデータサイエンティストの仕事は重要であり、替えが効かないものだと思っています）

また[データサイエンティスト協会](https://www.datascientist.or.jp/) が出している「[データサイエンティスト スキルチェックリスト](https://www.datascientist.or.jp/news/n-pressrelease/post-1757/)」で、データサイエンティストに求められるスキルセットについて定義していますが、こちらでもデータサイエンス以外に、データエンジニアリング・システムエンジニアリング部分の必要性について定義されています。

これらを見る限り、データエンジニアという職務は担当領域が大きく、それに従って学ぶべき技術スタックは多いです。しかし裏を返せば今までの経験との接点が大きくなるということでもあると考えます。実際にWeb構築やアプリ構築に必要な技術とオーバーラップする部分は多く、それらの技術に精通していれば、それだけ活躍できる範囲も大きいと考えられます。

**大丈夫、あなたの経験は活かせます。**

# データエンジニアはなぜいないのか？

それにしても、日本において「データエンジニア」という職種はまだまだ聞き馴染みがなく、データエンジニアであるという人も、データエンジニアを目指しているという人もめったに聞きません。

その理由について仮説を考えてみました。

## 仮説1. セクシーではないから

仮説の一つとして、そもそもデータエンジニアのやることは地味だからということが考えられます。

自分を例に取ると、前述の通り業務の半分くらいは TypeScript を書いていますが、もう半分は SQL です。おおよそ秩序が無い Salesforce の大量のオブジェクトや、SaaSのシステムログデータ、数十MB近くに膨れ上がった何百のエクセルなどをロードし、時には目でデータ形式や欠損値を追いながら、後続の分析者が扱いやすいようにデータを整形・クレンジングしたりしています。

実際にデータから価値を生みだすことより、誰かがデータから価値を生みだすことを助ける、という**下支えの場面**が多く、おおよそキラキラというところからは遠いです。
（ただこれに関してはデータサイエンティストでも対して変わらないと思っています）

## 仮説2. アイデンティティに迷うから

そもそも市場にあまり存在しないこと、職務も多く、定義が定まっていないこともあり、ロールモデルを作りづらく、アイデンティティを構築するのが難しいというのも仮説の一つです。こうした状況もあり、自分は最近は進んでデータエンジニアを自称することが多いですが、**だいたいのWebサイトの職務選択欄にデータエンジニアが存在せず**、データサイエンティストを選ばざるを得ないことに涙します。

データサイエンティストと同じく、データエンジニアも個社に応じてデータの質や量などが変わり、それに応じて求められる技術も変わります。弊社においてはペタバイトクラスのデータを扱うケースは当分存在しないと思いますが、その分非定型で、ユニークなデータが多いです。またデータ活用の比重においてもコンサルタントに対する行動支援が多く、彼らに向けて帳票を作成して行動改善を図るというシーンが多いです。

もともと頭数が少ないのに、やっていることが違うので、あんまり話が合いません。

# あなたのスキルを活かしつつ、データエンジニアになるために

前述の通り、データエンジニアの職務においてあなたの経験が活かせる領域が必ずあると思いますが、一方で新たに必要なスキルもあります。

優れたデータサイエンスの知識がなくても、データサイエンティストと会話し、彼らのノートブックを本番で動くシステムに変換するために、Python, pandas, scikit-learn などのスキルを持っておくことが必要でしょう。

同時に特徴量選択、目的変数、分類/回帰、precision/recall、categorical data encording などデータサイエンスにおける基礎的な共通言語を理解することで、データサイエンティストとスムーズなコミュニケーションが可能になり、彼らと協力しながらより良い選択ができるでしょう。

往々にしてデータサイエンティストが使うノートブックと本番運用されるコードの間には深い溝があります。時にはデータサイエンティストと一緒に問題が起きている場所に駆けつけ、バグを直す必要があることもあるでしょう。**[get_dummies](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html) を推論コードで使った結果ベクトル長の違いで落ちたシステム** のエラーを直すのはあなたです。

また地味ですが、SQLの知識も必要になる場面が多いです。[ちゅらデータ社の菱沼氏のインタビュー](https://logmi.jp/tech/articles/328753) では、SQL には深淵がありますが、数十年使える知識であると述べられています。私はまだその領域には至れていません。

# 最後に

リンクアンドモチベーション・データユニットでは現在そんなデータエンジニアを大募集しています。この話で **ちょっとでもデータエンジニアを目指したい！** となったら、ぜひぜひ [カジュアルにお話ししましょう！](https://herp.careers/v1/lmijp/aoryt6uZng6F)