皆さん、データエンジニアという職種、ご存知ですか?
ITエンジニアと一括に言っても、Webエンジニア、社内システムエンジニア、インフラエンジニア、機械学習エンジニアなど、様々な肩書があると思います。
データエンジニアとは、一言で言うと、社内のデータ分析基盤を開発・運用するエンジニアです!
普段私達の生活の中では、決して身近な存在とは言えない役割ですが、データ分析、機械学習が当たり前ようにビジネスに取り入れられている今だからこそ重要な役割を担っています。
このデータエンジニア、需要が高いことはさることながら、それに当てはまるエンジニアの母数はかなり少ないのが現実です。裏を返せば、今からデータエンジニアを目指すチャンスなのです!
今日は、そんなデータ活用の影のスペシャリスト、データエンジニアの役割と、データエンジニアに必要なスキルについてご紹介します!
データエンジニアの役割
データ分析におけるデータエンジニアの役割
そもそも、データ分析とは一体どのようなプロセスで行われるのかを考えてみましょう。
例えば、1つのECサイトを運営している会社があります。その会社は、E自社の持つデータを分析し、サイト運用の改善をしています。
ではその分析するデータはどこから来るものでしょう?
ECサイトの購買履歴、商品情報、会員情報、入荷情報、出荷情報、Webサイトのアクセスログ、ユーザーのクチコミ、あるいは商品の画像データや、コールセンターにかけられた電話の録音データなど。
分析にかけるデータといえど、その源はあちこちに点在しています。例えるなら鉱山。目当ての資源は、必要なもの不要なものとで入り交じり点在し、それを狙って掘り当てないと手に入れることはできません。
そんなデータを、アナリストが使うデータ分析基盤に集約し、アナリストが分析に集中できる環境を構築するのが、データエンジニアの役割です。
データの収集、連携、蓄積、加工、整形、出力、管理、データに関することなら何でも、エンジニアが持つ技術で対応します。
データ分析の業務で、一番時間がかかると言われている工程が、データの前処理です。データ分析業務全体の8割程度を占めるともいわれています。では、このデータの前処理を、非エンジニアで、データ分析のスペシャリストである、データアナリストがこなしていたら、どうなるでしょうか?
データ分析の結果が出るまでに、相当な時間がかかりますね?
そういったデータの前処理は、データエンジニアが専門となってこなしていくことになります。データアナリストから要件をヒアリングし、自身の持つ技術を持ってデータを加工、データアナリストが分析しやすい形で出力してあげます。そうすることで、データアナリストも、自身の専門である分析の工程に専念することができ、社内のデータ分析業務のスピードも、グッと上がることでしょう!
とはいえ、毎回のデータ分析業務で、データを収集して、加工して、出力してといった工程をこなすほど、データエンジニアのリソースが充足することはありません。そこで登場するのが、データ分析基盤です。
データ分析基盤
データ分析基盤とは、その名の通り、データ分析で活用するデータを集積した基盤のことです。
これを構築、運用するのが、データエンジニアとして最も重要な役割になります。
データ分析基盤とは、データを収集、加工し、データ分析する人が利用しやすい環境を整えるシステム基盤のことを指します。一般的に、以下のようなイメージです。
いきなり3つ新しい単語が出てきましたので、順々に説明します。
データレイク
活用したいデータを生のまま、ローデータとしてためておく場所です。GCPのCloud Storageや、AWSのS3などのクラウドストレージサービスをよく利用します。
データエンジニアは、各所に散らばったデータを、このデータレイク1箇所に集める仕組みを開発します。
データウェアハウス
データレイクにためたデータを、分析などで活用できるように整理し、分析用のデータベースとして1箇所に集約します。業務用のデータベースとは独立させたデータベースで、これをデータウェアハウスと呼びます。当ブログでもたくさん紹介しているGoogleのBigQueryや、AWSのRedshift、snowflakeなどで構築されます。
データエンジニアは、データレイクに蓄積されたデータをデータウェアハウスにロードしたり、データウェアハウス内のデータを設計、整理する役割を担います。
データマート
データマートは、データを目的別に整理、集計し、アナリストがそのままレポートや分析で利用できる状態にしたデータのことを呼びます。BigQuery全体がデータウェアハウスであれば、BigQuery内にある集計済みのテーブルがデータマートになります。
データエンジニアはこのデータマートの設計、実装等を行います。
データエンジニアに必要な4つの能力
ではデータエンジニアの役割が見えてきたところで、具体的にどのような能力が必要なのか見ていきましょう。
プロダクトに関する知識
データエンジニアに一番必要な能力は、 プロダクトに関する知識です。エンジニアといえど、ビジネスパーソンです。データを整備していく上で、どのようなデータがあるのか、データをどのように活用したいのかといったプロダクトに関する知識は不可欠です。
自社がどのような製品を売っているのか、どういったシステム構成なのか等、通常の機能開発をするエンジニア以上に、広いプロダクトの知識が不可欠です。
データアナリストやマーケター、営業などの他部門のステークホルダーと円滑なコミュニケーションを取れるように、担当するプロダクトに関する知識は身につけておきましょう!
データベースに関する知識
OracleやMySQLといったRDBMS、Google BigQueryやAmazon RedshiftといったDWH製品など、データを管理するデータベースの知識も必須です。データを整備する上で、テーブル設計の能力が求められますし、データの抽出、加工にはSQLの知識が必要になります。
パブリッククラウドに関する知識
大量のデータを管理、処理するデータエンジニアの業務と、GCP、AWSなどのパブリッククラウドサービスは非常に相性が良いです。自前で高スペックなサーバを立ててデータを管理するよりも、必要な時に必要なだけリソースを確保し、かつ安全にデータ管理ができるクラウドは、データ分析基盤の構築に向いています。
このデータ分析基盤を構築するのがデータエンジニアの役割です。
パブリッククラウドの、データ分析系、ストレージ、コンピューティング、ロギング、権限運用といった各サービスの活用ができることで、データエンジニアとしての価値はぐっと上がります。
プログラミング能力
こちらは環境にもよるのでマストではないですが、データ分析で広く使われているPythonは書けるようになると非常に重宝されます。
データ連携、加工をするETLは、それに特価したノーコーディングのツールはたくさんありますし、もちろんプログラミングでそれを実現することもあります。
どちらかというと、プログラミングができることよりも、ありとあらゆる手段を検討し、最適な手段を採用できる能力のほうが大切かなと思います。
これからデータエンジニアを目指すために
これからデータエンジニアを目指す方は、ぜひSQLの基礎を身につけてください! ORMやノーコードのBIツールが普及する昨今ではありますが、それらを使いこなすためにはSQLの知識が必要ですし、SQLでないとできないこと、効率がよいことがたくさんあります。
その次に、パブリッククラウドの知識を身につけてください!
AWS、Azure、GCPと、どのクラウドもデータ分析基盤にはかなり力を入れていますが、やはりこのデータ基盤という分野では広く使われているGCPをオススメします。
BigQueryを中心に、コンピューティング、ストレージ、MLといった関連サービスを学び、業務課題を解決する最適なサービスを選定できる力を身につければ、データエンジニアとしての価値はグッと上がると思います。
まとめ
以上、本日はデータエンジニアの役割と必要な能力についてまとめました。
今Webエンジニア、インフラエンジニアなどをされている方でも活躍ができ、かつこれからも需要の高い職種です。
エンジニアとしてのキャリアパスにお悩みの方は、データエンジニア、目指してみてはいかがでしょうか?
当ブログではこれからも、データエンジニアとして学んでいることについて発信していきます!