目次

    ウィンドウとは何か?

    ウィンドウとは「データの流れを、時間や条件で区切って処理する仕組み」です。

    たとえば、1分ごとの売上を集計する場合、1分単位のウィンドウで区切ります。

    Tumbling Window(タンブリングウィンドウ)

    一定時間でデータをきっちり分けて処理するタイプです。

    時間軸 → |----1分----|----1分----|----1分----| [データ①②③] [データ④⑤⑥] [データ⑦⑧⑨]

    実例: 1分ごとの売上を集計

    • 10:00〜10:01 → ウィンドウ①
    • 10:01〜10:02 → ウィンドウ②
    • 10:02〜10:03 → ウィンドウ③

    ポイント

    • ウィンドウ同士は重ならない
    • 固定的でわかりやすい
    • 定期レポートや時間集計に最適

    Sliding Window(スライディングウィンドウ)

    一定間隔でずらしながら集計するタイプです。

    時間軸 → |----5分----| |----5分----| |----5分----| [①②③④⑤] [③④⑤⑥⑦] [⑤⑥⑦⑧⑨]

    実例: 音楽アプリの「直近5分間の再生回数」

    ポイント

    • ウィンドウが重なり合う
    • 最新傾向を常に確認できる
    • トレンド検知や移動平均に最適

    Session Window(セッションウィンドウ)

    ユーザーの行動のまとまりを基準に区切るタイプです。無操作時間(ギャップ)で区切ります。

    時間軸 → [クリック①--クリック②] [クリック③--クリック④] ← セッション1 → ← セッション2 → ※ 30分無操作で新セッション開始

    実例: ECサイトのユーザー行動分析

    • 10:00 商品A閲覧
    • 10:05 商品B閲覧 → 同一セッション
    • 10:40 商品C閲覧 → 35分空いた → 新セッション

    ポイント

    • ウィンドウの長さが動的に変化
    • 「無操作時間」で区切られる
    • ユーザー行動の自然な分析に最適

    時間の3つの基準(Event / Processing / Arrival)

    同じデータでも、「どの時間を基準に扱うか」で結果が変わります。

    Event Time(イベントタイム)

    データが実際に発生した時刻。現実世界のタイムスタンプ。

    データ: { user: A, event_time: "10:00:05", sent: "10:00:10" } → Event Time = 10:00:05
    • 現実時間に忠実な分析
    • 遅延データも処理可能(Watermark利用)

    Processing Time(プロセッシングタイム)

    システムがデータを処理した時刻

    10:00:05 に発生 → ネットワーク遅延 → 10:00:12 に処理 → Processing Time = 10:00:12
    • リアルタイム性が高い
    • ただし遅延や順序のズレが発生しうる

    Arrival Time(アライバルタイム)

    データがストリームシステムに届いた時刻

    10:00:05 にイベント発生 10:00:09 にKafkaへ到着 → Arrival Time = 10:00:09 10:00:12 に処理 → Processing Time = 10:00:12
    • 簡単で実装しやすい
    • ネットワーク遅延の影響を受けやすい

    ウィンドウと時間の関係

    ウィンドウの種類と時間の基準を組み合わせると、目的に応じた柔軟な分析が可能になります。

    • リアルタイム監視: Tumbling Window × Processing Time
    • 正確な履歴分析: Sliding Window × Event Time
    • ユーザー行動分析: Session Window × Event Time

    3つのウィンドウの比較まとめ

    種類 特徴 用途
    Tumbling 固定長、重ならない 時間集計・レポート
    Sliding 固定長、重なる トレンド分析・リアルタイム監視
    Session 可変長、ユーザー行動基準 行動分析・滞在時間解析

    まとめ

    ウィンドウは「時間でデータを切る」仕組みであり、時間の基準(Event / Processing / Arrival)をどれにするかで分析の正確性やリアルタイム性が変わります。

    • Tumbling: 定期集計向け
    • Sliding: トレンド検知向け
    • Session: 行動分析向け
    • Event Time: 正確性重視
    • Processing Time: 即時性重視
    • Arrival Time: 実装簡単
    PREV
    2025.10.09
    初心者でもわかる System Quality Attributes(システム品質特性)
    NEXT
    2025.10.16
    多言語ウェブサイト:i18nとは?