こんにちは。株式会社FLINTERSの瀬田です。データエンジニアやってます。 10周年記念として133日間ブログリレー52日目の投稿です。
本記事は、オライリー社から出版されている『Fundamentals of Data Engineering』を読んでいるなかで、取り急ぎ感想を伝えたいので書いた、という記事です。
※ 執筆時点で、3部構成のうち2部までしか読めていませんので、そこまででの感想です。
書籍情報
本書の日本語での翻訳本は出版されていません。
なので、英語が苦手な方は電子書籍と翻訳ツールの組み合わせをおすすめします。(私もこの方法で読んでいます)
Book description の翻訳は以下です。
データエンジニアリングは過去10年間で急速に発展し、多くのソフトウェアエンジニア、データサイエンティスト、アナリストがこの実践の包括的な見解を求めている。本書では、データエンジニアリングライフサイクルのフレームワークを通して利用可能な最善のテクノロジーを評価することで、組織や顧客のニーズに応えるシステムを計画・構築する方法を学ぶことができる。
どんな本?
2022年に出版された、名前の通りデータエンジニアリングの基礎が書かれた本です。
本書の目的は、データエンジニアリングに関わる特定のツールやテクノロジー、プラットフォームの使い方に関するコンテンツのギャップを埋めることです。
全3部11章(+付録)の構成で
- 1部(1章〜4章): データエンジニアリング概論
- 2部(5章〜8章): データエンジニアリングライフサイクルの各段階を深掘り
- 3部(9章〜11章): セキュリティ、プライバシー、データエンジニアリングの未来
となっています。
書かれていること
データエンジニアリングに関する基本的な概念について書かれています。 特に『データエンジニアリングライフサイクル』を軸に展開されていきます。
データエンジニアリングライフサイクルとは、以下に示す、 元データがエンドユーザー(データサイエンティストなどのデータ利用者)に提供するまでの流れを表しています。
- 外部でのデータ生成(Generation)
- データの取り込み(Ingestion)
- データの変換(Transformation)
- データ提供(Serving data)
尚、2〜4を支えるデータの保存(Storage)も本書ではデータエンジニアライフサイクルに含まれています。
書かれていないこと
特定のツールやテクノロジー、プラットフォームの使い方については触れません。
本書には、以下のように書かれています。
優れた書籍がこのような(特定のツールやテクノロジー、プラットフォームの使い方)観点からデータエンジニアリング技術にアプローチしているが、これらの書籍の賞味期限は短い。
また、MLOpsなどの近接領域に関しても触れません。 「データパイプラインができていないとこれらも崩れるよ」程度の記載です。
感想
思うままに感想を書いていきます。
目先の新しいツールやバズワードを冷静に見れるようになる(気がする)
現在、データエンジニアリングの領域は、新しいツールやバズワードが多いと思います。 その中で、本書はただ『こういう技術・ツールがありますよ』ではなく、
- 現在の技術に至るまでの歴史
- 設計や技術選定のポイント
が書かれているので、
- その技術・ツールがどんな経緯で出てきたのか
- それが有効なケースは何か
を考えながら冷静に見れるようになると思っています。
ひとまず順を追って読んだほうが良い
1部で全体像 、 2・3部で詳細に入っていく構成です。 さらに2部はデータエンジニアリングライフサイクルの流れに沿って章が並んでいるので、 つまみ読みよりは順番に読んだほうがスッと入ってくると思います。
1部は必読
1部は以下のような内容です。 ここだけでかなり広い範囲の『基本のき』は学べると思います。
1章 データエンジニアリング超概要
- データエンジニアリングの定義
- データエンジニアの仕事内容
- 企業におけるデータ成熟度のタイプの説明
- データエンジニアに必要なスキル(ハード、ソフト)
- データエンジニアの2タイプ(タイプA, B)
- どんなロールの人と関わるのか
2章 データエンジニアリングライフサイクル
- データエンジニアリングライフサイクルとは
- データエンジニアリングライフサイクルを横断して重要なUndercurrents
- セキュリティ、データマネジメント、データアーキテクチャなど
3章 優れたデータアーキテクチャの設計
- 優れたデータアーキテクチャの原則
- よく使われるアーキテクチャの例と種類
- 誰が設計に関わるのか
4章 データエンジニアリングライフサイクルにおける技術選定
- 選定のポイント(一部抜粋)
- チームの規模と能力
- 市場投入までのスピード
- 相互運用性
- コストの最適化とビジネス価値
- 構築と購入
- モノリスかモジュールか
- サーバーレス対サーバー
データ生成部分に関して1章分割いているのが良い
本書では、データエンジニアはこの部分を『他人事にしがち』と言及しています。 しかし、データパイプラインにゴミが入ってこないように、いわゆる『Garbage in, garbage out』を防ぐために ソースシステムで作成されるデータの性質を理解することは大事だなと思います。
ストリーミングに関する記述が多め
2部のデータライフサイクルにおいて、ストリーミング(CDCも含む)の技術に関する記載が多く見られます。 これから流れがくるのかもしれないですね。 ただ、現時点でバッチ収集で済むケースも多いという記述もあるので、推しているわけではなさそうです。
おわりに
だいぶふわっとした内容になってしまいましたが、きっかけになれば幸いです。 今後、機会があれば各章をまとめたりできればと思っています。
ちなみにですが、本書は弊社の自己啓発援助制度を利用し、オライリー学習プラットフォームというサブスクリプションサービスを契約して読みました。 こういう援助があるのは、ありがたいですね。