データエンジニアリングの基礎

―データプロジェクトで失敗しないために

[cover photo]
TOPICS
Database , System/Network
発行年月日
PRINT LENGTH
416
ISBN
978-4-8144-0065-2
原書
Fundamentals of Data Engineering
FORMAT
Print PDF EPUB
オンライン学習プラットフォーム
購読可
いますぐ読む
Ebook
4,400円
Ebookを購入する
Print
4,400円

データエンジニアリングとは、組織内外で日々生成されるデータを蓄積し分析するためのデータシステムを構築し維持管理することであり、急速に注目を集めている分野です。近年ではデータエンジニアリングを支えるツールやクラウドサービスが成熟し、組織へのデータ利活用の導入は容易になりましたが、明確な指針のないままデータシステムの構築を進めると費用と時間を無駄に費やすことになります。本書は「データエンジニアリングライフサイクル」を軸にデータシステムの要件を整理することで、組織の「データ成熟度」に応じたデータシステム構築の指針を与えます。またデータエンジニアの立ち位置を明確にし、組織内でデータエンジニアが果たすべき役割を示します。

正誤表

書籍発行後に気づいた誤植や更新された情報を掲載しています。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷数をご確認の上、ご利用ください。

第1刷正誤表

2026年6月更新

■P.x 8行目
【誤】我々の個々での目的は、
【正】我々のここでの目的は、

■P.xi 下から4行目
【誤】さまざまクラウドテクノロジ
【正】さまざまなクラウドテクノロジ

■P.xv 12行目
【誤】自分の名前が乗っていなかったとしても
【正】自分の名前が載っていなかったとしても

■P.xv 13行目
【誤】連絡をくれれば、
【正】連絡をいただければ、

■P.xv 下から9行目
【誤】Michele Cronin、に
【正】Michele Croninに

■P.xx 12行目
【誤】4.11.3 データ管理
【正】4.11.3 データアーキテクチャ

■P.11 下から5行目
【誤】強固な基盤が構築できる。
【正】強固な基盤を構築できる。

■P.12 下から9行目
【誤】これらの分野の十分に理解しておく必要がある。
【正】これらの分野を十分に理解しておく必要がある。

■P.26 下から7行目
【誤】データへ強く依存するようになった。
【正】データに強く依存するようになった。

■P.29 15行目
【誤】タイプAデータエンジニアとタイプBデータエンジニア
【正】タイプAデータエンジニアとタイプBデータエンジニアについて説明した

■P.29 16行目
【誤】データエンジニアが一緒に作業する人
【正】データエンジニアが一緒に作業する人について説明した

■P.34 2行目
【誤】中央のシステムにデータメッセージ(長方形)として
【正】中央のシステムにデータをメッセージ(長方形)として

■P.35 15行目
【誤】個々のデータソースには、
【正】個々のデータソースは、

■P.36 下から19行目
【誤】仕組みを理解してできているか。
【正】仕組みを理解できているか。

■P.40 1行目
【誤】継続的CDC(変更データキャプチャ)。を考えてみよう。
【正】継続的CDC(変更データキャプチャ)を考えてみよう。

■P.41 下から1行目
【誤】新たな虚栄プロジェクトを生み出されつつある。
【正】新たな虚栄プロジェクトが生み出されつつある。

■P.45 下から4行目
【誤】データエンジニアリングサイクル
【正】データエンジニアリングライフサイクル

■P.48 8行目
【誤】組織が収集したデータ品質、
【正】組織が収集したデータの品質、

■P.48 16行目
【誤】新聞の一面に乗ることも
【正】新聞の一面に載ることも

■P.52 12行目と13行目
【誤】遅延到着するデータに対して処理する標準的な方法を定めて、
【正】遅延到着するデータを処理する標準的な方法を定めて、

■P.61 12行目
【誤】ソフトウェアエンジニアリングのいくつか一般的な領域について簡単に説明する。
【正】ソフトウェアエンジニアリングの一般的ないくつかの領域について簡単に説明する。

■P.67 15行目
【誤】コースを修正することを可能になる。
【正】コースを修正することが可能になる。

■P.69 下から6行目
【誤】データがデータエンジニアリングライフサイクルに沿ってデータが取り込まれ、
【正】データがデータエンジニアリングライフサイクルに沿って取り込まれ、

■P.74 下から8行目
【誤】その他バックドアも一切を禁止する。
【正】その他バックドアも一切禁止する。

■P.75 下から17行目
【誤】新しい機能が追加して公開したり、
【正】新しい機能を追加して公開したり、

■P.77 下から6-4行目
【誤】
新たに起こりつつ専門家の動きを指す。反復的にデータ駆動でインフラストラクチャ支出を管理する(すなわち、クラウドの単位を低下させる)ことで、と同時に、クラウド環境のコスト効率と最終的な収益性を向上させる。
【正】
新たに起こりつつある専門家の動きを指す。反復的にデータ駆動でインフラストラクチャ支出を管理する(すなわち、クラウドの単位コストを低下させる)ことで、クラウド環境のコスト効率と最終的な収益性を向上させる。

■P.80 13行目
【誤】需要の増加した際に
【正】需要が増加した際に

■P.86 8行目
【誤】適切に隔離されなければならない複数の外部顧客テナントがある場合、
【正】適切に隔離されなければならない。複数の外部顧客テナントがある場合、

■P.88 下から10行目
【誤】個々でアーキテクチャの例を示す意図は、
【正】ここでアーキテクチャの例を示す意図は、

■P.90 下から7行目と6行目
【誤】システム調達していた。
【正】システムを調達していた。

■P.93 下から6行目
【誤】クラウドベースをつなぐだけで
【正】クラウドベースのつなぐだけで

■P.94 17行目
【誤】フレームワークの登場したことにより、
【正】フレームワークの登場により、

■P.95 下から16行目
【誤】Kappaアーキテクチャの現論文は
【正】Kappaアーキテクチャの原論文は

■P.96 下から4行目
【誤】収集したデータに対してデータを処理したり
【正】収集したデータに対して処理したり

■P.97 3行目
【誤】デバイスからの収集されたデータを消費する
【正】デバイスから収集されたデータを消費する

■P.97 下から3行目
【誤】さまざま事態が起こることだ。
【正】さまざまな事態が起こることだ。

■P.102 11行目
【誤】データ管理と等号を近代化する鍵
【正】データ管理と統合を近代化する鍵

■P.103 下から20行目
【誤】イノベーションを水深する
【正】イノベーションを推進する

■P.109 13行目
【誤】迅速、確実、安全、確実に作業を進められるツール
【正】迅速、安全、確実に作業を進められるツール

■P.109 17行目
【誤】相互作用する方法を示すものだ。
【正】相互作用するかを示すものだ。

■P.109 下から14行目
【誤】多くベンダや
【正】多くのベンダや

■P.112 18行目
【誤】テクノロジ全体の急速に進化したとしても、
【正】テクノロジ全体が急速に進化したとしても、

■P.118 16行目
【誤】クラウド環境に移すことだけに
【正】クラウド環境に移すことで

■P.121 8行目
【誤】サーバに回帰されたことを、
【正】サーバに回帰したことを、

■P.123 3行目
【誤】投資すること勧める。
【正】投資することを勧める。

■P.125 4行目
【誤】メンテナに生活費を与えない
【正】メンテナに生活費をもたらさない

■P.128 13行目
【誤】意味があるかをどうか
【正】意味があるかどうかを

■P.130 7行目
【誤】アプリケーションを他のマイクロサービスにアクセスできるようにすることができる。
【正】アプリケーションを他のマイクロサービスからアクセスできるようにする。

■P.133 14行目
【誤】単一のハードウェアノードで、可能な多数のコンテナをホストし、
【正】単一のハードウェアノードで多数のコンテナをホストし、

■P.133 20行目
【誤】本章で前述した分散モノリスの問題に対する部分的に解決できる。
【正】本章で前述した分散モノリスの問題を部分的に解決できる。

■P.138 8行目
【誤】これらは適切にテクノロジの選択する上で、
【正】これらは適切にテクノロジを選択する上で、

■P.138 下から13行目
【誤】4.11.3 データ管理
【正】4.11.3 データアーキテクチャ

■P.139 下から5と4行目
【誤】ビジネスの針を動かすものを削ぎ落とし、改良し、カスタマイズし続けることができる。
【正】ビジネスにとって重要なものをコツコツと改良し、カスタマイズし続けることができる。

■P.140 下から5行目
【誤】アナリクスデータベースの次に来るもの
【正】アナリティクスデータベースの次に来るもの

■P.143 図5-1
【誤】ソースシステムは、以降のデータエンジニアリングライフサイクルデータで使用するデータを生成する
【正】ソースシステムは、以降のデータエンジニアリングライフサイクルで使用するデータを生成する

■P.145 13行目と14行目
【誤】さまざまなサービスやフレームワーク、APIデータ取り込みを自動化するサービスが台頭してきたとはいえ、
【正】さまざまなサービスやフレームワークが台頭し、APIデータ取り込みを自動化するサービスが普及したとはいえ、

■P.147 13行目
【誤】受け付けていること意味する。
【正】受け付けていることを意味する。

■P.148 5行目
【誤】すべてのログには
【正】すべてのログに

■P.149 11行目
【誤】確認応答がログに書き込んだことを
【正】確認応答が、ログに書き込んだことを

■P.154 下から1行目
【誤】勉強することを進める。
【正】勉強することを勧める。

■P.155 14行目
【誤】NoSQLの歴史を簡単に振り返ってみよう。
【正】NoSQLの歴史を振り返ってみよう。

■P.156 下から13行目
【誤】ここでいう、ドキュメントは
【正】ここでいうドキュメントは

■P.165 5行目
【誤】先入れ先出し(FIFO)であるとすることが多い。
【正】おおよそ先入れ先出し(FIFO)であるとすることが多い。

■P.165 6行目
【誤】厳密なFIFOとは、
【正】厳密なFIFOであれば、

■P.165 7行目
【誤】メッセージAは常にメッセージBより先に配送されることを意味する。実際には、メッセージの配送時には順番が前後することがある。
【正】メッセージAは常にメッセージBより先に配送される。実際には、メッセージの配送時に順番が前後することがある。

■P.166 下から6行目
【誤】marketingサブスクライバ、は
【正】marketingサブスクライバは

■P.167 下から7行目
【誤】ストリーミングプラットフォームこのような耐故障性と
【正】ストリーミングプラットフォームはこのような耐故障性と

■P.169 7行目
【誤】DODD(「2章 データエンジニアリングライフサイクル」で言及)データアーキテクチャ、
【正】DODD(「2章 データエンジニアリングライフサイクル」で言及)、データアーキテクチャ、

■P.170 下から13行目と12行目
【誤】それともデータベースがリスケールが終わるまで
【正】それともリスケールが終わるまで

■P.171 10行目
【誤】例えば、以降のようなチェックを行う。
【正】例えば、以下のようなチェックを行う。

■P.171 下から10行目
【誤】システムが十分に信頼性できる状態に戻るまでの
【正】システムが十分に信頼できる状態に戻るまでの

■P.172 下から12行目と11行目
【誤】データランドスケープは、ソースシステムへのアクセスを簡素化し自動化するツールに移行しつつあり、
【正】データのランドスケープが、ソースシステムへのアクセスを簡素化し自動化するツールに移行しつつあるため、

■P.173 16行目
【誤】実運用稼働が停止して
【正】実運用環境が停止して

■P.175 図6-1
【誤】ストレージへの保存はデータエンジニアライフサイクルで中心的な役割を果たす
【正】ストレージへの保存はデータエンジニアリングライフサイクルで中心的な役割を果たす

■P.178 12行目
【誤】別の味方をしてみよう。
【正】別の見方をしてみよう。

■P.182 下から5行目
【誤】データ供給提供やパイプラインでの
【正】データ提供やパイプラインでの

■P.187 7行目
【誤】その他のメタデータのための、データも含まれる。
【正】その他のメタデータも含まれる。

■P.187 下から2行目
【誤】仮想化オブジェクトストレージを
【正】仮想化ブロックストレージを

■P.188 下から16行目
【誤】スナップショットがS3に複製するには
【正】スナップショットをS3に複製するには

■P.191 1行目
【誤】はるか性能が低い場合がある。
【正】はるかに性能が低い場合がある。

■P.194 7行目
【誤】メタデータのペアよって構成される。
【正】メタデータのペアによって構成される。

■P.197 1行目
【誤】過去に保存データの指定した範囲を返すことを可能にする。
【正】過去に保存したデータの指定した範囲を返すことを可能にする。

■P.200 下から4行目
【誤】データウェアハウスの機能を適応するが、
【正】データウェアハウスの機能を適用するが、

■P.205 7行目
【誤】クラスタとHDFSを削除する、
【正】クラスタとHDFSを削除する。

■P.205 12行目
【誤】非常に高価である。
【正】非常に高価であることだ。

■P.205 下から12行目
【誤】きめ細かく制御することができる、
【正】きめ細かく制御することができるが、

■P.206 1行目
【誤】ハードウェアに低レベルでアクセスことに
【正】ハードウェアに低レベルでアクセスすることに、

■P.207 下から3行目
【誤】データへのアクセスする意図が
【正】データへアクセスする意図が

■P.208 下から15行目
【誤】考える必要がある
【正】考える必要がある。

■P.210 下から11行目
【誤】シングルストレージとマルチテナントストレージには
【正】シングルテナントストレージとマルチテナントストレージには

■P.211 5行目
【誤】クエリや変換が実行されたときに実行されることを保証する必要がある。
【正】クエリや変換を実行しようとしたときに、実際に実行されることを保証する必要がある。

■P.211 下から12行目
【誤】データの有用性が向上する
【正】データの有用性が向上する。

■P.216 11行目
【誤】あるテーブルから別のテーブルにコピーしたり
【正】あるテーブルから別のテーブルにコピーしたり、

■P.219 5行目
【誤】低頻度のから高頻度まで
【正】低頻度から高頻度まで

■P.219 下から10行目
【誤】バッチの頻度がすべてのそれよりも下流の処理のボトルネックになる。
【正】バッチの頻度がそれよりも下流で行われるすべての処理のボトルネックになる。

■P.224 下から5行目
【誤】デシリアライズ可能にする。
【正】デシリアライズを可能にする。

■P.226 下から8行目
【誤】イベントの総数のバイトサイズなど、
【正】イベントの総数やバイトサイズなど、

■P.232 10行目と11行目
【誤】JVMはポータブルにコードを実行できる、非常に人気のあるコンパイル実行を行う仮想マシンなのだ。
【正】JVMはポータブルにコードを実行でき、コンパイル実行を行う、非常に人気のある仮想マシンなのだ。

■P.236 4行目
【誤】リアルタイムデータを取り込む方法として広く普及している。メッセージキューおよび
【正】リアルタイムデータを取り込む方法として、メッセージキューおよび

■P.236 11行目
【誤】イベントを受け取ることになる。
【正】イベントを受け取る。

■P.240 下から11行目
【誤】ストレージと処理を決定をせずに、
【正】ストレージと処理を決定せずに、

■P.241 7行目
【誤】もしWebスクレイピングをするのであれば、
【正】もしWebスクレイピングを行うのであれば、

■P.242 下から15行目
【誤】データエンジニアは上流(データ生産者)
【正】データエンジニアは上流(データ生成者)

■P.244 下から10行目
【誤】スキーマや上流での変換さらには
【正】スキーマや上流での変換、さらには

■P.245 8行目
【誤】機密性の高いデータの直接取り扱うことを減らすために、
【正】機密性の高いデータを直接扱う機会を削減するために、

■P.247 9行目
【誤】レポートが目に見てわかるように壊れれば、
【正】レポートが明確にわかるような形で壊れれば、

■P.248 6行目
【誤】高いソフトウェア開発が
【正】ソフトウェア開発が

■P.252 3行目
【誤】TCLを用いるて、
【正】TCLを用いて、

■P.257 4行目
【誤】新しい使用する
【正】新たに使用する

■P.270 1行目
【誤】いつかの方法がある
【正】いくつかの方法がある

■P.270 15行目と16行目
【誤】
直接行われることが多かった、その当然の結果、実運用環境のトランザクショナルデータベースの実行を長時間かかるクエリで妨害していた。
【正】
直接行われることが多かった。その結果、実運用環境のトランザクショナルデータベースの実行が、長時間かかるクエリによって妨害されることとなった。

■P.271 3行目
【誤】データは不揮発かつ時系列として変更されない形で保存される。
【正】データは変更されない形で、不揮発かつ時系列として保存される。

■P.271 下から8行目
■P.272 2行目と3行目と7行目と13行目と※10
■P.273 下から3行目
■P.274 3行目と5行目と14行目
■P.276 8行目と11行目と12行目
【誤】Kinball
【正】Kimball

■P.274 1行目
【誤】ディメンジョンデーブル
【正】ディメンジョンテーブル

■P.276 10行目
【誤】ディメンジョンテーブルの
【正】ディメンジョンテーブルを

■P.282 5行目
【誤】SDC Type-2のディメンジョン
【正】SCDタイプ2のディメンジョン

■P.283 下から8行目と7行目
【誤】
オーケストレーションは、下流の変換やデータ提供で使用するためにデータを短命にまたは永続的に保存する中間変換など、多数の個別の操作を組み合わせる。
【正】
オーケストレーションは、多数の個別操作を組み合わせる。例えば、下流での変換やデータ提供のために、データを一時的にもしくは永続的に保存する、中間変換などの操作だ。

■P.285 下から1行目
【誤】ETLとELTデータの違いの詳細については、
【正】ETLとELTの違いについては、

■P.286 7行目
【誤】作業可能な形にさせるからだ。
【正】作業可能な形にするからだ。

■P.288 16行目
【誤】Spark APIで実現でないだろうか?
【正】Spark APIで実現できないだろうか?

■P.288 下から2行目
【誤】更新機能がないといって、
【正】更新機能がないからといって、

■P.290 下から13行目
【誤】使用するデータハウスで
【正】使用するデータウェアハウスで

■P.292 下から8行目
【誤】それぞれをデータフレームに取り込み、
【正】それぞれデータフレームに取り込み、

■P.294 下から4行目
【誤】クエリ結果を全体を表示する。
【正】クエリ結果全体を表示する。

■P.298 下から10行目
【誤】微妙違いがあるので、
【正】微妙な違いがあるので、

■P.300 下から2行目
【誤】どちらを使うべきかだろうか?
【正】どちらを使うべきだろうか?

■P.301 下から6行目
【誤】彼らのシステム与える影響を
【正】彼らのシステムに与える影響を

■P.302 5行目
【誤】最も効率の良い方法できるだけ
【正】最も効率の良い方法で、できるだけ

■P.305 16行目
【誤】注意を払うおう。
【正】注意を払おう。

■P.310 下から11行目
【誤】本章ではそれ達成するための
【正】本章ではそれを達成するための

■P.314 7行目
【誤】忠実な再現されている
【正】忠実に再現されている

■P.314 下から14行目
【誤】MLモデルに対してデータ提供する際には
【正】MLモデルに対してデータを提供する際には

■P.316 21行目
【誤】テクノロジとにているが、
【正】テクノロジと類似しているが、

■P.316 下から3行目
【誤】将来のもの含めて
【正】将来のものも含めて

■P.318 下から5行目
【誤】機械学習されたビジョンツールを使えば、
【正】機械学習に基づくビジョンツールを使えば、

■P.322 9行目
【誤】いかに示す
【正】以下に示す

■P.323 4行目
【誤】データベースからのデータを
【正】データベースからデータを

■P.326 2行目
【誤】存在する場合がある.
【正】存在する場合がある。

■P.326 下から1行目
【誤】持っていること確認しなければならない。
【正】持っていることを確認しなければならない。

■P.328 4行目
【誤】厳密はな役割分担は、
【正】厳密な役割分担は、

■P.329 9行目
【誤】入札額計算モデルのエラーがあり、
【正】入札額計算モデルにエラーがあり、

■P.330 下から12行目
【誤】データ提供ステージはは
【正】データ提供ステージは

■P.335 下から11行目
【誤】アナリクスデータベースの次に来るもの
【正】アナリティクスデータベースの次に来るもの

■P.339 8行目
【誤】細心の注意と配慮を持って
【正】細心の注意と配慮をもって

■P.343 16行目
【誤】すべてのデバイスをデバイス管理する。
【正】すべてのデバイスを管理する。

■P.344 14行目
【誤】「人間的」な
【正】「人的」な

■P.344 下から12行目
【誤】データ転送中には
【正】データ転送中は

■P.344 下から2行目
【誤】すべてが暗号化されているようにしよう
【正】すべてを暗号化しよう。

■P.345 下から14行目
【誤】指定された時間だけ待って
【正】指定された時間が過ぎたら

■P.346 16行目
【誤】ほとんどの組織に取って
【正】ほとんどの組織にとって

■P.346 下から9行目
【誤】高レベルのデータエンジニアリングについてであり、
【正】高レベルのデータエンジニアリングについて書かれているので、

■P.346 下から8行目
【誤】ツールをつなぎ合わせたものである。
【正】ツールをつなぎ合わせるだけだ。

■P.349 下から9行目
【誤】データエンジニアリングの発生と
【正】データエンジニアリングの誕生と

■P.351 2行目
【誤】各企業に個別の問題に
【正】各企業に固有の問題に

■P.351 下から9行目
【誤】一握りのデータ相互運用可能な標準を中心に
【正】一握りの相互運用可能なデータ標準を中心に

■P.352 下から5行目
【誤】システム間の相互運用性とシンプル性を
【正】システム間の相互運用性と簡潔性を

■P.352 下から4行目
【誤】期待している。
【正】期待してる。

■P.353 5行目
【誤】幸いなことに、これは我々の言う
【正】幸いなことに、我々の言う

■P.353 20行目
【誤】データエンジニアリングライフサイクルを行うシステムの設計と
【正】データエンジニアリングライフサイクルを実現するシステムの設計と

■P.354 下から9行目
【誤】検索結果を見つけたりできるが、
【正】検索結果を得たりできるが、

■P.356 下から15行目
【誤】新しいデータモデリングには
【正】新しいデータモデリングは

■P.357 下から4行目
【誤】いくつかの候補はすでに候補に挙がっている。
【正】いくつかの候補はすでに挙がっている。

■P.357 下から2行目
【誤】まったく新しいデータと対話するための
【正】まったく新しい、データと対話するための

■P.358 下から16行目
【誤】このプロセスを通じることで、
【正】このプロセスによって、

■P.358 下から10行目
【誤】作成する人々によってだけでなくそれを
【正】作成する人々によってだけでなく、それを

■P.358 下から7行目
【誤】リアルタイムテクノロジを利用できる応用を見つけよう。
【正】リアルタイムテクノロジを利用できるアプリケーションを見つけよう。

■P.359 8-10行目
【誤】
CSVからParquetにシリアライズフォーマットを切り替えるだけ100倍以上の性能向上が得られたケースもある。CSVからParquetにシリアライズ方法を切り替えるだけ100倍以上の性能向上が得られたケースもある。
【正】
CSVからParquetにシリアライズフォーマットを切り替えるだけで100倍以上の性能向上が得られたケースもある。

■P.361 20行目
【誤】スキーマ情報を組み込まれており、
【正】スキーマ情報が組み込まれており、

■P.362 下から2行目
【誤】カラム型データベースの性能でのアナリティクスクエリを可能にする。
【正】カラム型データベースの性能でアナリティクスクエリを可能にする。

■P.363 13行目
【誤】すべてのデータベースには、下敷きになるストレージエンジンが存在する。
【正】すべてのデータベースには、基盤となるストレージエンジンが存在する。

■P.365 下から2行目
【誤】顧客に対して見せる
【正】顧客に対して提示する

■P.367 下から6行目
【誤】クラウドリージョン内やVPCとを直接統合する
【正】クラウドリージョンもしくはVPCとを直接統合する

■P.368 4行目
【誤】Cloudflareのなどの
【正】Cloudflareなどの

■P.368 下から6行目
【誤】勝ち取ったのか?
【正】勝ち取ったのだろうか?

目次

まえがき

Ⅰ部 データエンジニアリングの基礎と構成要素

1章 データエンジニアリング概説
    1.1 データエンジニアリングとは何か
        1.1.1 データエンジニアリングの定義
        1.1.2 データエンジニアリングライフサイクル
        1.1.3 データエンジニアの発展
        1.1.4 データエンジニアリングとデータサイエンス
    1.2 データエンジニアリングのスキルと活動
        1.2.1 データ成熟度とデータエンジニア
        1.2.2 データエンジニアに求められる背景知識とスキル
        1.2.3 ビジネス上の責務
        1.2.4 技術的責務
        1.2.5 データエンジニアの役割のスペクトラム:タイプAからタイプBまで
    1.3 組織内でのデータエンジニアリング
        1.3.1 内向きデータエンジニアと外向きデータエンジニア
        1.3.2 データエンジニアと他の技術職
        1.3.3 データエンジニアとビジネスリーダーシップ
    1.4 結論
    1.5 参考資料

2章 データエンジニアリングライフサイクル
    2.1 データエンジニアリングライフサイクルとは何か?
        2.1.1 データライフサイクルとデータエンジニアリングライフサイクル
        2.1.2 生成:ソースシステム
        2.1.3 保存(ストレージ)
        2.1.4 取り込み
        2.1.5 変換
        2.1.6 データの提供
    2.2 データエンジニアリングにおける主要な底流
        2.2.1 セキュリティ
        2.2.2 データ管理
        2.2.3 DataOps
        2.2.4 データアーキテクチャ
        2.2.5 オーケストレーション
        2.2.6 ソフトウェアエンジニアリング
    2.3 結論
    2.4 参考資料

3章 適切なデータアーキテクチャの設計
    3.1 データアーキテクチャとは何か?
        3.1.1 エンタープライズアーキテクチャとは何か?
        3.1.2 データアーキテクチャの定義
        3.1.3 「良い」データアーキテクチャ
    3.2 良いデータアーキテクチャの原則
        原則1:共通コンポーネントを賢く選択する
        原則2:障害に備える
        原則3:スケーラビリティ設計
        原則4:アーキテクチャはリーダーシップだ
        原則5:常に設計し続ける
        原則6:疎結合システムを構築する
        原則7:可逆な決定をする
        原則8:セキュリティを優先する
        原則9:FinOpsを活用する
    3.3 主要なアーキテクチャの概念
        3.3.1 ドメインとサービス
        3.3.2 分散システム、スケーラビリティ、障害に備えた設計
        3.3.3 密結合と疎結合:ティア、モノリス、マイクロサービス
        3.3.4 ユーザアクセス:シングルテナントとマルチテナント
        3.3.5 イベント駆動アーキテクチャ
        3.3.6 ブラウンフィールドプロジェクトとグリーンフィールドプロジェクト
    3.4 データアーキテクチャの例と種類
        3.4.1 データウェアハウス
        3.4.2 データレイク
        3.4.3 次世代データレイクとデータプラットフォームの収斂
        3.4.4 モダンデータスタック
        3.4.5 Lambdaアーキテクチャ
        3.4.6 Kappaアーキテクチャ
        3.4.7 Dataflowモデル、バッチ、ストリームの統合
        3.4.8 IoTのためのアーキテクチャ
        3.4.9 データメッシュ
        3.4.10 その他のデータアーキテクチャ
    3.5 データアーキテクチャの設計にかかわるのは誰か
    3.6 結論
    3.7 参考資料

4章 データエンジニアリングライフサイクルにおけるテクノロジの選択
    4.1 チームのサイズと容量
    4.2 市場投入までのスピード
    4.3 相互運用性
    4.4 コスト最適化とビジネス価値
        4.4.1 総所有コスト(TCO)
        4.4.2 所有の総機会費用
        4.4.3 FinOps
    4.5 現在vs.未来:不変テクノロジvs.一過性テクノロジ
        4.5.1 アドバイス
    4.6 設置場所
        4.6.1 オンプレミス
        4.6.2 クラウド
        4.6.3 ハイブリッドクラウド
        4.6.4 マルチクラウド
        4.6.5 非中央集権型計算:ブロックチェーンとエッジ
        4.6.6 アドバイス
        4.6.7 クラウドからオンプレミスへの本国回帰
    4.7 構築vs.購入
        4.7.1 オープンソースソフトウェア
        4.7.2 プロプライエタリなウォールドガーデン
        4.7.3 アドバイス
    4.8 モノリスvs.モジュール
        4.8.1 モノリス
        4.8.2 モジュール性
        4.8.3 分散モノリスパターン
        4.8.4 アドバイス
    4.9 サーバレスvs.サーバ
        4.9.1 サーバレス
        4.9.2 コンテナ
        4.9.3 サーバとサーバレスの評価方法
        4.9.4 アドバイス
    4.10 最適化、性能、ベンチマーク戦争
        4.10.1 1990年代の「ビッグデータ」
        4.10.2 無意味なコスト比較
        4.10.3 非対称な最適化
        4.10.4 購入者責任
    4.11 底流とテクノロジ選択への影響
        4.11.1 データ管理
        4.11.2 DataOps
        4.11.3 データ管理
        4.11.4 オーケストレーションの例:Airflow
        4.11.5 ソフトウェアエンジニアリング
    4.12 結論
    4.13 参考資料

Ⅱ部 データエンジニアリングライフサイクルの詳細

5章 ソースシステムにおけるデータ生成
    5.1 データソース:データはどのように生成されるのか?
    5.2 ソースシステム:主要な概念
        5.2.1 ファイルと非構造化データ
        5.2.2 API
        5.2.3 アプリケーションデータベース(OLTPシステム)
        5.2.4 OLAP:オンラインアナリティクス処理システム
        5.2.5 変更データキャプチャ
        5.2.6 ログ
        5.2.7 データベースログ
        5.2.8 CRUD
        5.2.9 インサートオンリー
        5.2.10 メッセージとストリーム
        5.2.11 時間と時刻の種類
    5.3 ソースシステムの実践的な詳細
        5.3.1 データベース
        5.3.2 API
        5.3.3 データ共有
        5.3.4 サードパーティデータソース
        5.3.5 メッセージキューとイベントストリーミングパイプライン
    5.4 一緒に仕事する人
    5.5 底流とそのソースシステムへの影響
        5.5.1 セキュリティ
        5.5.2 データ管理
        5.5.3 DataOps
        5.5.4 データアーキテクチャ
        5.5.5 オーケストレーション
        5.5.6 ソフトウェアエンジニアリング
    5.6 結論
    5.7 参考資料

6章 ストレージへの保存
    6.1 データストレージの原材料
        6.1.1 磁気ディスクドライブ
        6.1.2 SSD(ソリッドステートドライブ)
        6.1.3 RAM(ランダムアクセスメモリ)
        6.1.4 ネットワークとCPU
        6.1.5 シリアライズ
        6.1.6 圧縮
        6.1.7 キャッシュ
    6.2 データストレージシステム
        6.2.1 単体サーバvs.分散ストレージ
        6.2.2 結果整合性と強い一貫性
        6.2.3 ファイルストレージ
        6.2.4 ブロックストレージ
        6.2.5 オブジェクトストレージ
        6.2.6 キャッシュとメモリベースのストレージシステム
        6.2.7 HDFS(Hadoop分散ファイルシステム)
        6.2.8 ストリーミングストレージ
        6.2.9 インデックス、パーティション分割、クラスタリング
    6.3 データエンジニアリングにおけるストレージ抽象
        6.3.1 データウェアハウス
        6.3.2 データレイク
        6.3.3 データレイクハウス
        6.3.4 データプラットフォーム
        6.3.5 ストリーム・トゥ・バッチストレージアーキテクチャ
    6.4 ストレージの要点とトレンド
        6.4.1 データカタログ
        6.4.2 データ共有
        6.4.3 スキーマ
        6.4.4 コンピュートとストレージの分離
        6.4.5 データストレージのライフサイクルとデータ保持
        6.4.6 シングルテナントvs.マルチテナント
    6.5 一緒に仕事する人
    6.6 底流
        6.6.1 セキュリティ
        6.6.2 データ管理
        6.6.3 DataOps
        6.6.4 データアーキテクチャ
        6.6.5 オーケストレーション
        6.6.6 ソフトウェアエンジニアリング
    6.7 結論
    6.8 参考資料

7章 データ取り込み
    7.1 データ取り込みとは
    7.2 取り込みフェーズにおけるエンジニアリング上の重要な検討事項
        7.2.1 区切りありデータvs.区切りなしデータ
        7.2.2 頻度
        7.2.3 同期vs.非同期
        7.2.4 シリアライズとデシリアライズ
        7.2.5 スループットとスケーラビリティ
        7.2.6 信頼性と耐久性
        7.2.7 ペイロード
        7.2.8 プッシュvs.プルvs.ポーリング
    7.3 バッチ取り込みに関する検討事項
        7.3.1 スナップショットまたは差分抽出
        7.3.2 ファイルのエクスポートと取り込み
        7.3.3 ETL vs. ELT
        7.3.4 挿入、更新とバッチサイズ
        7.3.5 データの移行
    7.4 メッセージ取り込みとストリーム取り込みの検討事項
        7.4.1 スキーマ進化
        7.4.2 遅延到着データ
        7.4.3 順序と多重配送
        7.4.4 リプレイ
        7.4.5 TTL(Time to Live)
        7.4.6 メッセージサイズ
        7.4.7 エラー処理とデッドレターキュー
        7.4.8 消費者によるプルとプッシュ
        7.4.9 場所
    7.5 データ取り込みの方法
        7.5.1 直接データベース接続
        7.5.2 CDC:変更データキャプチャ
        7.5.3 API
        7.5.4  メッセージキューおよびイベントストリーミングプラットフォーム
        7.5.5 マネージドデータコネクタ
        7.5.6 オブジェクトストレージを用いたデータの移動
        7.5.7 EDI
        7.5.8 データベースとファイルのエクスポート
        7.5.9 一般的なファイルフォーマットに関する現実的な問題
        7.5.10 シェル
        7.5.11 SSH
        7.5.12 SFTPとSCP
        7.5.13 Webhook
        7.5.14 Webインタフェース
        7.5.15 Webスクレイピング
        7.5.16 データ移行のための転送アプライアンス
        7.5.17 データ共有
    7.6 一緒に仕事する人
        7.6.1 上流の利害関係者
        7.6.2 下流の利害関係者
    7.7 底流
        7.7.1 セキュリティ
        7.7.2 データ管理
        7.7.3 DataOps
        7.7.4 オーケストレーション
        7.7.5 ソフトウェアエンジニアリング
    7.8 結論
    7.9 参考資料

8章 クエリ、データモデリング、変換
    8.1 クエリ
        8.1.1 クエリとは何か?
        8.1.2 クエリのライフサイクル
        8.1.3 クエリオプティマイザ
        8.1.4 クエリ性能の向上
        8.1.5 ストリームデータに対するクエリ
    8.2 データモデリング
        8.2.1 データモデルとは何か?
        8.2.2 概念データモデル、論理データモデル、物理データモデル
        8.2.3 正規化
        8.2.4 バッチアナリティクスデータのモデリング手法
        8.2.5 ストリームデータモデリング
    8.3 変換
        8.3.1 バッチ変換
        8.3.2 マテリアライズドビュー、フェデレーテッドクエリ、データ仮想化
        8.3.3 ストリーミング変換と処理
    8.4 一緒に仕事する人
        8.4.1 上流の利害関係者
        8.4.2 下流の利害関係者
    8.5 底流
        8.5.1 セキュリティ
        8.5.2 データ管理
        8.5.3 DataOps
        8.5.4 データアーキテクチャ
        8.5.5 オーケストレーション
        8.5.6 ソフトウェアエンジニアリング
    8.6 結論
    8.7 参考資料

9章 アナリティクス、機械学習、リバースETL へのデータの提供
    9.1 データ提供に関する一般的な考慮事項
        9.1.1 信頼
        9.1.2 ユースケースは何か? ユーザは誰か?
        9.1.3 データプロダクト
        9.1.4 セルフサービスにするべきか?
        9.1.5 データ定義とロジック
        9.1.6 データメッシュ
    9.2 アナリティクス
        9.2.1 ビジネスアナリティクス
        9.2.2 オペレーショナルアナリティクス
        9.2.3 組み込みアナリティクス
    9.3 機械学習
    9.4 データエンジニアがMLについて知っておくべきこと
    9.5 アナリティクスやMLに対してデータを提供する方法
        9.5.1 ファイル交換
        9.5.2 データベース
        9.5.3 ストリーミングシステム
        9.5.4 クエリフェデレーション
        9.5.5 データ共有
        9.5.6 セマンティックレイヤとメトリクスレイヤ
        9.5.7 ノートブックによるデータの提供
    9.6 リバースETL
    9.7 一緒に仕事する人
    9.8 底流
        9.8.1 セキュリティ
        9.8.2 データ管理
        9.8.3 DataOps
        9.8.4 データアーキテクチャ
        9.8.5 オーケストレーション
        9.8.6 ソフトウェアエンジニアリング
    9.9 結論
    9.10 参考資料

Ⅲ部 セキュリティとプライバシー、およびデータエンジニアリングの未来

10章 セキュリティとプライバシー
    10.1 人材
        10.1.1 ネガティブ思考の力
        10.1.2 常に心配性でいる
    10.2 プロセス
        10.2.1 劇場型セキュリティvs.習慣としてのセキュリティ
        10.2.2 アクティブセキュリティ
        10.2.3 最小権限の原則
        10.2.4 クラウドでの責任共有
        10.2.5 常にデータのバックアップを取る
        10.2.6 セキュリティポリシーの例
    10.3 テクノロジ
        10.3.1 パッチとシステムアップデート
        10.3.2 暗号化
        10.3.3 ロギング、監視、アラート
        10.3.4 ネットワークアクセス
        10.3.5 低レイヤデータエンジニアリングにおけるセキュリティ
    10.4 結論
    10.5 参考資料

11章 データエンジニアリングの未来
    11.1 データエンジニアリングライフサイクルは消えない
    11.2 複雑さの衰退と使いやすいデータツールの興隆
    11.3 クラウドスケールデータOSと相互運用性の改善
    11.4 「大企業的」データエンジニアリング
    11.5 職種名と担当範囲は変化する
    11.6  モダンデータスタックからの脱却とライブデータスタックへの移行
        11.6.1 ライブデータスタック
        11.6.2  ストリーミングパイプラインとリアルタイムアナリティクスデータベース
        11.6.3 データとアプリケーションの融合
        11.6.4 アプリケーションとML間での緊密なフィードバック
        11.6.5 ダークマターデータとスプレッドシートの興隆?
    11.7 結論

付録A シリアライズと圧縮技術の詳細
    A.1 シリアライズフォーマット
        A.1.1 行ベースのシリアライズ
        A.1.2 カラム型シリアライズ
        A.1.3 ハイブリッドシリアライズ
    A.2 データベースストレージエンジン
    A.3 圧縮:gzip、bzip2、Snappyなど

付録B クラウドのネットワーク
    B.1 クラウドネットワークのトポロジ
        B.1.1 データエグレス料金
        B.1.2 アベイラビリティゾーン
        B.1.3 リージョン
        B.1.4 GCP固有のネットワークとマルチリージョン冗長化
        B.1.5 クラウドへの直接ネットワーク接続
    B.2 CDN
    B.3 データエグレス料金の未来

索 引