Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Loop: life DWH, logical and physical models. Part 1

2025年09月20日に「Dev.to」が公開したITニュース「Loop: life DWH, logical and physical models. Part 1」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

個人プロジェクト「Loop」で、Garminや時間記録アプリのデータからデータウェアハウスを構築する過程を紹介。自分の活動傾向分析のため、データソースの特定から、アンカー・属性・リンクを用いた論理モデル、そして物理ERDの作成までを詳しく解説した。

ITニュース解説

このニュース記事は、システムエンジニアが個人のデータ(時間追跡や健康データ)を収集し、分析するためのデータウェアハウスをゼロから構築する「Loop」というプロジェクトについて解説している。プロジェクトの目的は、新しい技術を学ぶために具体的な実践の場を設け、リアルなデータを使って知識を深めることだ。

まず、このプロジェクトは自身の日常生活に関する問いに答えることを目指している。例えば、「毎日、週、月でどれくらいの時間を仕事、学習、ゲームに費やしたか」「どれくらいの運動をしたか」「平均的な就寝・起床時間はどうか」といった具体的な疑問にデータで答えることを目標としている。

この目的を達成するために、データエンジニアリングの様々なツールや技術が活用される。生データを保存する場所としてAmazon S3とPostgreSQLというデータベースが使われる。データの形を整え、加工するための処理にはApache Sparkという大規模データ処理フレームワークが用いられ、中間的なデータを一時的に保存するステージング層にはdelta.ioという技術が使われる。一連のデータ処理の流れを自動化し、管理するためのツールとしてDagsterが採用され、最終的に分析結果を視覚的に表示するダッシュボードの構築にはMetabaseというツールが使われる。

プロジェクト名の「Loop」は、特定のデバイス名ではなく、繰り返しデータを収集・分析するループサイクルをイメージしたものだ。将来的には、日々の気分や習慣を追跡するためにGoogleフォームのデータも連携させる構想がある。

データソースとしては主に二つが挙げられる。一つは「EARLY」という時間追跡アプリで、仕事、趣味、学習、ゲームなどの集中した作業時間を記録している。このアプリのAPI(データのやり取りをするための窓口)を使って、フォルダ、アクティビティ、タグ、タイムエントリーといった情報を収集する。もう一つは「Garmin」というスマートウォッチで、睡眠時間やワークアウト(運動)の記録データを得るためにgarminconnectというPythonライブラリが利用される。

これらのデータソースから得られる情報を整理し、データウェアハウスの基盤を設計する段階で、「論理モデル」が構築される。論理モデルとは、まだ具体的なデータベースの形になる前の、データの概念的な設計図のようなものだ。これは「真実の源」として機能し、将来的に新しい機能を追加する際にも、まずこの論理モデルから検討を始める。

論理モデルを構築する際には、以下の3つの主要な要素が定義される。 一つ目は「アンカー(Anchors)」だ。これはデータの中心となる「実体」や「物事」を指し、例えば「タイムフォルダ」「タイムアクティビティ」「ワークアウト」「睡眠」などがこれにあたる。これらは現実世界の独立した概念に対応する。 二つ目は「属性(Attributes)」だ。これは各アンカーが持つ具体的な情報や特徴を指す。例えば、「タイムフォルダ」には「名前」や「説明」といった属性があり、「ワークアウト」には「開始時間」や「終了時間」といった属性がある。それぞれの属性は、データ型(文字列、タイムスタンプなど)も定義される。 三つ目は「リンク(Links)」だ。これはアンカーとアンカーの間の「関係性」を示すものだ。例えば、「タイムフォルダ」は複数の「タイムアクティビティ」を含む(1対多の関係)といった具合に、データ同士のつながりが定義される。

論理モデルが完成したら、それを具体的なデータベースの設計に落とし込んだ「物理モデル」が作成される。物理モデルは、実際にデータベースにテーブルを構築する際の設計図となる。この物理モデルを視覚的に表現するために、「ERD図(実体関連図)」という図が使われる。ERD図は、テーブル(アンカーに対応)とその間の関係(リンクに対応)、そして各テーブルに含まれるカラム(属性に対応)を分かりやすく示すものだ。

このプロジェクトでは、d2という図形記述言語を使ってERD図を作成している。物理モデルの設計では、データベースの整合性を保つための「外部キー(Foreign Keys)」という制約が考慮される。外部キーは、あるテーブルのデータが、関連する別のテーブルのデータに必ず存在するように保証する仕組みだ。しかし、データを大量に読み込む際には、一時的にこの外部キー制約を緩める(解除する)こともある。これは、データのロード処理をより柔軟にし、一部のデータが一時的に存在しない場合でも処理が停止しないようにするためだ。

これまでの段階で、データソースの特定、データの概念的な設計である論理モデルの構築、そしてそれを具体的なデータベースの形に落とし込む物理モデルの設計とERD図の作成が完了している。今後は、実際にデータウェアハウスの階層構造を定義し、生データの取り込み方法について詳しく説明される予定だ。

関連コンテンツ

関連IT用語