リアルタイムデータの処理と分析 (K-4) 2026年

担当教員

TA

  • 北野 尚樹 (M1)

実施学期・受入人数・教室

  • 春学期ABC 水3・4限 と 金曜5・6限

成績評価

  • 課題1:5%、課題2:10%、課題3:10%、課題4:15%、課題5:15%、課題6:45%

  • 全課題の提出するのは必須になります。一つの課題でも未提出場合は、成績はDになります。

実験概要

SNS、センサー、株式、スマートフォンなどのIoTデバイスから、リアルタイムデータと呼ばれる大量のリアルなデータストリームが溢れています。主な目的は、リアルタイム データを処理および分析する方法を学ぶことです:

  • リアルタイム処理モデルを理解
  • ストリーム処理アーキテクチャ(クライアント・サーバー)を構築
  • リアルタイム データを分割するためのスライディング ウィンドウ操作を実装
  • ウィンドウ内のデータに対する基本的な集計操作をリアルタイムで実装
  • リアルタイムデータの処理結果を可視化
  • 代表的なアルゴリズムを理解
講義は段階的に知識を習得できるように行われます。Java、JavaScript、HTML に関する基本的な知識があれば、実験に問題はありません。他の好みのプログラミング言語を使用しても大丈夫です。ただ、サポートは Java、Scala、Python、JavaScript/HTML に限定されます。
実験概要.

主な学習内容

  • 第1回:ガイダンス・基礎学習

  • 第2回:課題1

  • Java プログラムや他のプログラミング言語を使用してタイムスタンプ データを生成し、stock_data.txtに保存する。レコード数は10,000です。各値はカンマで区切ります。各レコードは異なる行にする。500 ミリ秒ごとに 1 レコードにする。open,high,low,closeは下部のそれぞれの値段です。基本的に、openとcloseはlowより大きい、highより小さいです。株式は、stockA、stockB、...、stockZ からのものです。例えば:
    •  stock,open,high,low,close,timestamp
    •  株F,493.40,550.50,491.20,499.60,12:00:00
    •  株Q,342.30,402.90,321.00,338.10,12:00:01
    •  株I,464.10,521.40,429.40,445.40,12:00:02

  • 第3-4回:課題2・課題1の締め切りと確認

  • データストリームのClient/Server アーキテクチャを構築してデータ ストリームをシミュレートします。
    Client/Server アーキテクチャ.
    • Client/Server ArchitectureをJavaで使って実装:
      • Server (Server.java): データストリームのシミュレーション
        • Javaプログラムを作成し、stock_data.txtファイルからデータを読み取り、Clientに送る。48 ミリ秒ごとに 1 レコードの送信速度を設定してください。
      • Client (Client.java):
        • Serverに接続して、データ ストリームにアクセスして受け入れるJava プログラムを作成します。
        • 受け取ったデータに新しいtimestamp(システム時間と呼ばれる)を付けて, 5100 ミリ秒ごとに, 株毎のそれぞれopen, high, low, closeの値の中から最大値と最小値を計算してから、consoleにリアルタイムでprint outします。
      結果を見せれば、他のプログラミング言語でも大丈夫です。
    参考資料

  • 第5-7回:課題3・課題2の締め切りと確認

  • Client側(Client.java)がServer側(Server.java)から受けったデータに以下の演算を実装:
    • Sliding Window 演算(Count windowとTime windowの両方)
    • Windowにあるデータに基本演算 (平均、最小、最大、Standard deviation: 標準偏差) を使用してスライディング ウィンドウ集計を実装します。具体的にはclose値段を使って、株ごとの平均・最大・Standard deviationを計算して、リアルタイムでconsoleにprint outします。
    • 結果を見せれば、他のプログラミング言語でも大丈夫です。
    • 参考資料:Sliding window aggregation
  • 第8-10回:課題4・課題3の締め切りと確認

  • Webアプリ作成: HTML と Javascript を使用して、問題 3 の結果を視覚化します。
    • HTMLとJavascriptはあくまでデータを表示する機能のみを有し,aggregation等の計算はで行わないこと.この計算は基本的に課題3までで作成したプログラムを使用すること.
    • ブラウザではWindowにあるデータのテーブルと,aggregationの結果のグラフの両方を1つの画面に表示すること.
    結果を見せれば、他のプログラミング言語でも大丈夫です。
    Webアプリでの視覚化.
    実行する方法: WebSocketsを使って、Java と Javascript/HTML は通信できます。例えば、Javaはserverにして、JavaScriptは clientにします。他のやり方でも大丈夫です。

  • 第11-13回: ストリーム処理フレームワーク Apache Flinkの基礎学習・課題4の締め切りと確認・課題5

    • 日程:5月27日水3・4限、5月29日金5・6限、6月3日水3・4限、6月5日金5・6限、6月10日水3・4限
    • 場所:オンライン or 計算科学研究センター 会議室C
    ここまで実装したClient.javaの代わりにApache Flinkで実装します。Apache Flinkで実装するプログラムは課題1-4と同じようにServer.javaと連携また視覚化します。
    Webアプリでの視覚化.

  • 第14-27回:課題6

    • 日程:6月12日金5・6限、6月17日水3・4限、6月19日金5・6限、6月24日水3・4限、6月26日金5・6限、7月3日金5・6限、7月8日水3・4限、7月10日金5・6限、7月15日水3・4限、7月17日金5・6限、7月22日水3・4限、7月24日金5・6限、7月29日水3・4限
    • 場所:オンライン or 計算科学研究センター 会議室C
    テーマは自分で決めるか図:課題6の株分析を実装することです。
    1. 自由:テーマを自分で決める。 これまでに学習した知識を使用して、リアルタイム データを分析します。興味のあるトピックを選択し、処理や分析を求めたアプリケーションの開発をします。公開されたデータセットを探し、データ ストリームをシミュレートするには、必要に応じて新しいタイムスタンプを追加してください。必須条件は以下のすべての言及が含まれます:
      • Sliding window(time window)を使います
      • Apache Flinkを使用するかどうかは自由です。
      • Client/Server Architectureのように実装します。基本的に主に3つのコンポーネントがある:(1)データストリームソース、(2)データストリーム処理・分析システム(全ての計算・分析を行う)、と(3)分析結果をリアルタイムで可視化するWebアプリケーションです。
    2. 図:課題6の株分析を実装する
      • データセットについて
        • StockPrice.Java: 株数:3000、値:制限された範囲内(自由に設定)のランダムな値(例えば100ms毎に全ての株値更新)、株ID:1, 2,..., 3000、株名:データセットに参考
        • Transaction.Java: 例えば、100ms毎に、6000取引を行う。取引毎に:(株主ID、株ID、買・売数)、株主ID:制限された範囲内(1-5194)のランダム、株ID:制限された範囲内(1-3000)のランダム、買・売数:ランダム。データセットに参考
      • 100ms毎に取引と株値段の更新を行います。
      • 更新した後にTransaction.javaとStockPrice.javaからそれぞれ取引更新と株値段の更新をStockProcessor.javaに送信します。
      • StockProcessor.javaで株IDを使って、取引と株値段を統合します。必要応じて、株主メタデータと株メタデータから情報を取得します。
      • 可視化:図のように実装することです。
      • 締め切り:
        • 1: 6月18日水3・4限
        • 2: 6月25日水3・4限
        • 3: 7月4日金5・6限
        • 4: 7月11日金5・6限
        • 5: 7月25日金5・6限
    課題6
  • 第28回:成果発表会・最終レポート作成

  • 課題6でアプリケーション開発の成果について発表会を行います。