目次
読了時間: 約14分 | 文字数: 約5,000字
「データは新しい石油」と言われて久しい。しかし、石油は採掘しただけでは使えず、精製・輸送・貯蔵のインフラが必要だ。データも同様で、生データを集めただけでは価値を生み出さない。それを価値ある形に加工し、必要な場所に届ける仕組み——これがデータエンジニアリングである。本稿では、データサイエンティストや ML エンジニアとの協業に必要なデータエンジニアリングの基礎を解説する。
データエンジニアリングとは
データエンジニアリング: データの収集・保存・処理・提供を担うエンジニアリング領域。データ分析や機械学習の「下流」を支えるインフラ。
データエンジニアリングの役割:
生データ → [収集] → [保存] → [処理] → [提供] → 分析/ML
データサイエンスの役割:
提供されたデータ → [分析] → [モデリング] → [洞察] → ビジネス価値
データエンジニアの主なタスク
| タスク | 説明 | 使用ツールの例 |
|---|---|---|
| データ収集 | 各種ソースからデータを吸い上げ | Fivetran, Stitch, Airbyte |
| データ保存 | データレイク/DWH に格納 | S3, GCS, BigQuery, Snowflake |
| データ処理 | 変換・集計・結合 | dbt, Spark, Dataflow |
| データ品質 | 検証・モニタリング・アラート | Great Expectations, Monte Carlo |
| データ提供 | 分析・ML 用に整形して公開 | BI ツール、Feature Store |
データパイプラインの基本構成
データパイプラインは、データが生産されてから消費されるまでの流れを定義する。
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ ソース │ ──→ │ 変換処理 │ ──→ │ 宛先 │
│ (Source) │ │ (Transform) │ │ (Sink) │
└─────────────┘ └─────────────┘ └─────────────┘
ソース(データ発生源)
| ソース種別 | 例 | 特徴 |
|---|---|---|
| データベース | PostgreSQL, MySQL, MongoDB | 構造化データ、トランザクション |
| アプリケーション | Web アプリ、モバイルアプリ | イベントデータ、ログ |
| SaaS | Salesforce, Stripe, Google Analytics | API 経由、定形データ |
| IoT デバイス | センサー、カメラ | ストリーミング、時系列 |
| ファイル | CSV, JSON, Parquet | バッチ処理、静的 |
変換処理(Transform)
データを分析・利用可能な形に変換する。
主な変換タイプ:
- クリーニング: 欠損値処理、異常値除去、フォーマット統一
- 結合: 複数ソースのデータを結合(JOIN)
- 集計: 合計、平均、カウントなどの集計
- 特徴量エンジニアリング: ML 用の特徴量を作成
宛先(Sink)
処理済みデータの格納先・提供先。
| 宛先種別 | 例 | 用途 |
|---|---|---|
| データウェアハウス | BigQuery, Snowflake, Redshift | 分析クエリ |
| データレイク | S3, GCS, ADLS | 生データ保存 |
| データマート | 部門別 DWH | 特定用途向け |
| BI ツール | Tableau, Looker, Power BI | 可視化・ダッシュボード |
| Feature Store | Tecton, Feast | ML 特徴量管理 |
ETL vs ELT——データ処理のパラダイム
ETL(Extract, Transform, Load)
伝統的なアプローチ。データを変換してからロードする。
抽出 (Extract) → 変換 (Transform) → 読込 (Load)
↓ ↓ ↓
ソースから 中間サーバー DWH に
取得 で変換 格納
メリット:
- DWH にロードする前にデータをクリーンアップできる
- 機密データのマスキングを適用可能
- 従来型の RDBMS と相性が良い
デメリット:
- 変換処理に時間がかかる
- 変換ロジックの変更にコスト
- 生データが残らない(変換後しか保存されない)
ELT(Extract, Load, Transform)
現代的なアプローチ。データを変換せずにロードし、後から変換する。
抽出 (Extract) → 読込 (Load) → 変換 (Transform)
↓ ↓ ↓
ソースから DWH に生データ DWH 内で
取得 で格納 SQL 変換
メリット:
- 生データが常に利用可能
- DWH の計算リソースを活用(スケール容易)
- 変換ロジックの変更が容易(SQL のみ)
デメリット:
- DWH の性能に依存
- 生データがそのまま保存される(ガバナンス課題)
どちらを使うべきか
| シナリオ | 推奨 | 理由 |
|---|---|---|
| クラウド DWH 使用(BigQuery, Snowflake) | ELT | 計算リソースが豊富、SQL で十分 |
| 機密データ(PII)を扱う | ETL またはハイブリッド | ロード前にマスキングが必要 |
| ストリーミングデータ | ELT に近いパターン | 取り込み後に処理 |
| レガシー RDBMS | ETL | 変換能力に限界 |
2026 年現在、クラウドネイティブな環境ではELT がデファクトスタンダードだ。
データレイク vs データウェアハウス
データを「どのように保存するか」の選択だ。
データレイク(Data Lake)
あらゆる形式の生データを格納するリポジトリ。
| 特徴 | 詳細 |
|---|---|
| データ形式 | 構造化・半構造化・非構造化(すべて OK) |
| スキーマ | スキーマオンリード(読み取り時に定義) |
| 用途 | 生データ保存、探索的分析、ML |
| コスト | 安価(オブジェクトストレージ) |
| 代表製品 | AWS S3, GCP GCS, Azure ADLS |
データレイクの典型的な階層構造:
s3://data-lake/
├── raw/ # 生データ(変更不可)
├── staged/ # 一次加工済み
├── curated/ # 品質保証済み
└── sandbox/ # 実験用
データウェアハウス(DWH)
分析用に構造化されたデータを格納するリポジトリ。
| 特徴 | 詳細 |
|---|---|
| データ形式 | 構造化データのみ |
| スキーマ | スキーマオンライト(書き込み時に定義) |
| 用途 | BI、レポーティング、定型的分析 |
| コスト | 相对较高(計算・ストレージ統合) |
| 代表製品 | BigQuery, Snowflake, Redshift |
データレイクハウス(Data Lakehouse)
両者の利点を組み合わせた新しいアーキテクチャ。
データレイクハウス = データレイク(安価・柔軟)+ DWH(高速・構造化)
代表製品:
- Databricks Lakehouse
- Delta Lake
- Apache Iceberg
メリット:
- 生データと構造化データを一元管理
- ACID トランザクションをサポート
- ML と BI を同一プラットフォームで
バッチ処理 vs ストリーミング処理
データ処理の「タイミング」の選択だ。
バッチ処理
一定期間のデータをまとめて処理。
| 特徴 | 詳細 |
|---|---|
| 処理頻度 | 毎日、毎時間など定期的 |
| レイテンシ | 高(時間〜日単位) |
| 処理量 | 大量データを効率的に |
| ユースケース | 日次レポート、夜間集計 |
| 技術 | Apache Spark, Hadoop, dbt |
# 典型的なバッチパイプライン例
毎日 2:00 に前日分のデータを処理:
1. 2:00 - データ抽出開始
2. 2:30 - 変換処理
3. 3:00 - DWH にロード
4. 4:00 - 集計完了
5. 9:00 - 朝礼でダッシュボード確認
ストリーミング処理
データをリアルタイムで継続的に処理。
| 特徴 | 詳細 |
|---|---|
| 処理頻度 | 継続的(レコードごと) |
| レイテンシ | 低(秒〜ミリ秒単位) |
| 処理量 | 小〜中量を継続的に |
| ユースケース | 不正検知、監視、パーソナライズ |
| 技術 | Apache Kafka, Flink, Spark Streaming |
# 典型的なストリーミングパイプライン例
クレジットカード不正検知:
1. カード利用発生
2. 100ms 以内にストリーム処理
3. 不正スコアを計算
4. 閾値超ならアラート + 取引ブロック
5. 全体で 500ms 以内
ラムダアーキテクチャ
バッチとストリーミングを組み合わせた設計パターン。
┌──────────────┐
│ クエリ │
│ レイヤー │
└──────┬───────┘
│
┌────────────┴────────────┐
↓ ↓
┌───────────────┐ ┌───────────────┐
│ バッチ │ │ スピード │
│ レイヤー │ │ レイヤー │
│ (正確性) │ │ (低遅延) │
└───────┬───────┘ └───────┬───────┘
│ │
└────────────┬────────────┘
↓
┌──────────────┐
│ データ │
│ レイヤー │
└──────────────┘
バッチレイヤー: 正確だが遅い(真実の源泉) スピードレイヤー: 速いが近似値(リアルタイム性) クエリレイヤー: 両方を統合して回答
複雑なので、最近は「Kappa アーキテクチャ」(ストリーミング統一)も注目されている。
データパイプラインの設計原則
1. 冪等性(Idempotency)
同じ操作を何度実行しても同じ結果になること。
# 冪等でない処理
def load_data(data):
db.insert(data) # 2 回実行すると重複!
# 冪等な処理
def load_data_idempotent(data):
db.upsert(data, key="id") # 2 回実行しても同じ結果
なぜ重要か: パイプラインは失敗して再実行されることがある。その際、データが重複したり欠落したりしないようにする。
2. データ品質の自動検証
パイプライン内に品質チェックを組み込む。
# Great Expectations の例
expectations:
- expect_column_values_to_not_be_null:
column: user_id
- expect_column_values_to_be_unique:
column: order_id
- expect_column_values_to_be_between:
column: amount
min_value: 0
max_value: 1000000
検証失敗時はアラートを送り、パイプラインを停止する。
3. データラインージ(系譜)の追跡
データの出所と変遷を追跡可能にする。
order_summary.amount
← orders テーブル(PostgreSQL)
← 受注システム(2025-09-15 02:00 取得)
← exchange_rate テーブル
← 外部 API(為替レート)
問題発生時に「どのデータが影響を受けるか」を特定できる。
4. 監視とアラート
パイプラインの健全性を可視化する。
| 監視対象 | メトリクス | 閾値例 |
|---|---|---|
| データ鮮度 | 最終更新からの経過時間 | 24 時間超で警告 |
| データ量 | 行数、バイト数 | 前日比±50% で警告 |
| 処理時間 | ジョブ実行時間 | 想定比 2 倍で警告 |
| エラー率 | 失敗レコード割合 | 1% 超で警告 |
ツール選定の指針
オーケストレーション
| ツール | 特徴 | 向いているケース |
|---|---|---|
| Airflow | 老舗、Python ベース、豊富なプラグイン | 自社運用 OK、複雑な DAG |
| Dagster | データ資産中心、開発者体験重視 | モダンな設計、テスト重視 |
| Prefect | 軽量、クラウド併用可能 | 小〜中規模、手軽に始めたい |
| Cloud Composer | GCP 管理 Airflow | GCP 環境 |
変換(Transformation)
| ツール | 特徴 | 向いているケース |
|---|---|---|
| dbt | SQL ベース、バージョン管理、テスト | DWH 内変換、ELT パイプライン |
| Spark | 大規模分散処理 | 大量データ、複雑な変換 |
| Dataflow | GCP 管理、ストリーミング対応 | GCP 環境、リアルタイム |
データ統合
| ツール | 特徴 | 向いているケース |
|---|---|---|
| Fivetran | マネージド、設定のみ | 予算あり、運用工数を削減 |
| Airbyte | オープンソース、自ホスト可能 | コスト重視、カスタマイズ |
| Stitch | 简单易しい、Talend 製 | 小規模、手軽に開始 |
So What?——実務への応用
- ELT から始める: クラウド DWH 環境なら、まず ELT パターンで始める
- 生データを必ず保存: 変換前の raw データは必ず保存(再処理可能に)
- 冪等性を担保: 再実行しても安全な設計に
- 監視を最初から: データ鮮度とデータ量の監視は必須
- ツールより設計: 優れた設計 × 単純なツール > 酷い設計 × 優れたツール
- データ契約を結ぶ: 上流・下流チームとデータ仕様を文書化
データエンジニアリングは「縁の下の力持ち」だが、データ駆動組織の成否を握る。堅牢なパイプラインが、信頼できる分析と意思決定を支える。
参考リンク
- Fundamentals of Data Engineering (O’Reilly) — データエンジニアリングの包括的な教科書
- dbt Documentation — 変換レイヤーの定番ツール
- Great Expectations — データ品質検証フレームワーク
- Data Engineering Zoomcamp — 無料のデータエンジニアリング講座
免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。