データエンジニアリング関連のおすすめ書籍
はじめに
昨今、「データの価値」に注目が集まり、「データを制するものがビジネスを制す」というようなバズワードもみられるようになりました。
私が所属するSIerでもデータ基盤やデータ分析系の案件が増えてきており、今後より大規模で複雑なデータを扱うようなプロジェクトが増えてくると予想されます。
以前よりデータ基盤系のプロジェクトにかかわることが多かったのですが、前述の状況もあり、改めてデータエンジニアリングについてインプットを行いました。
今回は、データエンジニアリングを学ぶにあたって役立った書籍を紹介したいと思います。
※読んだ本、追加でおすすめの本があれば更新します。
おすすめ書籍
データエンジニアリングの基礎 ―データプロジェクトで失敗しないために
その名の通り、データエンジニアリングに関する必須知識が体系的にまとまっている書籍です。
データアーキテクチャ、パイプライン、データモデリングそしてビジネスとの関わりについて一通り記載されています。
非常に学びのある書籍なのですが、基礎という割には初学者には難しい内容があるので、ある程度の知識があった方がより理解が深まると思います。
とはいえデータエンジニアリング分野での良書となるので、データエンジニアリングのプロジェクトに参入するにあたっては読んでいて損はないものだと思います。
データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理
ソフトウェアエンジニアリングの分野でもよく名前の挙がる書籍ですね。
「データ」に関して様々な技術や仕組みが包括的に説明されており、データに関する技術は一通り解説されているのではと思うくらいの網羅性のある書籍です。
データ処理システムの設計原則、パターン、アーキテクチャ等様々な観点でまとめられており、データに関するアプリケーションやシステムを構築するにあたっては必読と言っても過言ではないと思います。
難点としては600ページを超えるボリュームと章によっては参考文献が100を超えてくるので完全に理解しようとするとかなりの時間がかかると思います。
何度も読んで理解を深めたり、実務で触れた技術を深堀する際に利用するのがいいと思います。
ちなみに来年第2版が出るらしいので楽しみですね
大規模データ管理 第2版 ―データ管理と活用のためのモダンなデータアーキテクチャパターン
「データの価値」に着目し、方法論、アーキテクチャやベストプラクティスがAzureでの実例を交えて解説されている書籍です。
特にエンタープライズアーキテクチャのベストプラクティスについて詳細に解説されており、実際のプロジェクトでも課題となるドメイン間でのデータ管理やマスタ管理等についても解説されています。
この書籍を通してデータドメインやエンタープライズアーキテクチャのあるべき姿が理解できるので企業全体のデータ基盤を構築する際に参考になると思います。
あるべき姿として企業内にデータエンジニアやソフトウェアエンジニア、データスチュワードを置くということが述べられているので、SIerとして構築する場合はそのあたり含めたビジネス面や体制をどうするか別観点での検討が必要になると思います。
また、マスタ管理のひとつをとっても実際には様々なベンダにより作成されたシステムが存在したり、システムにより環境が異なる事も多く、マスタ周りの統制に関して様々な検討事項や課題があって、統一管理ができるか、データの伝播が可能か、ガバナンスをどうするか等企業全体のシステムを横断して検討が必要となるので難しい部分が多いと思います。
同様にデータメッシュも難しい部分が多いと考えています。
データメッシュはデータ管理を中央集権型から各ドメインへ分散させ、ドメインチームがデータプロダクトを所有し運用するアプローチとなります。
そのためドメイン駆動設計を前提としたシステムおよび組織が必要となります。
つまり、しっかりと取り組むには組織作りから始める必要があり一筋縄ではいかない事も多いと思います。
ちなみに同じ著者でメダリオンアーキテクチャについての書籍が出るらしいです。
Azure DatabricksとMicrosoft Fabricについても記載があるみたいで楽しみですね。
Apache Spark徹底入門
ビッグデータの処理に使われることの多いApache Sparkの概要からベストプラクティス、パフォーマンス改善まで一通り解説された書籍となります。最適化方法等実際の業務での活用も役立つと思います。
Python(PySpark)とScalaのサンプルコードも記載されており、実際に手を動かしながら学ぶことができます。
前提としてはPythonもしくはScalaである程度のコーディングができることが必要となりますが、構文的には難しくないので環境さえ整えれば問題ないと思います。(環境的にはDatabricksの無料プランを使うのが手っ取り早いかと)
ちなみにApache SparkにおいてPython(PySpark)とScalaのどちらを使うかは論点になることが多いですが、よほど大規模や複雑なデータではなければPySparkを選んだ方が学習コストやライブラリ的な意味で良いのかなと思います。
ちなみにわたしはScalaを使うことが多いです。
クラウドデータレイク ―無限の可能性があるデータを無駄なく活かすアーキテクチャ設計ガイド
クラウド上でデータレイクを扱う際のベストプラクティスについて記載されている書籍。
クラウドデータウェアハウス、モダンデータウェアハウス、データレイクハウス、データメッシュのアーキテクチャの紹介や、Apache Sparkのパフォーマンス、OTFの詳細や使いどころがまとめられています。
さっくり読める内容かつ網羅的にまとめられているので、現時点で知識がなくてもデータレイクについてのイメージをつかむことができます。
逆にある程度知識がある方にとっては少し物足りないかもしれませんが、7章のアーキテクチャに関する意思決定のフレームワークはデータ基盤を構築するにあたり非常に参考になる内容だと思います。
現状評価から定義/設計、実装、リリース(運用)までの各ステップで判断に必要な要素が解説されています。一般的な要素も多いですが、経験を積んだアーキテクトが読んだとしても新たな観点が見つかるのかなと思います。
データレイクを導入するか判断するうえでの指針にもなると思うので、データエンジニアに限らず、データアーキテクトそしてビジネスユーザにもおすすめできるものだと思います。
データマネジメント知識体系ガイド
これまで紹介した各書籍でも引用されるDMBOKの知識ガイドとなります。(プロジェクトマネジメントにおけるPMBOKみたいなものです。)
The DAMA Wheelが有名ですね。
データマネジメントに関する体系書となっており、データからビジネス価値を生み出すにあたって必要な要素がまとめられています。
DP-203 Microsoft Azure でのデータ エンジニアリングコース
こちらは書籍ではありませんが、データエンジニアリングについて体系的に学ぶことができるのでおすすめです。
基礎的な部分からAzure Databricks等のテクノロジー、そしてエンタープライズ全体でデータ管理まで通して学ぶことができます。
ちなみにデータ基盤系案件はAzure基盤での構築も多いのでここで学んでおくと役立つことも多いと思います。
ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ
こちらは直接データエンジニアリングとは関係ありませんが、データエンジニアリングにおいてソフトウェアエンジニアリングの知識は基礎として必須となります。(こちらは後程解説します。)
この書籍はアーキテクチャを考えるための思考から、代表的なアーキテクチャスタイルの紹介やアーキテクトとしてのソフトスキル(対人スキルやチーム運営、キャリアパス等)まで網羅的にまとめられているものとなります。
「データエンジニアリングの基礎」にて近い将来、データエンジニア、アナリスト、ソフトウェアエンジニア、データサイエンティストの境界は限りなく低いものとなると述べられています。
私自身、本職はバックエンドエンジニアとなり、そこからデータエンジニアリングにかかわるようになっています。
そういった将来的な部分を踏まえて職種の範囲にかかわらず本書籍でアーキテクチャを学ぶことは今後のキャリアで有用だと思います。
詳細はこちらの記事でまとめています。
その他おすすめ書籍
未読となりますが、以下もおすすめです
O'Reilly Japanさん翻訳版をぜひ…!
Deciphering Data Architectures: Choosing Between a Modern Data Warehouse, Data Fabric, Data Lakehouse, and Data Mesh
モダンなデータアーキテクチャのData Fabric, Data Lakehouse,Data Meshと主要なものがまとまっているので内容としても今後の参考になると思います。
Data Pipelines Pocket Reference: Moving and Processing Data for Analytics
データ基盤に必要不可欠なパイプライン構築についてまとめられた書籍です。
Streaming Data Mesh: A Model for Optimizing Real-Time Data Services
ストリーミングデータとリアルタイムデータにおけるデータメッシュについてまとめられた書籍
ちなみに所謂ストリーミングデータの処理にはデファクトスタンダードと呼ばれるものがなくトレードオフを加味して選定する必要があります。
わたしはよくApache Spark StreamingやAWSのAmazon Kinesis Data Streamsを使うことが多いです。
Streaming Databases: Unifying Batch and Stream Processing
ストリーミングデータプラットフォームとデータベースについての書籍になります。
OLAPやZero-ETLについても記載されているので部分的にも参考になると思います。
Analytics Engineering with SQL and Dbt: Building Meaningful Data Models at Scale
ELT処理にて使われることの多いdbtについての書籍となります。
日本語で書かれたdbtの技術書はないのでこの本の翻訳版かもしくはどこか出してくれるとうれしい…
データエンジニアとして成長するために
「データエンジニアリングの基礎」にてデータエンジニアリングには底流となるセキュリティ、データマネジメント、DataOps、データアーキテクチャ、オーケストレーション、ソフトウェアエンジニアリングの底流技術の深い理解が重要と解説されています。
「大規模データ管理」や「ソフトウェアアーキテクチャの基礎」でも同様に「データ」以外の上記の部分の理解が必要と記載されています。
今はこれにプラスしてModern Data StackやLive Data Stackと呼ばれるようなクラウドと機械学習の知識も必要となり、継続的に最新の技術を学ぶことが必要となります。
また、技術面はもちろんですが、データアーキテクトとして必要なスキルに下記のようなものが求められます。
- 事業ドメインの知識
- ファシリテーションやリーダーシップ等卓越した対人スキル
- 社内政治スキル
最適なデータ基盤を構築するためにはビジネスを理解し、ビジネス価値をいかに高めるか、そのためにどういったデータが必要かをデータを活用するビジネスユーザと密に連携してプロジェクトを推進していく必要があります。
技術面、ビジネス面、そしてコンセプチュアルスキルをバランスよく磨くことがデータエンジニア、データアーキテクトとしての成長につながります。
おわりに
データエンジニアリングの概念自体は昔からありましたが、近年データがより大規模になったり、リアルタイムデータが必要になり、データを取り巻く環境や技術が急速に進歩しました。
ビジネス価値を高めるために最適なデータを収集する環境を構築するためには、データエンジニア、データアーキテクトは常に最新の技術をキャッチアップする必要があります。
様々な技術には要素技術と呼ばれる基礎的な技術が存在します。
そういった基礎をしっかり身につけることが最新の技術を理解するうえで大きなアドバンテージとなります。
今回紹介した書籍には基礎的な技術が記載されているものも多く、今後データエンジニアリングを推進する上で多くの学びがあると思いますのでぜひ参考にしていただければと思います。
また、今回紹介したもの以外におすすめの書籍やコンテンツがあればコメントいただけると幸いです。
データエンジニアリング関連の記事もいくつか書いているので読んでいただけるとうれしいです!
また、xでもデータエンジニアリングをはじめ、技術的な発信をしていますのでこちらもよろしくお願いします。
Discussion