プロセスマイニングのイベントログの作り方

このガイドで学べること

このガイドでは、プロセスマイニングのイベントログ をゼロから作る方法を学びます。必須の3列を押さえ、実例で手順を確認し、Excel と SQL の両方で最初の イベントログ を作成するところまで一緒に進めます。

プロセスマイニングのイベントログとは?

関連: プロセス改善 について学び、システム別のデータテンプレート をご覧ください。あわせて、標準コネクタを使わない理由 もお読みください。シンプルなデータテンプレートを推奨する背景を解説しています。

プロセスマイニングのイベントログは、ビジネスプロセスで起きた出来事を記録するシンプルなデータの表です。システムを流れる各ケースの全ステップを追跡する「日誌」のようなものです。プロセスマイニングソフトウェアはこの日誌を読み取り、実際のプロセスがどう動いているかを可視化します。

イベントログには、各行に次の3つの必須情報が必要です:

意味
ケースID関連するイベントをひとまとめにする一意の識別子Order #1, 2, 3, 45
Timestampイベントが発生した日時2025-01-15 09:30:00
Activity何が起きたか「受注登録」

以上です。この3列だけでプロセスマイニングを始められます。顧客名、受注金額、社員IDといった情報は任意の「属性」で、分析をより豊かにするためのオプションです。

イベントとアクティビティの違いを理解する

先に、よくある混同を整理しておきましょう。

アクティビティは「Order Shipped」や「Payment Received」のような行為の種類。カテゴリやラベルのようなものです。

イベントは、そのアクティビティが特定のケースで実際に起きた出来事。たとえば注文 #1, 2, 3, 45 が1月15日14:30に出荷された、その発生がイベントです。

イベントログにはイベントが並びますが、各イベントにはアクティビティ名が付いています。現場ではこの2つの言葉を混ぜて使うこともありますが、覚えておきたいのは「アクティビティは何を、イベントはいつ・誰に起きたか」です。

例: Pizza Palace の受注システム

手を動かしやすいように、架空のシステムで考えてみましょう。あなたはオンライン注文に対応したローカルのピザ店 Pizza Palace の運営者。顧客は Web サイトで注文し、店内で調理して、ドライバーが配達します。

Pizza Palace には、受注プロセスの各段階を記録するテーブルがいくつかあります。

  • orders - 基本的な注文情報(注文ID、顧客、注文時刻)
  • order_items - 注文内容(ピザ、サイド、ドリンク)
  • kitchen_queue - キッチンへの投入と完了時刻
  • delivery_assignments - ドライバーの割り当てと配達の追跡
  • payments - 決済の処理記録

目標は、注文受付から配達完了までの流れを1つの イベントログ にまとめて見える化することです。

Event の種類: 直接取得と推定

イベントログ を作る際には、大きく2種類の event があります。

直接イベント

直接イベントはシステムに明示的に記録されます。ユーザーのクリックやシステムの自動記録により、タイムスタンプがそのままデータベースに保存されます。

Pizza Palace の例:

  • Order placed(orders テーブルのタイムスタンプ)
  • Payment received(payments テーブルのタイムスタンプ)
  • Delivery completed(delivery_assignments テーブルのタイムスタンプ)

推定イベント(Inferred Events)

推定イベントには固有のタイムスタンプはありませんが、他のデータを手がかりに発生時点を推測できます。

Pizza Palaceの例:

  • “Order Assigned to Driver” にはタイムスタンプがない場合がありますが、delivery_assignments テーブルの created_at から割り当て時刻がわかります
  • “Pizza Ready” は、キッチンのキューのステータスが “completed” に変わった時点から推定できます

大きな違い: 直接イベントは明示的に記録されますが、推定イベントは他のデータを解釈して導きます。どちらもプロセスマイニングで有用です。

Event log の設計

データを抽出する前に、どの event を記録するかを設計しましょう。Pizza Palace では次のアクティビティを追跡します。

  1. 注文受付 - 顧客が注文を送信
  2. 入金完了 - 決済処理が成功
  3. キッチンへ送信 - 調理キューに投入
  4. 調理完了 - キッチンが完了に更新
  5. ドライバー割り当て - 配達担当を割り当て
  6. 配達完了 - 顧客への配達完了

各 event について以下を特定します。

  • どのテーブルにデータがあるか
  • どのフィールドが タイムスタンプ か
  • Case ID は何か(この例では注文ID)

対応関係は次のとおりです。

アクティビティソーステーブルTimestamp フィールドCase ID フィールド
注文受付orderscreated_atid
入金完了paymentspayment_timeorder_id
キッチンへ送信kitchen_queuequeue_entry_timeorder_id
調理完了kitchen_queuecompleted_timeorder_id
ドライバー割り当てdelivery_assignmentsassigned_atorder_id
配達完了delivery_assignmentsdelivered_atorder_id

Case と Event の属性を追加する

Case ID、Timestamp、Activity は必須ですが、属性を加えると分析がぐっと強力になります。属性は、背景情報を与える追加カラムです。

ケース属性

ケース(注文)全体を表す属性で、同じケース内のすべてのイベントで共通です:

  • 顧客名
  • 注文総額
  • 配送先住所
  • 注文点数

イベント属性

イベントごとに固有の属性です:

  • ドライバー名(配送系のイベントのみ)
  • 支払い方法(支払い系のイベントのみ)
  • キッチンステーション(キッチン系のイベントのみ)

コツ: 適用されない属性があっても、全行に同じ列を持たせて構いません。例えば「Order Placed」の行に「Driver Name」列があっても空でOKです。シンプルなフラットなテーブル形式を保てるため、プロセスマイニングツールとの相性が良くなります。

Event log の作り方: シンプルな構造

最終的な イベントログ は、1行が1つの event を表す、単一のテーブルにします。Pizza Palace の イベントログ は次のようになります。

Case IDTimestampActivity顧客注文金額ドライバー支払方法
10012025-01-15 18:30:00注文受付John Smith45.99
10012025-01-15 18:30:15入金完了John Smith45.99クレジットカード
10012025-01-15 18:31:00キッチンへ送信John Smith45.99
10012025-01-15 18:45:00調理完了John Smith45.99
10012025-01-15 18:46:00ドライバー割り当てJohn Smith45.99Maria Garcia
10012025-01-15 19:05:00配達完了John Smith45.99Maria Garcia
10022025-01-15 18:35:00注文受付Jane Doe28.50
10022025-01-15 18:35:20入金完了Jane Doe28.50PayPal

同じ Case 内では、Case 属性(例:顧客、注文金額)が event ごとに繰り返されます。この重複は意図的なもので、後の加工や分析をぐっと楽にします。

方法1: Excel で イベントログ を作る

データをスプレッドシートにエクスポートできるなら、手作業で イベントログ を作成できます。小規模データや学習用途に最適です。

ステップ1:イベントタイプごとに別シートへエクスポート

アクティビティごとにワークシートを1枚作成します。

シート1:Order Placed

Case IDTimestampActivityCustomerOrder Value
10012025-01-15 18:30:00Order PlacedJohn Smith45.99
10022025-01-15 18:35:00Order PlacedJane Doe28.50

シート2:Payment Received

Case IDTimestampActivityCustomerOrder ValuePayment Method
10012025-01-15 18:30:15Payment ReceivedJohn Smith45.99Credit Card
10022025-01-15 18:35:20Payment ReceivedJane Doe28.50PayPal

ステップ2:列を標準化する

すべてのシートで同じ列を同じ順序に揃えます。必要なら空の列を追加します。

シート1:Order Placed(更新)

Case IDTimestampActivityCustomerOrder ValueDriverPayment Method
10012025-01-15 18:30:00Order PlacedJohn Smith45.99

ステップ3:全シートを結合

新しい「イベントログ」シートを作成し、各アクティビティのシートから行を順にすべて貼り付けて1つにまとめます。

ステップ4:Case ID、次にTimestampで並べ替え

全データを選択し、次の順でソートします。

  1. Case ID(昇順)
  2. Timestamp(昇順)

各ケース内で時系列が整い、各注文の流れを追いやすくなります。

ステップ5:CSVにエクスポート

結合したシートをCSVで保存します。ほとんどのプロセスマイニングツールで利用できます。

Excelのコツ:

  • VLOOKUPやXLOOKUPで、注文シートから顧客名などのケース属性を取り込む
  • 日付時刻の形式は一貫させる(YYYY-MM-DD HH:MM:SS が扱いやすい)
  • エクスポート前に重複イベントを削除する

方法2: SQL で イベントログ を作る

大規模データや定期的な抽出には、SQL のほうが効率的で再現性も高いです。ポイントは、UNION ALL を使って複数のクエリ結果を1つの結果セットに結合することです。

UNION ALLを理解する

UNION ALLは、複数のSELECT文の結果を縦に積み重ねて1つの結果セットにします。すべてのSELECTで列数をそろえ、互換性のあるデータ型にしておく必要があります。

完全な SQL サンプル

Pizza Palace のイベントログを作成するための SQL クエリ例です:

-- イベントログ Extraction for Pizza Palace
-- This query combines multiple event types into a single イベントログ
-- Each SELECT block represents one activity type

-- Event 1: Order Placed
-- Source: orders table
-- This captures when customers submit their orders
SELECT 
    o.id AS case_id,                          -- The order ID is our case identifier
    o.created_at AS タイムスタンプ,                -- When the order was placed
    'Order Placed' AS activity,               -- The activity name (hardcoded)
    o.customer_name AS customer,              -- Case attribute: who ordered
    o.total_amount AS order_value,            -- Case attribute: order value
    NULL AS driver,                           -- Not applicable for this event
    NULL AS payment_method                    -- Not applicable for this event
FROM orders o
WHERE o.created_at >= '2025-01-01'            -- Filter to your desired date range

UNION ALL

-- Event 2: Payment Received
-- Source: payments table
-- This captures successful payment processing
SELECT 
    p.order_id AS case_id,
    p.payment_time AS タイムスタンプ,
    'Payment Received' AS activity,
    o.customer_name AS customer,              -- Join to get case attributes
    o.total_amount AS order_value,
    NULL AS driver,
    p.payment_method AS payment_method        -- Event-specific attribute
FROM payments p
JOIN orders o ON p.order_id = o.id            -- Join to get order details
WHERE p.payment_time >= '2025-01-01'
  AND p.status = 'successful'                 -- Only include successful payments

UNION ALL

-- Event 3: Order Sent to Kitchen
-- Source: kitchen_queue table
-- This captures when the kitchen starts working on the order
SELECT 
    k.order_id AS case_id,
    k.queue_entry_time AS タイムスタンプ,
    'Order Sent to Kitchen' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    NULL AS driver,
    NULL AS payment_method
FROM kitchen_queue k
JOIN orders o ON k.order_id = o.id
WHERE k.queue_entry_time >= '2025-01-01'

UNION ALL

-- Event 4: Order Ready
-- Source: kitchen_queue table (different タイムスタンプ field)
-- This is an inferred event based on when the kitchen marked it complete
SELECT 
    k.order_id AS case_id,
    k.completed_time AS タイムスタンプ,            -- Different タイムスタンプ than entry
    'Order Ready' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    NULL AS driver,
    NULL AS payment_method
FROM kitchen_queue k
JOIN orders o ON k.order_id = o.id
WHERE k.completed_time >= '2025-01-01'
  AND k.completed_time IS NOT NULL            -- Only include completed orders

UNION ALL

-- Event 5: Assigned to Driver
-- Source: delivery_assignments table
-- This captures when a driver is assigned to deliver the order
SELECT 
    d.order_id AS case_id,
    d.assigned_at AS タイムスタンプ,
    'Assigned to Driver' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,                  -- Event-specific attribute
    NULL AS payment_method
FROM delivery_assignments d
JOIN orders o ON d.order_id = o.id
WHERE d.assigned_at >= '2025-01-01'

UNION ALL

-- Event 6: Delivery Completed
-- Source: delivery_assignments table (different タイムスタンプ field)
-- This captures when the order was delivered to the customer
SELECT 
    d.order_id AS case_id,
    d.delivered_at AS タイムスタンプ,
    'Delivery Completed' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,
    NULL AS payment_method
FROM delivery_assignments d
JOIN orders o ON d.order_id = o.id
WHERE d.delivered_at >= '2025-01-01'
  AND d.delivered_at IS NOT NULL              -- Only include completed deliveries

-- Final ordering: by case, then by time
-- This makes the イベントログ easy to read and follow
ORDER BY case_id, タイムスタンプ;

このクエリを拡張するには

イベントを追加する手順:

  1. 既存の SELECT ブロックをコピーして雛形にする
  2. テーブル名を変更して参照元を差し替える
  3. タイムスタンプの列を正しいカラムに更新する
  4. アクティビティ名をイベント内容に合わせて変更する
  5. 属性列を必要に応じて調整する
  6. WHERE 条件を加えてデータを適切に絞り込む

例えば「Delivery Attempted」イベントを追加する場合:

UNION ALL

-- Event 7: Delivery Attempted
-- Add this to track failed delivery attempts
SELECT 
    d.order_id AS case_id,
    d.attempt_time AS タイムスタンプ,
    'Delivery Attempted' AS activity,
    o.customer_name AS customer,
    o.total_amount AS order_value,
    d.driver_name AS driver,
    NULL AS payment_method
FROM delivery_attempts d
JOIN orders o ON d.order_id = o.id
WHERE d.attempt_time >= '2025-01-01'

Event log 作成のベストプラクティス

1. まずはシンプルに。複雑さはあとから

まずは必須の3列と、主要なアクティビティだけで十分です。基本の イベントログ を作ってツールに読み込めたら、必要に応じて event や属性を段階的に追加していきましょう。

2. データを検証する

分析に入る前に、イベントログで起こりがちな問題を確認しましょう:

  • タイムスタンプの欠落 - タイムスタンプのないイベントではプロセスマイニングが成り立ちません
  • 重複イベント - 同じイベントが二重に記録されると結果が歪みます
  • 順序の乱れ - 「Order Ready」が「Order Placed」より前にあるのはデータ品質の問題です
  • 孤立イベント - 他のアクティビティに現れないケースIDのイベント

3. 抽出手順を記録する

以下の項目についてメモを残しておきましょう:

  • 使用したテーブルや監査証跡
  • 適用したフィルタ条件
  • 抽出を実行した日時
  • 設定した前提条件や仮定

このドキュメントは、後でイベントログを更新したり、トラブルシューティングを行ったりする際に非常に役立ちます。

4. 命名を一貫させる

アクティビティ名は抽出のたびにブレないように保ちましょう:

  • 「Order Placed」と決めたなら、「Order Created」や「New Order」と混在させない
  • 命名規則を決め、チームで徹底しましょう

5. タイムゾーンをそろえる

複数のシステムや地域からデータを集める場合は、すべてのタイムスタンプを同じタイムゾーンに統一してください。整合性重視なら UTC に統一するのが無難です。

よくあるつまずきと対処法

プロセスマイニングのイベントログ 作成における代表的な課題の図解

課題:タイムスタンプのないイベント

一部のイベントには独自のタイムスタンプがないことがあります。例えば「Order Approved」が boolean のフラグでしか持たれていないケースです。

解決策: 関連するタイムスタンプを探しましょう。たとえば approved_at フィールドがあるか、フラグ変更時の modified_at を使う方法があります。

課題:イベント件数が非常に多い

数百万件規模のイベントがあると、抽出時のクエリが遅くなったり落ちたりすることがあります。

解決策:

  • 期間を絞る日付フィルターを入れる
  • 月次などのバッチに分けて抽出し、あとでファイルを結合する
  • 大規模抽出には専用の ETL ツールの利用も検討する

次のステップ:イベントログをプロセスマイニングツールに読み込む

CSVファイルやデータベースからのエクスポートとしてイベントログを作成できたら、次はそれをプロセスマイニングツールに読み込みます。ほとんどのツールでは、以下の手順で進めます:

  1. ファイルをアップロードするか、抽出データにツールを接続する
  2. 列(Case ID、Timestamp、Activity)のマッピングを行う
  3. 追加の属性を設定する
  4. プロセスマップを生成する

ProcessMind のような最新のプロセスマイニングツールを使えば、このプロセスは非常にシンプルです。イベントログをアップロードするだけで、ツールが自動的にプロセスを可視化。bottleneckやイレギュラーな処理、改善の機会を特定し、コスト削減や業務の最適化を支援します。

まとめ

プロセスマイニング用のイベントログ作成には、特別なツールや高度な技術知識は必要ありません。本質的には、プロセスマイニングのデータを「Case ID」「Timestamp」「Activity」という3つの必須項目を含むテーブル形式に整理するだけです。

小規模なデータセットならExcel、大規模で複雑な抽出ならSQLといった具合に手法は異なりますが、基本原則は共通しています:

  1. 追跡したいイベントを特定する
  2. 各イベントが発生した日時(Timestamp)を確認する
  3. すべてのデータを1つのテーブルに統合する
  4. 分析を深めるためのAttributesを追加する

最も難しいのは技術的な抽出作業ではなく、どのイベントが重要かを判断できるほどにビジネスプロセスを深く理解することです。まずは「注文受付」や「出荷完了」といった分かりやすいイベントから始め、ツールが提示するインサイトに合わせて、徐々に詳細なデータを追加していきましょう。

さらに詳しく知りたい方は、弊社の 継続的プロセス改善ページ  をご覧ください。ここでは、購買管理(P2P) 、受注管理(O2C) 、買掛金管理 といった代表的なプロセスのデータ要件やアクティビティについて詳しく解説しています。SAP、Oracle、Microsoft Dynamicsといった主要システム向けのデータテンプレートも用意しているため、イベントログ作成をスムーズに開始できます。

今すぐ始めましょう

完璧なイベントログができるのを待つ必要はありません。まずは手元にあるデータから始め、作成したプロセスマップから学び、改善を繰り返しましょう。基本的なアクティビティだけで構成されたシンプルなイベントログでも、実際の業務プロセスに関する驚くような発見があるはずです。

関連記事

プロセスマイニングやワークフロー最適化の専門インサイトをメールで受け取る
プロセス分析の始め方:プロセスマイニングで洞察を得る実践ガイド

プロセス分析の始め方:プロセスマイニングで洞察を得る実践ガイド

プロセスマイニングのdashboardを、現場で使える示唆に変える。データの理解、パターン探索、真の改善機会の見つけ方を段階的に学べます。

なぜ市販コネクタを使わないのか:私たちの代替策

なぜ市販コネクタを使わないのか:私たちの代替策

市販のコネクタは簡単なデータ抽出を約束しますが、現場では複雑化・遅延・ベンダーロックインを招きがち。私たちはデータテンプレートでシンプルに始めます。

データ活用で実現するプロセス改善戦略ガイド

データ活用で実現するプロセス改善戦略ガイド

データを活用したビジネスプロセス改善と変革をわかりやすく解説。

Celonis代替プロセスマイニング徹底比較|ProcessMindが賢い選択

Celonis代替プロセスマイニング徹底比較|ProcessMindが賢い選択

2025年版CelonisとProcessMindを比較。最適なプロセスマイニングSaaSと料金・機能を紹介。

30日間でプロセス改善を実現しましょう!

すぐアクセスでき、クレジットカード不要、待ち時間なし。MAP・MINE・simulationが連携し、迅速かつ的確な意思決定を実現します。

全機能を使い、深いインサイトを発見し、初日から業務を効率化。

今すぐ無料トライアルでプロセスインテリジェンスの全機能を利用し、30日以内に本当の改善を実感!