データエンジニアとしてfreeeに入社して半年ほど経ったので実際どうなのか赤裸々に語ってみる

はじめまして、freeeでデータエンジニアをしている島袋 @KSKSKSKS2 です。

この記事は、freee Developers Advent Calendar 2021 の6日目の記事です。この記事では、入社約半年の私目線で、freeeでデータエンジニアをやってみてどうか、というのをまとめてみました。freeeやデータエンジニアリングに興味ある方もない方も、ぜひご一読ください!

目次

記事を書いているのはどんな人か

自己紹介

まず、簡単に私の自己紹介からです。新卒から約8年間ソフトウェアエンジニアをしていて、freeeが4社目になります。

また、freeeまでに所属していた企業は、多くても従業員数が200人に満たないfreeeと比べても小規模な会社だったので、freeeに入社して初めてチャットアプリを立ち上げた時、人がいっぱいいる!と思ったのを覚えています。

データエンジニアになった理由

データエンジニアになる前は、機械学習が流行ってきていた波にのり受託系の開発会社で機械学習エンジニアとして働いていました。

機械学習エンジニアの作業は、よく言われるようにモデル開発はごく一部で、その周辺のデータを利用できるように整備する、学習したモデルをサービスで利用できるようにする、という周辺の部分のウェイトが大きいです。また、データの整備さえできれば、簡単な集計でも十分やりたいことができるというケースもあります。

働いていく中で、まずデータを整えて、データを使うことが当たり前の環境を色々なところに作る必要がある、と感じました。データが色々なところに蓄積され、利活用に関する組織運営のノウハウも広く共有されて、初めてそれを活用する技術がもっと使われるものになるだろうと考えたのです。

そこで、データの利活用を行いやすい環境を整えられるようになりたいと思い、データエンジニアになることにしました。

freeeを選んだ理由

データエンジニアを専任でやるにあたって、転職の際には以下を重視してて転職先を探していました。

  • データ基盤が既に存在していて、社内でもデータが利活用されている
  • 社内に蓄積されているデータがそれなりに大規模なものになっている

上記の条件を満たす企業は日本にもいくつかありますが、面接を通してfreeeでなら知見が不足している部分も色々と試行錯誤しながらやっていけそう、入社後もデータの規模・種類ともにどんどん増えていきそうと感じたため、最終的にfreeeで働くことにしました。

半年間実際どうだったか

データエンジニアとしてのスキルは一通り身についた

少なくともfreeeのデータ基盤で使われている技術やその類似の技術については、という留保付きにはりますが、よく使う技術の使い所や運用面の勘所はなんとなくわかるようになってきました。

リポジトリやインフラ部分が整備されていたおかげで、作業の入りはスムーズに行うことができました。特に、うっかりミスで動いているサービスに大きく影響するということがない環境になっているため、ビクビクしながら作業せずに済んだのは、なれない中作業をするに当たって心理的には非常に大きかったです。

会社も知識の吸収や資格の取得に取り組むことについても応援してくれるところがあり、そのおかげもあって、先日 Google Cloud の Professional Data Engineer の資格に合格することができました。

まだまだ表面的にしか理解できていない部分も多く、自身で一から設計するにはおぼつかない部分もあるため、ここはもっともっと磨いていきたいと思います。

ソフトウェアエンジニア力は割と役に立った

入社するまでは、データを処理するクラウドサービスやOSSをうまいこと利用する、というのがデータエンジニアの主な業務内容だという認識でした。もちろんこれはその通りなのですが、「うまいこと利用する」という部分で色々とやることがあるな、というのが入社してみて強く感じたことです。

例えば、OSSを利用するにしても、その設定ファイルを自社の環境に合わせて自動生成する仕組みを作ったり、OSSの元の機能でカバーしきれない部分を、なるべく自社の業務で汎用的に使えるものとして実装する必要があります。

主に開発するツールのユーザーは自分たち自身になりますが、ここの出来栄えによって作業の進捗は大きく変わります。データエンジニアの作業がスムーズにいけばいくほど、社内のデータ利用をより活発にできるはずですので、ここをいかにうまくやるかは非常に重要だと言えます。

また稀にではありますが、使っていくうちにOSS自体の使いにくさやバグに当たることもあり、それらの修正パッチを作るケースもあります。最近だと、redash本体へPRを出して取り込んでもらう事もありました。この辺りは、freeeというデータをしっかり活用していて、それをさらによくしていこうとしている環境だからできる経験だなと思います。

データエンジニアの関わる範囲の広さを知った

DMBOK(データマネジメント知識体系ガイド)内のDAMAホイール図にならうと、データマネジメントの観点は中心となるデータガバナンスも含めると11もあります。組織の状況に応じてそれぞれの重要度は変わってきますが、データ活用を進める人間は、今どれが会社で重要なのか判断し、そのための環境を整えていく必要があります。

また組織の人数が増えてくると、取り込みたいデータの種類も、データの活用の仕方も幅広くなっていきます。全てのデータソースやデータ活用方法に精通することはできないため、それらの差異をいかに抽象化して処理するか、抽象化できない場合は利用者やデータを作っている方の協力も得ながらいかにオペレーションを回すかを設計していく必要があります。

この辺りは観念としてはなんとなく理解はしていましたが、組織における課題の独自性を考慮して、汎用的なツールやフレームワークに落とし込みつつ、どのように解決するかは非常に難しいなというのが実感です。上記のような課題は、freeeだけでなく多くのデータを活用している会社で大なり小なり抱えている課題のようで、「Modern Data Stack」という言葉でそれらに対するツールやアプローチがまとめて語られており、この辺りも注目していきたいなと思っています。

これからどうしていきたいか

入社後から今までは、どちらかというと実装や運用タスクメインで作業をやってきました。今後は、一段上の視点からデータ基盤の課題を捉えられるようになっていきたいと考えています。

どういうものを作ればより良くデータ活用ができるのか、それをどのような技術で提供するのかを考え、実践していきたいと思っています。特に、データガバナンスを実際に効かせるためには、どのようなルールを作成し他のチームと協力するようにすればデータの活用をスケールしていけるのか、試行錯誤していきたいと思っています。

データ基盤を支えるメンバーを募集しています

最後に、freeeでは一緒にデータ基盤を支えてくれるデータエンジニアを絶賛募集中です!データエンジニア以外の職種も幅広く募集中ですので、どんなデータ基盤が実際にあるのか、少しでもご興味持っていただいた方は、ご応募よろしくお願いします!

明日はGoki Taniさんが固定資産機能の改善かPMについて書いてくれるそうです!お楽しみに!