「ビッグデータを支える技術」を読んだ感想（前編）と前職の思い出

# 「[増補改訂]ビッグデータを支える技術 ——ラップトップ1台で学ぶデータ基盤のしくみ」を読んだ感想

こんにちは！最近、[「増補改訂 ビッグデータを支える技術 ——ラップトップ1台で学ぶデータ基盤のしくみ」](https://www.amazon.co.jp/%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82-%E3%83%93%E3%83%83%E3%82%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-%E2%80%94%E2%80%94%E3%83%A9%E3%83%83%E3%83%97%E3%83%88%E3%83%83%E3%83%971%E5%8F%B0%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%83%BC%E3%82%BF%E5%9F%BA%E7%9B%A4%E3%81%AE%E3%81%97%E3%81%8F%E3%81%BF-PRESS-plus/dp/4297119528)を読んだので、その感想をシェアしますね。この本はビッグデータの基礎から実践までをカバーしていて、難しかったですが体系的に学べるものでした。結構重ためな本だったの２回に分けて記載しようと思います。

## 第１章：ビッグデータの基礎知識

### ビッグデータと機械学習の違い
ビッグデータと機械学習ってよく一緒にされがちだけど、実は別物らしい。ビッグデータは大量のデータを扱う技術で、機械学習はそのデータを使って色々と予測したり分析する技術なんです。

### データオーケストレーションって？
データオーケストレーションって聞きなれない言葉だけど、要するにデータ処理を自動化することらしいです。これを使うと、データの流れがスムーズになって効率的に処理できるんです。

### 分散ストレージと分散データ処理
ビッグデータを扱うには、データを分散して保存したり並行して処理する技術が必要なんです。これが分散ストレージと分散データ処理ですね。

### データを加工する流れ
- **データソース**: データの出発点
- **データマート**: 特定の目的に合わせて整理されたデータ
- **データレイク**: いろんな形式のデータをそのまま保存する場所

こんな感じでデータを加工していって、最後にデータを可視化するステップに進みます。

## 第２章：ビッグデータの探索

### データの可視化
データを可視化する時に基本となるのがクロス集計。これを使うと、データの関係性がはっきりしてきます。

### データベースの遅延を小さくする方法
データレイク、データマート、可視化ツールという３階層に分けてデータベースの遅延を小さくします。また、データの圧縮や分散処理が高速化に役立ちます。

### 行志向データベースって？
行志向データベースは、データを行ごとに扱うので、データの追加や読み取りが簡単です。

### 列志向データベースって？
行志向データベースとは対照的に、列志向データベースはデータを列ごとに保存します。これにより、特定の列に対するクエリが非常に高速になります。例えば、大量のデータの中から特定の項目を集計する場合、列志向データベースでは必要な列だけを読み込むので、処理が効率的に行われます。データウェアハウスや分析系のシステムでよく使われる手法です。

### BIツール
BIツールを使うと、長期間のデータの推移を可視化したり、色々な条件でデータを集計できるダッシュボードを作れます。これがあると、データをどう見たいかによってデータマートを作り、そこからダッシュボードを派生させるのが便利です。

### データマートの作り方
多次元モデルとOLAPキューブを使うと、効率的にデータを可視化できます。多次元モデルは、データを複数の次元で分析できるようにする方法で、OLAPキューブはその多次元モデルを実現するためのデータ構造です。

## 第３章：ビッグデータの分散処理

### 構造化データと非構造化データ
ビッグデータは構造化データだけじゃなくて、非構造化データ（スキーマがちゃんと定義されていないデータ）も含まれます。非構造化データも分散システムで加工することで、SQLで集計できるようになります。

### 分散システムとは？
分散システムっていうのは、大量のデータを効率よく処理するための技術なんですよ。代表的なのがHadoopやSparkです。Hadoopは、データを複数のサーバーに分散して保存し、並行して処理するためのフレームワークです。一方、SparkはHadoopよりも高速でデータを処理することができる分散処理システムです。どちらも、データを分散して保存・処理することで、大量のデータを効率よく扱えるようにしてくれます。

### データマートを作る流れ
データマートを作るためのステップも詳しく紹介されていました。基本的には以下の流れです：

1. **データソースからデータを収集**: まず、様々なデータソースからデータを収集します。これにはデータベース、ログファイル、外部APIなどが含まれます。
2. **データをクリーニング**: 次に、収集したデータをクリーニングして、重複や不正なデータを取り除きます。
3. **データを変換**: クリーニングされたデータを、分析しやすい形式に変換します。これには、データの正規化や集計などが含まれます。
4. **ファクトテーブルとディメンジョンテーブルの作成**: 分析用の基盤となるテーブルを作成します。ファクトテーブルには、数値データや測定値が含まれ、ディメンジョンテーブルには、分析のための属性情報が含まれます。
5. **データマートにデータをロード**: 最後に、変換されたデータをデータマートにロードします。データマートは特定の分析目的に特化したデータベースで、迅速なクエリ処理をサポートします。

## まとめ

この本を読んで、ビッグデータの基礎を学べました。ビッグデータと機械学習の違いや、データオーケストレーション、分散システムの重要性など、多くのことを学びました。これからもこの知識を活かして、データ分析やビジネスに役立てていきたいです。


# 前職でのデータ加工の思い出
前職でデータを扱った時のことを思い出します。退職される方から引き継ぎで、「とあるデータを加工して該当部署に配信する」という業務がありました。退職される方は「元々のデータはここで、あとは⚪︎⚪︎さんに加工してもらったからね」とだけ聞いていました。蓋を開けてみると、１年に１回の業務のためか頼みの綱の⚪︎⚪︎さんも「依頼されてたことやってただけだし、あまり覚えてない、ゴメンね」とのこと。わかりやすく絶望です。

しかも、どうでもいい業務ではなく、役員方の肝入りで、会社として非常に重要な業務でした。
必要なデータはお客様ごとのとあるパラメータの登録状況のデータが２種、お客様の属性情報①（人格コード）、お客様の属性情報②（財務状況の格付）、お客様の属性情報③（預金状況）、お客様の属性情報④（融資情報）、部署の情報などが含まれていて、初心者が行うにはかなり多かったです。その中から条件に合うものを選び、４種類の表にして配信します。配信したデータを元に各渉外担当者がお客様に交渉し、結果を報告してもらうところまでがゴールです。

データを扱う業務をあまりしてこなかった私にとって、この引き継ぎはかなり難易度が高かったです。

一番困ったのは、扱うデータの種類が多いことでもなく、数が多すぎてエクセルが重たいことでもなく、<b>「ほとんどの各データがどこから来たかわからない」</b>ことと<b>「データを加工した履歴が全くわからない」</b>ということでした。何せ出来上がりのエクセルシートしか残されていなかったのです。とりあえずそれっぽい去年の情報を集めて、出来上がりシートと付け合わせしながら元データを割り出すことから始めました（似ているけどちょっと違うデータが多すぎてめっちゃ大変でした）。まる10日くらい充ててなんとか作った覚えがあります。

この経験を通して、データを扱う上での課題は多くの人が直面するものであるとわかりました。今は相談できる生成AIもあるし、もっと効率化されていることを祈るばかりです。これも今勉強中のデータブリックスとか使えば解決したんだろうかと思うと脱力しますね！