MENU

データエンジニアってやつ

こんにちは rokkoku です。

フリーランスのデータエンジニアとして新規の企業様との打ち合わせ時や、趣味で行っている初学者向けのプログラミング講師活動の中で、
しばしば次のような質問をされることがあります。

「データエンジニアってなんですか?」
「データサイエンティストとは違うの?」
「どんなスキルが必要なの?」

そこで、今回はデータエンジニアとはなんなのか、私なりに解釈していることを書いてみようと思います。

1. データ活用の全貌

初めに、データエンジニアという職種を知るためには、データ基盤や各ポジションがどこにあるのかを知っていただきたいです。
そのためには、データが利用されるまでの全体像を知る必要があります。以下が全体像です。

図1-1

データの発生

データソース(Data Source

まず、データというものは様々なところから発生しています。例えば、Webサイトのアクセスログ、アプリの利用ログなどのログデータ、スマートフォンで撮影した画像や動画、音声、外部から取得する気象データや統計データ、システム上のAPI経由で取得するデータなどなど、様々な発生源があります。これらの発生源からの生のデータのことをデータソースと呼ばれます。

これらのデータソースを活用するために、次に記すデータ基盤にデータを抽出・読み取りされます。

データ基盤システム

発生したデータを活用するために、システム上で加工したり分析したりします。
これらはデータ基盤と言われ、以下の3層構造の基本概念が広く提唱されています。

データレイク(Data Lake)

データソースの生データは、データ基盤上ではデータレイク層に集約します。(ステージング層とも呼ばれる。メダリストアーキテクチャではBronze層。)
つまり、未加工状態の初期データをそのまま格納し、生データを保管しておく場所になります。そのため、構造化/非構造化データなど形式が様々かつ、リアルタイムデータや過去のデータなども混在しています。
(Amazon S3, Azure Data Lake Storage, Google Cloud Storage などのサービスがよく使われている)

次に、データレイク層に保管されたデータをデータウェアハウス層へ、データを整理して格納します。

データウェアハウス(Data Warehouse)

データウェアハウスでは、データレイクに保管されたバラバラの形式のデータを構造化し、欠損値処理や異常値処理、重複処理、マスキング処理、標準化処理などといった、分析できるデータとして利用するための加工抽出を行ったデータを格納します。
(Amazon Redshift, Google BigQuery, Snowflake などのサービスがよく使われている)

そして、データウェアハウス層から、より分析や利用目的に最適化するためのデータレイク層へ、さらにデータを整理して格納します。

データマート(Data Mart)

データマートでは、特定の部門や目的で分析しやすいように小規模なデータセットに最適化して格納します。
例えば、売上分析データ、顧客行動データ、商品データなど、各部署や利用目的にあったデータを用意します。
このようにして加工された、生データはビジネスで利用できるようになります。

続いて、これらのデータをどのように利用していくのかというお話です。

Column
▼ETL / ELT
  • ETL(Extract, Transform, Load)は、データを抽出、変換してから、DWHへデータを格納する処理方式。
    • 特徴:データの整合性を担保できる。個人情報や権限依存を事前に解消することができる。
  • ELT(Extract, Load, Transform)は、データを抽出、DWHへデータを格納してから、変換を行う処理方式。
    • 特徴:リアルタイム性を確保することができる。SQLでの加工のみで済ませることができる。

 ※どちらの方法も採用するハイブリッド型もある。数百GBほどのデータ量では数時間の処理時間差が出る場合がある。

▼メタデータ

データそのものの情報。(例)データの作成日時、データの所有者、データの構造、データの定義や説明、データの更新日時、etc…

データの利用

データプロダクト(Data Product)

加工されたデータは、新しくサービスに利用されるWebアプリや、意思決定のために可視化するBI(Business Intelligence)ツール、過去データを用いて予測を立てる機械学習などに利用されて価値を発揮します。
このように加工データを活用したモノをデータプロダクトと呼んだりします。

2. データ人材

ここまで説明したように、データが発生してから利用されるまで各工程があり、それらごとにデータ人材のポジションの役割があります。
以下に各ポジションの説明を記載します。

データエンジニア

データエンジニアは、生データから利用できるようになるまでのデータの処理を行う、所謂データ基盤構築(データインフラの整備)がデータエンジニアの主な仕事となります。また、このようにデータを効率的に処理・保守・運用するためのシステムやインフラを設計・構築・運用することを総称して、データエンジニアリングと呼びます。
※会社やプロジェクトによっては、次に述べるデータ利用のためのBIでのダッシュボード開発なども行ったりします。
※クラウド/インフラエンジニアに分類されることもあります

▼スキル
プログラミングスキル、データ操作、ETL/ELTツール利用、クラウドの知識、コンテナ技術、データベース設計、バージョン管理、etc…

データアナリスト

データアナリストは、ビジネスサイドからの分析要件を把握し、整備されたデータを用いて、BIツールなどで可視化を行います。
時には、SQLなどを用いて整備データを集計したり分析したりもします。より、ビジネスサイドとの連携が必要とされます

▼スキル
データ操作、BIツール利用、ドキュメンテーション、基本的な統計知識、ビジネスコミュニケーション、etc…

データサイエンティスト

データサイエンティストは、整備されたデータを用いて、高度な分析ロジックや統計知識を用いた分析を行ったり、機械学習・予測モデルを開発したりします。必要に応じてデータを加工することもあります。より、ビジネス価値を創出するための視点が必要とされます。

▼スキル
プログラミングスキル、データ操作、機械学習知識、統計学、数学、モデル評価、ビジネスコミュニケーション、etc…

データコンサルタント

データコンサルタントは、データ戦略の立案からプロジェクト推進まで、ビジネス課題を理解し、解決策を提案したり、クライアントのデータ活用を包括的に支援します。各種ポジション(エンジニア、アナリスト、サイエンティスト)とビジネスサイドを繋ぐ橋渡し役も担います。

▼スキル
ビジネススキル、プロジェクトマネジメント、ビジネスコミュニケーション、プレゼンテーション、基本的な分析知識、etc…

3. データエンジニアを目指す理由

多数のエンジニアの分野や種類がある中(以下は厚生労働省HPに記載のIT分野の職種)で、データエンジニアという職種を目指すべき理由(たまに、「なぜこの分野をやっているんですか?」と聞かれる)は正解も間違いもないと思いますが、以下に私なりの回答を記載しておきます。

厚生労働省(IT業界の主な分野)
  • データを整理する楽しさ
    私はもともとIT×教育×人材の業界にいました。ベンチャー・スタートアップ界隈だったこともあり、ゴリゴリの開発エンジニアということではなく、Webアプリの開発傍らにプロダクトのKPIを常に意識した働きかけが必要とされる環境や業務だったため、データを見るという機会が多くありました。その中でSQLでのデータ整理の楽しさや、自動化プロセスの設計思考の楽しさを見出す経験がありました。これがSQLやPython、データ領域にのめり込むきっかけでした。完全に個人的な理由ではありますが、もともと物事を整理したりするのが好きな性格だったこともあり自分にとっての楽しさを見出すことができる仕事がデータエンジニアという職種に当たったということです。
  • 将来性
    近年、機械学習やAIが発達する世の中で、便利すぎる世の中だなあと思うことが多々あります。前提として全く悲観することではありませんが、それ故に、取って代わる技術や不要になる思考があるなと個人的には感じています。ただし、機械学習やAIモデルなど、それらは全て”データ”があるからこそ成り立っているのではないかと私は思っています。その上で、データエンジニアというデータ基盤を構築する役目は今後もより必要になってくるのではないかと思っているからです。
  • やりがい
    エンジニアといえども、私は人と話すことやビジネスそのものが好きな性格です(おそらく)。前述した通り、データ領域のエンジニアは、よりビジネス視点やコミュニケーションのスキルが必要とされている職種だと考えています。また、クラウドの知識も要し、一部分的なプロダクトの開発だけにとどまらず、大きな規模や多くのステークホルダーとの関係の中で価値があると思っています。(他の職種が無いという話ではありません。)だからこそやりがいを感じます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする