データアナリストからデータエンジニアとして働くようになるまでの僕のキャリア

Qiita が [Qiita×Findy記事投稿キャンペーン 「自分のエンジニアとしてのキャリアを振り返ろう！」](https://qiita.com/official-events/72b44470c9c08f6f080b) を開催しているので自分も投稿してみることにしました。

データエンジニアを目指している方の参考になれば幸いです。

## TL;DR

- データエンジニアは分析側から入る方が結構いる
    - 僕もそうだった
- 情報系出身ではないことのコンプレックスを解消するために色々と勉強した
- いつのまにかデータエンジニアとして働いていた


## キャリアの概要
現在 [株式会社ギックス](https://www.gixo.jp/) でデータエンジニアとして働いています。
戦略コンサルティングとアナリティクスが合わさったような会社です。
事業会社でデータエンジニアとして働いている方は社内のプロダクトのデータ基盤を管理していると思いますが、僕の場合はクライアントのデータ基盤を作ったり整備したりしています。

ざっくりとしたキャリアは次のとおりです。

- 株式会社ギックスにデータ分析の枠で入社する
- 入社から半年後にエンジニア転向する
- エンジニアとしての勉強を重ねつつ、プロジェクト内で泥臭いデータを大量に前処理する仕事をする
- 仕事の幅が広がって前処理のプログラムを載せるデータ基盤も作るようになる
- いつのまにかデータエンジニアになっていることに気づく

### ギックスに転職

データエンジニアになる方は必ずしも何かしらのエンジニアからデータエンジニアなった方ばかりではなく、分析側でエンジニアリングに近い領域を担当している間にデータエンジニアになっていたという話をよく聞きます。

僕自身も今の会社に入社したときはエンジニアではなく分析側として入社しました。
もともと大学では数理統計を学んでおり、転職前の会社でも分析業務を一部やっていました。
その流れでギックスでも分析職で入社しました。

### 転向のきっかけ

以前は大阪に住んでいましたが、東京で勉強してみないかと役員に打診されたことがあり、いっそエンジニアに転向してみたいと相談したことがきっかけで転向しました。
もともとデータ基盤を作ることに興味があり、ちょうどいいきっかけをもらったのでいっそ転向させてもらいました。勇気のいることでしたが決断してよかったです。
この時点ではまだデータエンジニアになりたいとは考えておらず、データ分析するだけじゃなくてデータを加工する基盤を作る方もできたら良いなと思っていました。今思うとそれはデータエンジニアの仕事ですが、当時はそんなことには気づかず、一般的なエンジニアが身につけていくことを手当たり次第勉強していくことになります。



### 仕事としてやってきたこと

あまり細かいことはかけませんがデータエンジニアリングにかかわるところだとだいたい次のようにステップアップしていきました。

- 複雑な前処理が必要かつ種類の豊富なデータを python でひたすら加工する
- GCP でデータ処理のフローを管理する
- AWS と GCP を用いたデータ処理基盤を作成する

また直接データエンジニアリングする以外だと次のようなことをやっています。
- 社内の技術領域の方針やルールの策定
- データエンジニア養成用のコンテンツ作成
- 社内の AWS や GCP のセキュリティや想定外課金の対策


### データエンジニアであることに気づく
データエンジニアになりたくて仕事をしていたというよりも目の前の仕事をこなしていたらいつの間にかデータエンジニアになっていたという感じでした。
幸いだったのが Python を駆使してデータを加工するのが得意だったことで、そこからだんだんと仕事の領域を広げて今のキャリアを築くことができました。

データエンジニアであることに気付く前と後で仕事の内容は変わっていません。
ですが自分の中で変化はあって、それまで一般的なエンジニア向けの領域も含めて勉強をしていたのがデータエンジニアリングの領域に特化して勉強するようになりました。
肩書が変われば見えるものも変わるもんですね。

今後も勉強していくのは仕事に直接関わるデータエンジニアリングの領域がメインになるとは思いますが、エンジニアとしての一般的な領域を勉強して基礎を身につけることができて良かったと思っています。

## 個人的に勉強したこと

冒頭にも書きましたがもともと分析側から入っており、大学も数学科出身で、情報系出身でないことに少なからずコンプレックスがありました。
それを払拭したいという気持ちもあって、勉強にはものすごく力を入れていました。

データエンジニアを志望していたわけではないのでデータの領域以外のこともたくさん含まれています。
データエンジニアになりたい方は必ずしも下記の勉強を真似する必要はありませんが、エンジニアの基礎となる部分も多いので役に立つことは保証します。

以下はすべてプライベートの時間に実施した勉強です。

### 競技プログラミング
約3ヶ月と短い期間でしたが AtCoder をやってました。
その時はだいたい平日4時間、休日10時間 AtCoder をやるという生活をしており、そのおかげもあってか水色までいきました。

エンジニアは必ずしもいろいろなアルゴリズムを知っている必要はないと思いますが、有名なデータ構造や計算量は誰しも考慮できるようになるべきだと思います。

なんならデータサイエンティストとして SQL を書くだけでも最低限の計算量は知っておくべきです。
ソートアルゴリズムの計算量を少しでも勉強したなら order by を無駄にかけたりしなくなるはずです。

AtCoder 水色なので大してアルゴリズムに強いわけではありませんが、自信はつきましたし計算量を気にかけながら実装できるようにもなったので非常に有益な勉強でした。

### Google Cloud Certificate
AtCoder の次は GCP の [Professional Data Engineer](https://cloud.google.com/learn/certification/data-engineer?hl=ja) と [Professional Cloud Architect](https://cloud.google.com/learn/certification/cloud-architect?hl=ja) の資格試験の勉強をしました。
というか AtCoder を続けたかったけど資格試験の勉強のために中断してそのままやめてしまいました。

当時、会社で資格試験のキャンペーンをやっていて、合格したら奨励金を貰えるので受験しました。
結果、 Data Engineer は合格し、Architect は不合格でした。
Architect を落としてしまったのは元から知っていることが少なかったことと、AtCoder をやっていた時期と資格試験の勉強の期間が一部被っており、十分な勉強時間を確保しなかったのが原因でした。たぶん Data Engineer のほうは30時間くらいは勉強して、Architect は15時間くらいしかしてなかったような。今考えるとなかなかアホですね。

Data Engineer の資格は Google Cloud のデータエンジニアリングに関わる様々なサービスについて知ることができたという点で役に立っています。


### 個人開発

Google Cloud の資格試験のあとは個人開発を始めました。

ネットワークナニモワカラナイ・・・
フロントエンドナニモワカラナイ・・・
セキュリティナニモワカラナイ・・・
API ナニモワカラナイ・・・

みたいな状態から始めて実際に Web 上からアクセスできるところにアプリをデプロイできたのでこれが一番エンジニアとしての実力をつけるのに役に立ったと思います。

特に業務に取り組むだけではデザインやフロントエンドまでは絶対に勉強してないので、いい勉強になったと思っています。

最近は全然アプリを更新できていませんが、生成 AI が出てきたおかげでデータ加工パイプラインを見直すなど自分自身が試したいことを試せる場を持っているのが良いところだと思います。
エンジニアとしての技術を磨くなら特におすすめします。

### 応用情報技術者試験

弊社のCT/CA(Chief Technologist/Architect) に勧められたため受験しました。
1on1 で情報系出身ではないことにコンプレックスがあるということを相談し、それじゃあ応用情報受けてみれば？といった具合に決まりました。

応用情報の勉強は 9月頭から始めて10月半ばの秋の試験に臨み、合格できました。
約一月半みっちり勉強してまあまあギリギリ合格したので印象に残っています。

ある人の言うことには応用情報は足の裏の米粒とのこと（取らないと気になる）。
応用情報に合格したからといってエンジニアとして一人前というわけではないのですが、コンプレックス解消には一役買っていると思います。

ふとした瞬間に応用情報の勉強をしてなかったら知らなかった概念や言葉が出てくることがあり、知識のとっかかりができた事自体に価値があると考えています。

ただ、データエンジニアとしては応用情報の資格をとるための勉強時間をデータエンジニアリングに関する技術書を読む時間に当てたほうが実務的に役に立つと思います。
僕は少なくとも100時間は応用情報のために時間を費やしました。
[資格の学校TACの記事](https://www.tac-school.co.jp/kouza_joho/joho_ap/ap_study_method.html#:~:text=%E5%BF%9C%E7%94%A8%E6%83%85%E5%A0%B1%E6%8A%80%E8%A1%93%E8%80%85%E3%81%AE%E5%90%88%E6%A0%BC%E7%8E%87%E3%81%AF20%EF%BC%85,%E5%8B%89%E5%BC%B7%E6%99%82%E9%96%93%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%99%E3%80%82)によると未経験で500時間、基本情報の資格保持者で200時間程度必要らしく、実際それくらいかかってもおかしくないです。

それだけの時間があれば厚い技術書でも10冊以上は余裕で読めるので、コンプレックスを解消したい人以外にはおすすめしません。

### 読書

エンジニアに転向する前からオライリーの本は読んでいましたが、データ分析寄りの本からエンジニア向けの本へと傾向が変わりました。
読書自体はずっと継続しています。勉強の基本だと思います。
僕の読書リストは作りませんが、おすすめの書籍リストをつくってくれている方がいるのでデータエンジニア志望の方は調べてみることをおすすめします。

また今は O'Reilly Learning Platform で O'Reilly の書籍を読み放題なのでよく使っています。
early access もできるし Web 上で洋書に要約をかけながら読めるのでおすすめです。

### 公式ドキュメントの読み込み

時折 GCP や Python の公式ドキュメントを読んでました。
例えば[レガシー SQL 関数と演算子](https://cloud.google.com/bigquery/docs/reference/legacy-sql?hl=ja)とか [python の組み込み関数一覧](https://docs.python.org/ja/3/library/functions.html)のページを上から下まで全部読むといった具合です。
社内のベテランエンジニアが日頃から公式ドキュメントを読むことを勧めており、それに従って読んでました。
公式ドキュメントに目を通すことで、知識が身につくことはもちろんですが、それ以外にも公式ドキュメントを読むという行為に抵抗がなくなるメリットがありました。

今でもなにか調べたいときはなるべく公式ドキュメントを参照するようにしています。
この習慣がついたのはこのときの公式ドキュメントの読み込みのおかげもあったと考えています。

初学者のうちはどうしても簡単に記述されているブログ記事などを参照したくなるかもしれませんが、個人の書いたものは誤りが含まれることも少なくないため、正しいものとして受け取ることは勧められません。
個人の書いたブログ記事はあくまで知識の取っ掛かりを作る程度にとどめ、正式な情報は公式ドキュメントを参照したほうがよいです。


### もくもく会

エンジニアに限らないもくもく会に出席して個人開発や勉強をしていました。
毎朝7:00-9:00 で２週間に一度 LT 会もあるという、なかなかのスパルタもくもく会でしたが、これは非常に良い習慣でした。
一人では怠けてしまうことも、こういった環境を利用することでストイックになれました。
今は主催者の方が忙しくなってしまって自然消滅していまいましたが、もくもく会のおかげで勉強に集中できたのはもちろん、LT 会があるおかげで発表に強くなりました。


## 最近やっていること

比較的最近になってデータエンジニア向けのイベントに参加するようになりました。
そう考えると僕のデータエンジニアとしてのキャリアはまだまだ始まったばかりなのかもしれません。

### connpass のイベント参加
connpass 上でデータエンジニアリングに関するイベントがあったらよく参加しています。


### 輪読会参加

[datatech-jp](https://datatech-jp.github.io/) で募集している輪読会に参加しています。
社外のデータエンジニアの方の事例や考えを聞けるために非常にためになる会でした。
今はちょうど読み終わったときなので、また募集がかかれば参加したいです。


### もくもく会参加

これまた datatech-jp で募集しているもくもく会に参加しています。
一般のもくもく会とことなるのはデータエンジニアリングに関わるかただけが参加していることで、作業内容を聞いているだけでも流行りのものがわかったり困りごとを相談できる点が非常に良いと思います。

### データエンジニアボドゲ会

これは最近僕が主催してる会です。
データエンジニアもしくはデータエンジニアリングを学びたい人限定のボードゲーム会です。
趣味のついでに自分と同じ領域の方々と困りごと相談会のようなことができて非常に助かっています。

https://qiita.com/ogatango/items/f9185c873c0062f29e6e

## 今後のこと

深く考えているわけではありませんが、どちらかと言えばマネジメントに寄りつつ、自分自身でもデータ基盤を作ること自体には関わり続けていきたいです。

マネジメントに寄ろうとしているのはあまりマネジメントをやりたいという人は多くなく、キャリアとして需要と供給の関係から有利になると考えているからです。
将来よりくいっぱぐれなさそうな選択をするならそうしたほうが良いと思っています。

## まとめ

キャリアを振り返るよい機会になりました。
こうして振り返ると朝のもくもく会に参加していた頃の勉強量は凄まじく、最近はその時ほど勉強できていないのでもう一度頑張ってみようと思いました。