📚

【読書感想文】Google Cloud ではじめる実践データエンジニアリング入門

に公開

読書感想文シリーズの第二弾として、「Google Cloud ではじめる実践データエンジニアリング入門」 について書いていこうと思います。

こちらの書籍は 2021 年 2 月に第一版が出版されました。そこから 3 年の月日が経ち、2024 年の 10 月の最新の Google Cloud サービスをもとにアップデートされた第二版が今年 1 月に出版されました。

読んでみた所感として、Google Cloud の認定資格である Professional Data Engineer 取得に必要な Data Analytics 分野に関する網羅的な知識が得られると感じました。その中でも知識だけではなく、サンプルコードで手を動かしながら各種サービスを学ぶ機会もあるのでその点も良かったです。

また、データ基盤のアーキテクチャの変遷BigQuery のアーキテクチャの Deep Dive などが個人的に一番学びが深かったです。「なぜレイクハウスが登場したのか?」「そもそもレイクハウスとはなんであるのか?」といったわかるようでわからなかった部分や「なぜ BigQuery のパフォーマンスが高いのか?」といったただ BQ を利用するところからさらに一歩二歩踏み込んだ部分についてとても理解が深まりました!

この記事のターゲット

  • Google Cloud でデータエンジニアリングを学びたい方
  • データ基盤の全体像を把握したい方

書籍を読むモチベーション・選んだ経緯

モチベーション

私自身 Google Cloud のファンであり、Google Cloud の知識を深めていきたいと思っています。

普段は Serverless AppModern Architecture の分野の Google Cloud サービスを触ることが多いのですが、近々 Data Analytics 周りの知識が必要になりそうなのでこちらの本で学びなおしたいと思いました。

前職はデータ分析基盤の開発運用に携わっていたこともあり、こちらの本の第一版で勉強していました。最新に追従した第二版でアップデート分を楽しみながら勉強したいとも思っていました。

経緯

こちらの著者の寳野さんからご好意で献本いただきました。元々、第二版が出ることを知っていて読みたいとは思っているところにご連絡をいただきました。

せっかくなので、こちらの書籍の良さを広めたく読書感想文という形で記事を執筆しました。

書籍を読むとこんなことに答えられます

各章からクイズを作ってみました。みなさんはどれくらい答えられるでしょうか?

Q1. データ活用を進める上で、データ基盤が重要である理由であることは何か?

Q2. BigQueryではクエリ実行時の詳細を確認できるどんな機能が提供されているか?

Q3. BigQuery の内部アーキテクチャにおける「分散インメモリシャッフル」の主な役割は何か?

Q4. レイクハウスが登場した経緯としてのデータウェアハウスとデータレイクの主な課題は何か?

Q5. レイクハウスがデータウェアハウスとデータレイクの課題を解決し、統合的なデータ基盤を実現するために備えている主な機能は何か?

Q6. BigQuery 内でデータの処理パイプラインを定義できる機能は何か?

Q7. データ基盤の ETL/ELT 処理において、Dataform が特に適しているとされる主な機能や利点は何か?

Q8. データ基盤におけるワークフロー管理は、データパイプライン内のどのような側面が適切に制御可能となるか?

Q9. Datastream for BigQueryは、特に近年需要が増しているある種別のデータの連携に利用可能だが、データの連携種別とは何であるか?

書籍の構成と中身を少々

1章 データ基盤の概要

イントロダクションでもある 1 章では、データ活用がビジネスで不可欠と中でデータ基盤の重要性が増しているということを従来の課題から解説してくれています。

また、後続の章で詳細な説明があるデータ基盤の各要素について述べられていて、データ基盤の全体像を知ることができます。

Q1 は 1 章の中で学ぶことができます。

データ活用を進める上で、データ基盤が重要である理由であることは何か?

データ基盤は、データサイエンティストやアナリストがが信頼性のあるデータに対して効率的な分析を行うことを可能するため、データ活用において重要であると述べられています。

また、冒頭には「早く、正しく、確実にデータを集める機能に加え、適切な権限管理のもとでデータ基盤が開放されている状態が重要」という記述もあり、データ収集に目が行きがちなところですが、データを扱う人によって適切な権限管理もデータ基盤の重要な役割であると述べられているところが印象的でした。

2章 データウェアハウスの概念と BigQuery の利用方法

Google Cloud でデータ基盤といえば、BigQuery を思い浮かべる人がほとんどだと思います。そんな BigQuery にフォーカスしているのが 2 章です。前半では基本的には利用方法について述べられています。

Q2,Q3 は 2 章の中で学ぶことができます。

BigQueryではクエリ実行時の詳細を確認できるどんな機能が提供されているか?

BigQuery ではクエリの詳細タブで見れるクエリプランの可視化機能が提供されています。どのようにクエリプランが設計されて、コンピュートコストや実行時間がどの程度かかったがわかりやすくなっています。

BigQueryの内部アーキテクチャにおける「分散インメモリシャッフル」の主な役割は何か?

BigQueryの「分散インメモリシャッフル」は、ワーカーと分散ストレージ間をつなぐ高速なネットワーク上に構築され、クエリのステージ間の中間状態を保管します。

これによって、ワーカー間での効率的なデータ交換や障害耐性を可能とし、クエリプランの動的な変更や高可用性の実現に大きく貢献しているようです。


公式ドキュメント:BigQuery ストレージの概要

このように 2 章の後半では、BigQuery の内部アーキテクチャにフォーカスしており、Deep Dive したい人にはうってつけの章となっています。

4章 レイクハウスの構築

4 章ではデータウェアハウスとデータレイクの利点を組み合わせたアーキテクチャであるレイクハウスについてまとめられています。レイクハウスが登場した背景や構成される要素がどのようなサービスで提供されているかなど個人的には特に興味深い章でした!主に扱われるサービスは、BigQueryDataplex です。

Q4,Q5 は 4 章の中で学ぶことができます。

レイクハウスが登場した経緯としてのデータウェアハウスとデータレイクの主な課題は何か?

データウェアハウスとデータレイクを二重管理・運用することで、データパイプラインの複雑化・運用管理コストの増大セキュリティとガバナンスの低下とリスクが挙げられています。

こういった課題や特に近年増加している非構造化データ処理のニーズに伴う影響が大きなっている課題に対応するためにレイクハウスが誕生したようです。

レイクハウスがデータウェアハウスとデータレイクの課題を解決し、統合的なデータ基盤を実現するために備えている主な機能は何か?

ストレージ層への統合的なアクセスレイヤーである BigLakeデータの自動発見や統合メタデータ管理の機能を提供する Dataplex があります。Dataplex の中でも Dataplex Discovery と Dataplex Catalog がそれぞれに相当する機能を提供します。

レイクハウスの構成要素でもあるメタデータ管理はデータ基盤を運用する上で非常に大事な機能と考えています。データ分析を始めるにあたって、どんな特徴を持つデータがどんな名称で格納されているかといった情報はメタデータとして扱われて、分析の足掛かりになるからです。

実際のデータとともにメタデータが充実することは、分析のアジリティを高める重要な要素だと改めて認識することができました。


公式ブログ:BigLake: データレイクとデータ ウェアハウスを複数のクラウド間で統合

閑話休題

書籍を読みつつ、最新情報をキャッチアップする中でぜひ共有したい内容が出てきたので、Q6 は閑話休題として記載しています。

BigQuery 内でデータの処理パイプラインを定義できる機能は何か?

このクイズの回答は、BigQuery pipelines になります。BigQuery Studio からパイプラインを定義可能で SQL で定義したタスクdata preparation のクレジング特化のタスクノートブックでの Python コードによるタスクを設定することができます。

また、先日の Google Cloud Next '25 の発表で、この pipelines にデータエンジニアリングエージェントを組み込むことができるようです。

現在 GA になっているものの 1 つとしては、上記で触れた data preparation という機能の中で Gemini がクレンジング案を提案しくれる感じのようです。

5章 ETL/ELT処理

5 章ではデータウェアハウスと並んで頻出するワードである ETL/ELT 処理についてです。いくつかのサンプルシナリオをもとに実際に実装するならという観点で丁寧に説明されています。主に扱われるサービスは DataformDataflow です。

Q7 は 5 章の中で学ぶことができます。

データ基盤のETL/ELT処理において、Dataform が特に適しているとされる主な機能や利点は何か?

いくつかあると思いますが、例えば 「SQL によるデータ変換ロジックの管理」「統合的な開発・運用・管理」 などが挙げられます。

Dataform では、SQL を拡張した SQLX ファイルを中心にワークフローを定義可能です。これらによって、データ変換ロジックを SQL コードとして明確に管理できます。

Dataform の構成要素として、リポジトリ・開発ワークスペース・リリース構成・ワークフローといったものが挙げられます。これらを利用し、 上記のような SQL ワークフローの開発・テスト・バージョン管理などを統合的に行うことが可能となります。

また、SQL ベースの Dataform に加えて Google Cloud の ETL といえばの Dataflow についても言及されています。

6章 ワークフロー管理とデータ統合

6 章では 5 章で扱った ETL/ELT 処理を複数繋ぎ合わせデータパイプラインを構築したのちに、そのデータパイプラインの制御に必須であるワークフロー管理にフォーカスしています。主に扱われるサービスは Cloud ComposerCloud Data Fusion です。

Q8 は 6 章の中で学ぶことができます。

データ基盤におけるワークフロー管理は、データパイプライン内のどのような側面が適切に制御可能となるか?

ワークフロー管理によって、データパイプライン内の依存関係を含めた処理全体の実行順序やタイミングが適切に制御可能となります。

Google Cloud でのワークフロー管理は、Cloud ComposerWorkflows があります。データエンジニアリング用途では Cloud Composer、Cloud Run jobs など Google Cloud 内のサービスとの連携では Workflows といった利用の棲み分けがあります。これらのサービスから Dataform を実行可能です。

8章 BigQueryへのデータ集約

8 章では BigQuery を中心した Google Cloud の Data Analytics サービスを利用するためのデータ集約方法についてまとめられています。主に扱われるサービスは BigQuery Data Transfer ServiceDatastream です。

Q9 は 8 章の中で学ぶことができます。

Datastream for BigQueryは、特に近年需要が増しているある種別のデータの連携に利用可能だが、データの連携種別とは何であるか?

あるデータベースでの変更を(ニア)リアルタイムで検知して、異なるデータベース間でのデータの同期を取るためのデータ連携方法である CDC(Change Data Capture) です。

CDC はデータソースの変更を(ニア)リアルタイムで同期したい場合に加えて、頻繁なデータ更新がありテーブルの一部だけが更新されるような場合、そしてデータベースへの負荷を軽減したい場合などに適しています。

全 11 章の中のほんの一部をご紹介しました。これらの内容に興味がある方は本書籍を読むことをオススメします!

さいごに

書籍の感想文として、自身の所感や書籍内容をクイズ形式でいくつかご紹介しました。

時間はかかったものの、改めてデータ基盤に関する知識と各サービスの操作方法を身につけることができました。また、利用するだけでは気にかけないアーキテクチャの内部の話やデータ基盤としてどうあるべきかという点を学ぶことができたので、書籍のタイトル通りの本だと実感しました。

https://twitter.com/pHaya72

Discussion