データエンジニアの業務内容
こんにちは、フリーランスとしてデータエンジニアをしている、鈴木(@munaita_)と申します。
新卒で株式会社サイバーエージェントに入社しバックエンドエンジニアとして働いた後、フリーランスとして独立しました。
独立後は、フロントエンドからサーバーサイドまで広く開発を担当してきましたが、最近はデータ周りの開発需要の高まりの影響もあり、データエンジニア案件を中心として活動しています。
今回は、バックエンドエンジニアの一つのキャリアパスとしてデータエンジニアの魅力と働き方をご紹介していきます。
需要が高まっているデータエンジニア
ここ数年、データは経営における重要な資産だと言われるようになり、データドリブンな経営や意思決定が注目を浴びてきています。自社システムのデータをうまく利用して意思決定をおこなうことや、AIや機械学習によるサービスの品質や効率向上させることに対する企業の需要も日々高まってきています。
データサイエンティストやデータアナリストが中心となり、分析・示唆の提示、機械学習モデルの作成などを行うのですが、その分析環境を作る時、データエンジニアが必要になります。
データの分析環境を整える需要が高まるにつれて、データエンジニアの需要も高まっています。
データエンジニアの業務内容
データエンジニアの仕事とは、必要なデータを収集し、分析しやすいように加工し、安全に保管するシステム(データ基盤)を運用・開発することです。
1.データ集計
まず、データ分析基盤に必要なデータの集計があります。企業には様々なところにデータが散らばっています。データベース、ログファイル、意思決定者のPCにあるエクセルシート...など散らばっているデータを一箇所に集めて、分析しやすい環境を作ります。
2.分析環境の構築
データサイエンティストやデータアナリストが分析しやすい分析環境を構築も行います。例えば、非常に巨大なデータを取り扱わなければならない場合、スケーラブルな環境を用意したり、アナリスト同士で共通した分析環境が必要な場合はコンテナベースの分析環境を用意したりします。
3.データの品質の監視
収集したデータの品質を監視します。データの欠損はないか、不整合なデータが入っていないか、重複はないかなど取得したデータがおかしくないかを監視入れてしてチェックしています。さらに、セキュリティを考慮した分析基盤を構築などもあります。
個人情報保護法やGDPRに準拠した分析環境にするため、誰がどのデータにアクセスできるか、データの保持方法は適切かなどを考慮しながら開発をする必要があります。
この他にも様々な業務内容がありますが、基本的には、データ分析をするための環境づくりがデータエンジニアの業務内容になります。
データエンジニアの魅力
大規模データを扱うので、小規模開発では扱えないクラウド技術の機能をふんだんに活用できるところがデータエンジニアの魅力です。パフォーマンスの問題や、スケーラビリティの課題をクラウド技術で解決することにはやりがいを感じます。
運用での課題が多いデータ基盤ですが、これらに対するソリューション技術も多く登場してきています。
そういったものを活用しながら、使いやすいデータ基盤を作っていくことも面白いところです。
フリーランス x データエンジニアは相性がいい
また、クラウド技術の進歩も相まって、非常にシンプルにデータ基盤を構築できるようになり、多くの企業がデータ活用に乗り出そうとしています。クラウドをフル活用したデータ基盤を開発・運用してきたエンジニアはまだそれほど多くないので、比較的案件は豊富にあるような印象を受けます。
また、データ基盤開発案件では、本流となるシステムとある程度切り離して開発が可能です。本流システムとの依存性が少ないので、業務委託として仕事を受けやすいという利点もあります。短期間でのデータ基盤構築案件などのスポットの案件もあるので、フリーランスにとっては比較的相性のいい職種と言えるかもしれません。
基盤を開発する案件では、基本的には2~3人程度の少数精鋭で開発を行うことが多く、スポット案件が生まれやすいのも特徴です。
データエンジニアに必要な4つの能力
▲かなり前の技術系プログラムでのデモ発表
クラウドサービスの理解と実装力
まずは、クラウドサービスの理解と実装力が求められます。スケーラブルで可用性の高いデータ基盤を開発・運用しようとすると、どうしてもクラウド中心のアーキテクチャになります。
要件に対して、複数のクラウドサービスを組み合わせて構築できるアーキテクチャの引き出しが多くあることが強みになります。
素早く要求を理解し実装していく力
データエンジニアはバックエンドエンジニアやアプリエンジニアに比べ、ミッションクリティカルな側面は少ないので、詳細を詰めるよりも、素早く要求を理解し、仕様に落とし込んで、積極的に実装し、後から改善してく能力がより求められると思います。
使いやすいデータ分析基盤を開発する能力
セキュリティを考慮しながら、使いやすいデータ分析基盤を開発する能力です。GDPRや個人情報保護法など、データの取り扱いに関する法的な観点を考慮して開発を行う必要があります。
セキュリティを担保した仕組みにしていくと、どうしてもアナリスト側からすると使い勝手が悪くなってきてしまうものです。その中でも、いかに使いやすい基盤作りをするかの能力が求められます。クライアントと一緒に、法的に問題なく、安全に、かつ、使いやすいデータ基盤環境を構築する方法を検討していく姿勢が必要です。
コミュニケーションとディレクションの能力
複数のステークホルダーとの円滑なコミュニケーション能力が求められます。データ基盤を開発するにあたり、社内のあちこちのデータを収集し管理するため、多くのサービス関係者とコミュニケーションが必要です。同じ会社の開発者だけでなく、開発ベンダーとのやりとりなども頻繁に発生します。
例えば、データ収集においては、各サービス担当者にお願いしてデータの取得や、システム連携の依頼をします。忙しい開発者の方はなかなか対応してくれないことなども多いので、粘り強くお願いし続ける根気強さが必要です。また、企業内にデータ活用が広まり、広くデータ基盤が利用されるようになると、様々な問い合わせや依頼が絶えず飛び込んできます。
ダッシュボードにデータうまく表示されない、日付がおかしい、集計時刻を早めて欲しいなど、ステークホルダーが多い分、様々な問合せや依頼が舞い込んでくるので、これらに効率よく対応していく能力が求められます。
今後データエンジニアのチャレンジングな領域
企業内でデータが広く活用されるようになった後に、いかに上手くデータを管理するか、がデータエンジニア領域の課題だと感じています。
クラウド技術の発達により、スケーラビリティやパフォーマンスに優れたデータ基盤を比較的シンプルに構築できるようになりました。
その後、データ基盤が社内な場所で活用される段階に入り、データの管理の欠如による混乱が生じてくる企業は多いのではないでしょうか。
例えば、
- 蓄積したデータが不整合・重複・欠損していて集計結果がおかしい
- アクセス制御されていなければならない機密データにアクセスできてしまう
- ある分析をしたいけどデータがどこにあるかわからない
- データが何を意味するのか不明
- そもそも誰がオーナーなのかが不明のデータが散乱している
などデータをどう管理して価値を生み出すか、その管理体系とオペレーションの構築が非常に重要になってきていると思います。
非常に泥臭くて地味な領域であるとは思いますが、データ分析が価値を生み出すためには避けては通れない課題であり、データエンジニアとして挑戦しがいのある領域だと思います。