はじめまして。stable株式会社 代表の宮﨑一輝(@ikki_mz)です。
stable株式会社という会社は、データエンジニアリングを専門領域として、企業のデータ活用・データマネジメントに関するあらゆるご支援をしている会社です。今回「#も読」への寄稿をさせていただけるということで、データエンジニアリングの専門家という立場から、データエンジニアリング関連の本や記事を紹介できればと思っています。
第1回となるこの記事では『Data Engineering Design Patterns』という本について紹介します。最近、弊社の輪読会で読んでいたもので、非常に勉強になることが多かったのでシェアしたいと思います。
世の中には、データエンジニアリングについて体系的に学べる書籍はまだそれほど多くありません。そんな中でこの本は、データエンジニアリングの仕事における課題と、それに対するソリューションを網羅的かつ体系的に整理した一冊なので、データエンジニアリングを体系的に学びたい人には非常におすすめできる本です。
デザインパターンとは何か
この本のタイトルにもなっている「デザインパターン」という言葉に馴染みがない方もいるかもしれません。少し説明したいと思います。
デザインパターンとは、一言で言えば「よくある問題に対する典型的な解決方法」のことです。「こういう時はこうする」という型をあらかじめ整理しておくことで、何か問題が起きた時に、問題解決をしやすくするというものです。本書は、『Data Engineering Design Patterns』ということで、データエンジニアリングに関するデザインパターンが50個近く紹介されています。
本書の構成は、ブログサービスを運営する企業のデータエンジニアという設定で話が進みます。各パターンは、「上司からこういう指示を受けたが、こんな課題があって困っている」というシナリオから始まり、その後に解決策が提示される構成になっています。これにより、課題と対策をセットで具体的に学ぶことができ、非常に理解しやすいです。
この本をおすすめしたい人
この本は、特に以下のような方々におすすめです。
1. 自身のスキルや経験の幅に不安を感じるデータエンジニア
実務でデータエンジニアリングを担当している方の中には、社内の具体的な課題の解決を通じてデータエンジニアとしてのスキルを獲得していったという人も多いと思います。そんな人の中には、すでに導入されているツールの使い方、実装したコード…などについては詳しいものの、「データエンジニアとして体系的なスキルが身についているか」と不安に思う方も多いのではないでしょうか。
私自身も、昔はBigQueryしか使ったことがなかったり、dbtはわかるけれどデータ取り込みはあまり経験がなかったりという時期がありました。データエンジニアリングは業務領域が広く、やるべきことも多いため、1社の実務経験だけではすべての領域を網羅するのは難しいこともよくあります。いわゆる「雰囲気」でデータエンジニアの仕事をしていると感じている方や、自身の経験の幅を広げたいと考えている方には特におすすめです。
2. データエンジニアリングを教える立場の人
現在データエンジニアとして活躍している方の多くは、実務を通じて目の前の課題解決を繰り返すうちに、気づいたらその職種になっていた、というケースが多いように思えます。そのため、いざ人に教えるとなると、自社の実務については教えられても、データエンジニアとしてのスキルを体系的に、あるいは網羅的に指導するのは難しいと感じることがあるのではないでしょうか。
実際、弊社でも未経験者にデータエンジニアリングを教える機会がありますが、ツールや機能の使い方は簡単に教えられても、データエンジニアとして持つべき考え方やスキルを伝えるのは難しいと痛感しています。
この本は、具体的な業務よりも一段抽象的なレベルでデータエンジニアという仕事を幅広く捉えることができるため、教育の際の体系的な指針として非常に役立つと感じました。
本書で語られる9つのトピック
本書でどのような内容が語られているのかを知っていただくために、目次で語られている9つのトピックをざっくりと紹介します。下図は、9つのトピックと、そこで語られている「デザインパターン」を一覧にしたものです。

1. データインジェスチョン
データの取り込みに関する部分です。増分更新でロードする方法や、CDC(Change Data Capture)などについても紹介されています。
2. エラーマネジメント
データエンジニアリングでは、データが常に想定通りに入ってくることはまずありません。エラーが発生したデータをどのように区別するか、そしてどのように修正するかなどについて解説されています。
3. 冪等性(Idempotency)
データ処理を何回実行しても同じ結果が得られるという性質は、データエンジニアリングにおける重要な要件です。冪等なデータ処理の作り方について解説されています。
4. データ加工
メタデータの付与、集計(GROUP BY)、ソート、JOINなど、データに情報を付加し価値を高めるための基本的な手法が解説されています。
5. データフロー
オーケストレーションに関するテーマです。データパイプラインを構成するジョブ/タスクをどのような粒度で分割するか、処理を並列化する際のメリット・デメリットなど、パイプラインの組み方について書かれています。
6. データセキュリティ
権限管理や、GDPRなどの法令遵守に伴うデータ削除、さらには暗号化、匿名化、疑似匿名化といったトピックが解説されています。
7. データストレージ
パーティショニングや、パーティションごとのメタデータを利用したプルーニング(不要なデータの読み飛ばし)、正規化・非正規化、そしてオープンテーブルフォーマットについても触れられています。
8. データクオリティ
データの品質に関するテーマです。入力・出力データを監査して異常を検知する方法や、テーブルスキーマの変更(カラムの追加・削除)への対応、監視(オブザーバビリティ)について解説されています。
9. データオブザーバビリティ
データそのものの品質を見る前章の「データクオリティ」に対し、こちらはデータパイプライン全体の問題を検出します。処理の遅延、エラー、データの偏り(例:本来100件あるべきデータが50件しかないなど)、データの流れを追跡するリネージの重要性などが語られています。
読んだ感想
体系的かつ抽象的に学べる良さ
繰り返しになりますが、データエンジニアリングの仕事を体系的かつ抽象的なレベルで学べる点が非常に良いと感じました。多くのエンジニアは、現場の「特定範囲の、具体的な」課題解決にあたることで徐々に知識を抽象化し、対応範囲を広げていきます。具体的というのは、例えば特定のツールの使い方や機能に閉じた知識を得ることが多いという意味です。
一方、この本は逆のアプローチを取ります。9つの章でデータエンジニアリング領域を「網羅的に」学ぶことができます。さらに各トピックを特定のツールに依存しない「抽象的な」理論として解説します。これにより、単なるツールの理解ではなく汎用的なデータエンジニアリングの知識をインプットすることができます。
ただし、抽象的な分、一人で読むと難しく感じる部分もあるかもしれません。私のように、輪読会などで仲間と議論しながら読み進めると良いかもしれませんね。
ツールの裏側を知るきっかけになる
普段何気なく使っているツールの機能が、どのような仕組みで実現されているのかを知ることができたのも大きな収穫でした。この本では、すでに我々がツールの機能として何も考えずに使えているような処理についても、詳細に解説をしてくれています。
例えば、ストレージの章でパーティショニングとプルーニングについて解説されているところがあります。私は読みながら、「これはSnowflakeが内部で行っている処理そのものだ」と感じました。
また、オープンテーブルフォーマットの一種であるApache Icebergの仕組みについても、「どういう課題があって」「その解決としてどういうアプローチを取っているのか」という目線で読むことができました。
私たちは普段便利なツールに囲まれており、色んな機能を使っていても、その裏側の仕組みまで詳細に理解しているとは限りません。この本は、そうしたツールの裏側を想像する手助けとなると思います。
おわりに
『Data Engineering Design Patterns』は、データエンジニアリングの仕事を体系的・網羅的に学びたい人にとって、非常に価値のある一冊です。自分のスキルの幅を広げたい方、人に教える立場の方、そしてツールの裏側にある原理を知りたい方に、ぜひ手に取っていただきたいと思います。
今後もデータエンジニアリング領域の記事を書いていこうと思います。普段はXでデータエンジニアリングの情報を発信しているので、興味を持っていただけた方は、ぜひXの方もフォローいただけると幸いです。
.jpg&w=3840&q=75)
