新卒エンジニアとしての苦悩と成長
はじめに
オールアバウトグループの新卒1年目エンジニアが投稿する企画『テックブログ新卒週間2023』最終日4日目の投稿です。
株式会社オールアバウトでデータ基盤の運用・保守を行っている吉井と申します。
元々データに興味があり学生時代に分析や機械学習を学んでいましたが、データの基盤どころか、Webに関する知識も疎い状態でのスタートでした。
新卒として1年のうちにどんなことを学び、結果的にどんな成長を実感できたかをお話ししたいと思います。
チームの体制と業務内容
データ基盤グループにはメインで動けるのは2名、兼務の方が1名の合計3名が所属しています。
また、チーム全体で主に以下の業務を担当しています。
- データパイプライン(収集から加工処理、BIツールや外部アプリへのデータ送信といった一連のデータ処理の流れ)をメインとしたインフラの運用・保守
- BIツールを活用したデータビジュアライゼーションと他部署へのサポート
ですが、データ基盤グループが担う領域は幅広く、それ以外にも以下のようなことを行っています。
- 広告運用グループと直接やり取りしながらクライアント用のレポートデータを出力・共有
- サービス上で見たいデータについてのヒアリングやその対応
- 全社的にデータ活用をより推進するための促進活動
このような業務領域の幅広さに加えて、タスクの工程として以下のように構想から実対応までほぼ全てを自分達で行う形式を取っています。
- 自分達で課題を考え挙げ出す
- 課題の優先順位を決める
- 最終的にそれをどうやって対処するかを決める
- 実際の対応
そのため、適切な対処をするには業務知識だけでなく業界や技術的な知識など数多くのことを理解している必要があります。
これらの業務をメインで動けるのはマネージャーと自分の2人という状況もあり、不安を抱えながらもやれることの多さに胸を踊らせながらチームにジョインしました。
一年の流れ
知識を身に付けていた前半の期間と、その知識を実践に活かす後半の期間に分けてお話しします。
前半 ~学び編~
早速ですが、アプリケーションの開発とは異なり、データ基盤はなかなか実際に手を動かしながら学ぶということが難しいです。 体系化されている他社さんもいらっしゃるかもしれません。 ですが、少なくとも弊社では経験のあるエンジニアがデータ基盤を担当してきた経緯があり、私のような知識がない新人が自分の力だけで理解を進めるための地盤は確立されていませんでした。
実際に行った業務知識の付け方としては、とにかく地道に見て学んで疑問があったら質問をするという手当たり次第な方法です。
データパイプラインのアーキテクチャを学び、マルチクラウドであるため様々なクラウドサービスやいくつかのBIツールなどに簡単に触れてみることから始めました。 データの流れや意図を知るには自社サービスの仕組みや実際の画面上での操作も知っておく必要があるため、そういったことを教えていただきながら少しずつ知識を蓄えていきました。
課題とその解決
1.業務理解
始めは、得た知識が一般的なことであるのか自社独自の仕組みなのかが判別しきれず、業務知識を理解する際の妨げになっていたことが課題に感じていました。
このような問題に対しては積極的に状況の切り分けを目的に質問してみたり、一般的なことであれば自分で調べ、ユースケースを自分なりに理解し、自社状況に改めて落とし込むということを行うことで一歩一歩解決していきました。
2.データ構造とモデリング
また、データ基盤の3層構造(データレイク・データウェアハウス・データマート)を採用しており、主に Treasure Data と MySQL の2つの環境を利用しています。
- Treasure Data : ログデータの蓄積と加工
- MySQL : 最終的に用途に合わせてテーブルごとに集計されたデータを格納
ここで強く課題に感じたことは、あるデータを抽出したいとなった時に「どちらの環境のどのDBのどんなテーブルからどんな条件でデータを取ってくればいいか」という判断がとても難しいということでした。
この課題に対して、まず大枠の環境ごとに格納されているデータの役割を理解し、その中の各層に分けた上でこの層とこの層との間では何を目的にどういった処理をしているかといった意味を理解するよう努めました。 これにより、対象のデータが欲しい時は大体ここを見にいけば良い、という感覚を身に付けることができました。
後半 ~実践編~
色彩あふれる紅葉が見られるようになった10月頃のことです。
データの収集から最終的な活用先のイメージが付いてきたため、既存のデータ基盤の改善や社内でのBIツールのサポート等を実際に行いました。
良かったこと
開発用に作った環境は数知れず、と言えるほど多くの環境を作り上げる経験をしました。 基本的に、何かを検証をしたり技術的な調査をするときには都度GCEを使って立ち上げた新たなインスタンスに環境を構築したり、ローカルにDocker環境を作った上で作業を行っています。
もちろん適宜分からないところは追加で調べたりしましたが、前半期にデータにまつわることと並行して学んでいた Docker の基礎知識が大変役に立ちました。 Docker はエンジニアにとって今や普遍的な技術となっているため、業務を通して最低限使いこなせるようになり、それを自分で試行錯誤してみる経験ができたのは1エンジニアとして良い財産になると感じています。
大変だったこと
私は、データ基盤の改修を目的としてdbtというワークフローツールの調査・共有を基本的に一人で行いました。 ですが、自社のアーキテクチャとの相性が悪く、色々なことを加味して今は組み込むことができないという結論に終わってしまいました。 dbtはモダンデータスタックとして最近注目が集まっているツールでありデータエンジニアとして楽しみにしていた部分と、自分が調査したゴールが「現状では導入できない」というチーム全体にとっても悔しい結果に終わりました。
この出来事は、会社やチーム全体の今後のことも踏まえた上で意思決定しなくてはいけないという業務の難しさを味わった瞬間でした。
業務以外の活動
業務とは別に以下の2つを継続的に行っています。
- 勉強会 : 月に平均して3,4つの勉強会への参加または視聴をし、要約や感想・疑問をアウトプットとして times に投稿
- 単語帳 : 口頭で誰かに説明するには自信がないような理解不足な単語をとにかくシートにまとめて、ひとつひとつ調べていく
勉強会は主にデータにまつわる技術的な内容をカバーする目的です。 昨今ではアーカイブが残る勉強会も多くなり、活かせるものは活かして効率的に知識の獲得に繋げました。
単語帳に関して、自社で現在扱っているものは学ぶことができますが、優先順位的にまだ触れられていない技術やそもそも現在の業務だけでは得られない知識がたくさんあります。 以下のような技術的なことから一般的なことまで、領域を定め切ってしまうのではなく、とにかく気になったものは何でも楽しく身に付けようという意識で学びました。
- 他社でのデータパイプライン・データモデリング
- データ活用やサービスのユースケース
- 様々なサービスやツール
- ビジネス用語
- コンピュータサイエンス
- アプリケーション開発
単語の数はこの1年を通して700を超え、自分でも驚きと達成感を感じています。 また、密かに目標にしている、自分の業務とは直接関係ない話の輪に入ることができる状態も目指して、今後もこれらの活動は続けていこうと思っています。
成長を感じた出来事
一年間業務を通して様々な経験や学びがあったと同時に、まだまだ未熟だと感じる時はあります。 ですが、業務を通して得られた知識はもちろんのこと、自主的に学んできたことがきちんと身に付いていると確かな実感として持てた瞬間もありました。 それは、3月24日に Google 主催の Digital Native Leaders Meetup という、データにまつわる GCP サービスのアップデート情報や各社のユースケースについて話し合うオフラインイベントに参加してきた時のことです。
イベントの参加レポートは後日、このテックブログで公開させていただきたいと思っています。
そこで、新卒の身でありながら他社のエンジニアの方々に対して対等に議論できるようになっていることに気付きました。 一年前の自分が参加していたら、議論どころか言葉の意味も分からず聞くことに徹していたと思うと、確かな成長を感じた出来事です。 また、その議論を通して他社の方からも、新卒なのにデータのことにとても詳しいとお褒めの言葉をいただき、この一年やってきたことがきちんと身に付いていることを実感しました。
おわりに
これからは「新卒なのに」の部分が無くなります。 今後は一人のデータエンジニアとしてより深い知識と経験を身に付け、自分なりの価値を提供していきたいと思います。