はじめに:マルチプロダクト時代のデータ課題
2025年5月、AirbnbはSummer Releaseでアプリを全面刷新し、Experiencesを再起動、新たなServices製品群を発表しました。従来「Homes」に集中していたビジネスが、瞬時に3つの製品軸に拡大したのです。
この変化はデータ組織に根本的な問いを投げかけました。「新しい製品ラインをサポートしつつ、既存の分析サービスに混乱を起こさずにオフラインデータアーキテクチャを進化させるにはどうすればよいか?」
断片的なアプローチはデータサイロ、一貫性のない分析、将来のイノベーションを阻害する技術負債を招くリスクがありました。本記事では、Airbnbデータエンジニアリングチームが選択したフレームワーク、重要な決定、そして実践的な教訓を詳しく解説します。
注記: 本記事はアプリを直接提供するオンラインデータシステムではなく、オフラインデータウェアハウス(分析指向データインフラ) に焦点を当てています。両ドメインは要件と設計思想が根本的に異なるため、別々に扱う必要があります。

核心ジレンマ:分離型 vs 統合型データモデル
最初で最も重要な決定は、新しく拡張された3製品(Homes、Experiences、Services)のオフラインデータをどう構造化するかでした。
2つのアプローチ比較
| 項目 | 分離型(Separate)モデル | 統合型(Monolithic)モデル |
|---|---|---|
| テーブル構成 | 製品ごとに個別テーブルセット | 全製品を1つの統合テーブルに |
| メリット | 各ビジネスに最適化、高いカスタマイズ性 | コード再利用性最大、一貫性保証 |
| デメリット | モデル間ロジック重複発生 | 製品固有属性反映困難、複雑度増加 |
| 適切なケース | 製品固有属性が多いドメイン | 共通属性が支配的なクロスカッティングドメイン |
Airbnbチームは 「どちらか一方のアプローチが絶対的に優れているわけではない」 という結論に至りました。最適な選択はビジネスドメインの性質に大きく依存します。例えば、ゲストデータに完璧なモデルが、決済データには不適切である可能性がありました。
3つの基本原則
チームは一貫性と柔軟性のバランスを取るため、集中型原則+分散型モデリングガイドライン フレームワークを策定しました。
原則1: ハイブリッドモデル禁止 1つのドメインのデータモデルは 完全に分離型 または 完全に統合型 でなければなりません。混在モデルは将来の拡張性を損ない、一部の製品だけが統合テーブルを使うという一貫性のない状況を防ぎます。
原則2: 識別子命名規則統一 モデリング選択に応じて、基本識別子の構造を厳格に区別しました。
- 分離型モデル: 製品別IDを使用(例:
id_experience、id_service) - 統合型モデル: 汎用製品記述子ID(例:
id_product_listing)+製品タイプカラム(dim_product_type)
原則3: 名前空間の明確化
- 製品別コアテーブル → 専用製品名前空間
- 統合クロスカッティングテーブル → グローバル名前空間
- チーム別中間テーブル → チーム専用名前空間
# 例: 分離型モデルの名前空間構造(コメント: 日本語)
# データカタログ例
namespace: "product_homes"
- table: "listings" # Homes専用リスティング
- table: "availability" # 日付ベースの空き状況
namespace: "product_services"
- table: "offerings" # Services専用オファリング(多対1関係)
- table: "availability" # 営業時間ベースの空き状況
namespace: "global"
- table: "messaging_threads" # 全製品を網羅するメッセージング
- table: "payments" # 製品に依存しない決済
この3つの原則は、全チームが従うべき明確な境界を設定し、会社全体の一貫した基盤を確保しました。

モデリングガイドライン:7つの意思決定基準
原則だけでは不十分です。各チームが自身のドメインに適したモデルを選択できるよう、7つの共通考慮事項をガイドラインとして提供しました。
- 共通 vs 固有属性: 製品ライン間で共有属性が多いか?それとも各製品に固有の属性が多いか?
- 将来の拡張性: 4番目、5番目の製品ラインが追加されてもこのモデルは拡張可能か?
- 上流との整合性: オンラインプロダクションデータベースはデータをどう構造化しているか?
- 下流コンシューマー: アナリストやデータサイエンティストはこのオフラインデータをどうクエリするか?
- コード保守性: どのパスがよりクリーンでモジュール化されたコードになるか?
- データボリューム&パフォーマンス: 新しく追加されるデータの規模を効率的に処理できるか?
- ビジネス継続性: 既存の主要指標の正確なレポートを維持しながら、新しいデータを統合できるか?
実践適用パターン
分離型モデルが選択されたドメイン(製品別固有ロジック)
- Listings: Services製品群の「オファリング(Offering)」概念は、既存のHomes/Experiencesと全く異なる多対1関係を持つ
- Availability: Servicesの「営業時間(business hours)」概念は、従来の日付/時間ベースの空き状況と完全に異なるモデルが必要
- Location: Servicesの「サービスエリア(radiusベース)」は、固定位置ベースのHomes/Experiencesと異なる
- Guests: 製品別ユーザージャーニーが完全に異なるため、個別モデリングが必要
統合型モデルが選択されたドメイン(クロスカッティング概念)
- Messaging: 1つのメッセージスレッドが複数製品にまたがる可能性があるため、分離不可
- Payments: 取引、返金、支払いは製品に依存せず処理されるため、統合モデル維持
- Customer Support: 顧客問い合わせが複数製品にまたがるため、統合ビュー必須
インサイト: 最も決定的な質問は 「製品ラインが大部分で共通属性を共有しているか、それとも相当な固有属性を持っているか?」 でした。この1つの質問でほとんどの決定が決まりました。

標準化の現実的な課題と教訓
課題1: 実行可能なインサイト基盤の構築
オフラインデータウェアハウスは真空状態に存在しません。上流のオンラインデータモデルはトランザクション速度と安定性に最適化されており、分析に理想的な構造とはほど遠い場合がほとんどです。
解決策: オフラインデータウェアハウスが 重要な変換層(translation layer) の役割を果たすよう設計しました。データエンジニアと分析エンジニアは、生のプロダクションデータを取得し、標準化された信頼できる真実の源泉(Single Source of Truth)に変換します。
-- 例: 変換層でのID標準化(コメント: 日本語)
-- 生データ: 様々なIDフォーマット
-- 変換後: 統一された識別子体系
CREATE VIEW analytics.unified_listings AS
SELECT
CASE
WHEN product_type = 'Homes' THEN 'HM_' || id
WHEN product_type = 'Experiences' THEN 'EX_' || id
WHEN product_type = 'Services' THEN 'SV_' || id
END AS id_product_listing,
product_type,
name,
location_json -- 統合JSONフィールドで各製品の位置情報に対応
FROM raw_production.listings;
課題2: データ負債の管理
新しい基準は、既存のレガシーテーブルやダッシュボードが基準を満たしていないことを明らかにしました。特に以前のバージョンのExperiencesテーブルは数百の下流コンシューマーを持ち、移行は非常に困難な作業でした。
アプローチ:
- 広範なコミュニケーション
- 二重パイプライン運用による検証
- ビジネス中断を避けるための慎重な廃棄サイクル
日本開発エコシステムでの適用コンテキスト
国内のSI/スタートアップ環境でも同様の課題が発生します。特に 複数のサービスを1つのプラットフォームで運用する場合(例:コマース+デリバリー+O2O)、データモデルの選択はアーキテクチャの方向性を決定づけます。
- 初期スタートアップ: 統合型モデルで開始するのが一般的(迅速なプロトタイピング)
- 成長段階: 製品固有性が高まれば、分離型モデルへの移行を検討
- 注意点: ハイブリッドモデルは短期的には便利に見えますが、長期的にはデータサイロとメンテナンス地獄を招く可能性があります。
この技術の限界または注意点
Airbnbのフレームワークは大規模組織に最適化されています。小規模チーム(5〜10人)では、むしろオーバーエンジニアリングになる可能性があります。また、このフレームワークはオフラインデータウェアハウスに限定されており、リアルタイムデータパイプラインやイベントストリーミングには追加の検討が必要です。
次のステップ学習方向
- データメッシュ(Data Mesh) アーキテクチャ:分散型データ所有権と集中型ガバナンスのバランス
- dbt(Data Build Tool) を活用したデータモデリング自動化
- データカタログ 導入による名前空間管理の自動化
まとめ
Airbnbの事例は 「1つのサイズですべてを満たすことはできない」 というデータモデリングの核心的な教訓を示しています。中央の一貫性とドメイン別の柔軟性のバランスを取るシステムを作り、過去を慎重に解決しながら未来に備えることが重要です。
このフレームワークは、スケーラビリティ、明確性、そして迅速かつ正確なインサイト提供能力において、すでに目に見える成果を上げています。
合わせて読みたい記事