Decision Model and Notation Feature Guide
by SparxSystems JapanEnterprise Architect 日本語版
DMN (Decision Model and Notation) 機能ガイド(2022/04/27 最終更新)

DMN (Decision Model and Notation) 機能ガイド

目次
1概要 ..................................................................................................................................32

DMN の概要 ...................................................................................................................... 33Enterprise Architect での DMN モデリング .........................................................................64

3.1

ダイアグラムの作成 ................................................................................................. 6

3.2

デシジョンの作成 .................................................................................................... 7

3.3

ビジネス知識モデルの定義 ...................................................................................... 93.4

要素間を接続する .................................................................................................. 12

シミュレーションの実施 .....................................................................................................144.1

単一のデシジョンに対するシミュレーション....................................................... 144.2

複数のデシジョンに対するシミュレーション....................................................... 174.2.1

アイテム定義の追加 ........................................................................................... 174.2.2

入力データとの結びつけ.................................................................................... 194.2.3

入力データとデシジョンの結びつけ ................................................................. 194.2.4

シミュレーション要素の作成と実行 ................................................................. 205

ソースコードの生成 .......................................................................................................... 236

BPMN との連携 (BPSim) ..................................................................................................25

2
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

1

概要Enterprise Architectでは、DMN (Decision Model and Notation) のモデリングやシミュレーション機能を搭載しています。DMNとは、デシジョン(意思決定)を可視化するための記法で、主に業務上の判断条件やルールを明示し可視化するために利用します。表記として記述しただけではその内容が妥当かどうか判断することは容易ではありませんので、シミュレーションを実行し内容が適切かどうか確認する手段があると有用です。
また、記述した内容を最終的に業務システムやアプリケーションとして実装する場合には、記述したルールをそのままソースコードとして生成できると、実装を効率化することができます。
本ドキュメントでは、このDMNに関連する機能について説明します。なお、このドキュメントで利用しているEnterprise Architectは、バージョン 16.0です。DMNに関連する機能を利用するためには、ユニファイド版あるいはアルティメット版が必要です。
(DMNの作図のみであればコーポレート版でも利用可能ですが、シミュレーションでの内容確認やソースコード生成などが利用できませんので、効果は限定的です。)

2

DMNの概要DMN(Decision Model and Notation)は、UML などと同様に OMG (Object Management Group) によって定義された記法です。デシジョン(意思決定)を可視化するための利用することができます。
DMN で定義された要素を利用したモデルの一例は次の通りです。なお、以下のそれぞれの用語は弊社独自の訳であり、一般的な翻訳とは異なるかもしれません。

デシジョン

ビジネス知識モデル

知識ソース

入力データ

«ItemDefinition»
アイテム定義「デシジョン」は、何らかの意思決定を示します。その意思決定をするためには、何らかのルールや根拠などがあるかと思います。例えば、「過去にキャンペーンに申し込んでいる人は、今回はキャンペーンの対象外にする」の3
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイドようなルールです。こうしたルールや根拠などが「ビジネス知識モデル」です。デシジョンとビジネス知識モデルは、N 対 N の関係になります。つまり、1 つのビジネス知識モデルが複数のデシジョンで参照・利用されたり、1 つのデシジョンで、複数のビジネス知識モデルで定義された内容を元に意思決定したりすることがあります。一般的には、ビジネス知識モデルは複数のデシジョンで共通に使われる「共通ライブラリ」のような位置づけです。
(再利用されない局所的なルールであれば、デシジョン自体にルールを定義することもできます。)「知識ソース」は、デシジョンやビジネス知識モデルと結びつく実際の情報源です。例えば、ビジネス知識モデルの内容が根拠としている法律文書や定義した組織、あるいはビジネス知識モデルの内容を把握している担当者などが該当します。
「入力データ」は、デシジョン要素に対して実際に適用する情報です。単一の値とは限らず、「年齢」「職業」「現在の借入金額」「収入」などの複数の情報の場合もあります。この入力データの「型」となるような情報が「アイテム定義」です。このアイテム定義は、下の画像のようなイメージで階層化されることや値の選択肢をもつことがあります。

これらの要素は複数利用され、階層的になることが多いです。下の図はその一例です。
判定

返済の妥当性判定

判定ルール

詳細調査の返済の妥当性
判断
詳細調査のリスクカテゴリテーブル

詳細調査のリスクカテゴリの算出

リスク管理者

信用情報
返済金額の算出ルール

必要な毎月の返済金額計算
申込者リスクスコア判定

希望条件
申込者リスクスコアモデル
申込者データ4
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

この図では、最上位のデシジョン「判定」に至るまでに、多くの他のデシジョンでの意思決定結果を反映しています。各デシジョンでは、その意思決定の根拠となる情報がビジネス知識モデルとして結びついています。
デシジョンやビジネス知識モデルでは、その意思決定のルールをいくつかの形式で定義できます。一般的に思い浮かぶのは、次のような「デシジョンテーブル」形式ではないでしょうか。

このような表形式以外にも、数式や条件式で定義する場合もあります。以下はその例です。

DMN を利用することで、このようなデシジョンやビジネス知識モデルを定義し、その利用関係・判断根拠や前提条件などの関係を可視化することができます。また、複数の要素に分割し関係を定義することで、意思決定に必要な情報・条件を明確に識別することができます。結果的に、意思決定に必要な情報の過不足を防ぐこともできま
5
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

す。

3Enterprise ArchitectでのDMNモデリング

それでは、実際に Enterprise Architect を利用して DMN のモデリングを行う方法を紹介します。
ここでは、何か具体的な対象がある方が説明しやすいので、以下のようなルールをモデリングすることにします。
消費税について、通常は税率 10%だが、食品に限り、8%の税率が適用される。ただし、購入した店で食べる場合には、食品でも 10%の税率が適用される。また、食品と食品以外が組み合わされている商品の場合には、食品以外の原価が 33%を越える場合には食品ではないと見なし、10%の税率が適用される。

3.1 ダイアグラムの作成
まず、Enterprise Architect を起動し、新しいプロジェクトを作成してください。基本的な操作方法はこのドキュメントでは説明を省略しますので、ドキュメント「ゼロから始める Enterprise Architect」などをご覧ください。
https://www.sparxsystems.jp/products/EA/ea_zero.htm
プロジェクトを開いたら、画面右上の「パースペクティブ」ボタンを押し、「要求」→「意思決定モデリング」を選択することで、UML など今回利用しない表記方法を隠すことができます。

パースペクティブを選択すると、自動的に「モデルテンプレート」タブが開きます。このテンプレートには、いくつかの DMN のサンプルモデルが含まれています。このドキュメントでは利用しませんので、タブを閉じてください。
左側にある「モデルブラウザ」ウィンドウにあるツールバーから、パッケージの作成ボタンを押すこと
6
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

で、パッケージを追加できます。
「パッケージの追加」画面が表示されたら、「名前」を入力し、「ダイアグラムの追加」を選択して OK ボタンを押してください。

続いて「ダイアグラムの追加」画面が開きますので、唯一の選択肢である「DMN1.2」「意思決定要求図(DRD)」を選択して OK ボタンを押してください。これで空のダイアグラム(図)を作成できました。
「モデルブラウザ」ウィンドウに追加されたダイアグラムをダブルクリックして開いてください。

3.2 デシジョンの作成
次に、最終的な意思決定となるデシジョン要素を配置します。今回は、最上位のデシジョンを「消費税率の決定」とし、ルールを分解する形で定義することにします。
ツールボックスの「デシジョン」をドラッグ&ドロップでダイアグラムに配置します。ドロップした際に種類を指定するメニューが出ますので、今回は「デシジョンテーブル」を選択します。(ビルドによっては選択肢が英語で表示されます。)

7
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

名前は「Decision1」となりますので、通常は Enterprise Architect の画面の右側にある「プロパティ」サブウィンドウを利用して名前を「消費税率の決定」とします。
(名前の変更は、ショートカットキー「F2」も利用できます。)

消費税率の決定

作成した要素をダブルクリックすると、「DMN 表現」ウィンドウが開きます。

「Input 1」や「Output 1」と記載されている灰色の見出し部分は、2 回クリックすると文字列を編集できます。それぞれ「食品かどうか」「消費税率」と入力します。入力値は 1 つしかないので、「Input2」の列は、右クリックして「入力列の削除」を実行してください。以下のようになります。

8
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

表のそれぞれのセルは、クリックすると内容を編集できます。以下のように内容を入力します。また、今回は 8%か10%のどちらかになりますので、行は 2 つのみ必要ですので、一番下の行は、行を右クリックして「ルール行の削除」を実行してください。

これで、消費税率のデシジョンを定義できました。なお、デシジョンにはこの例のように直接ルールを定義することもできますし、ビジネス知識モデルにルールを定義してそのルールを参照するようにすることもできます。汎用的なルールはビジネス知識モデルとして定義し、デシジョンから参照するようにすることをお勧めします。

3.3 ビジネス知識モデルの定義
次に、上記のデシジョンで「食品かどうか」の部分を定義します。この定義ではビジネス知識モデルを利用し、デシジョンと結びつける方法を紹介します。
ツールボックスから「ビジネス知識モデル」要素をドラッグ&ドロップで作成してください。先ほどと同様にメニューが表示されますので、今回も「デシジョンテーブル」を選択します。要素の名前を「食品判定ルール」とします。

食品判定ルール

この食品判定ルール要素についてもデシジョンテーブルの内容を記載しますが、ビジネス知識モデルは再利用を想定していますので、入力値についての定義が必要です。DMN 表現ウィンドウにあるツールボックスの、パラメータの定義のためのボタンを押します。

9Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

パラメータの編集画面では、既存の内容については名前の欄(Input 1 や Input 2)は 2 回クリックすることで編集できます。また、「パラメータの追加…」と薄く書かれているセルをクリックすることで、パラメータを追加することもできます。それぞれのパラメータには number や boolean 等の種類を指定する必要があります。

今回は、以下のように設定しました。

設定後に、デシジョンテーブルの列を調整する必要があります。(自動的に変更はされません)
基本的には、先ほどのデシジョンの例と同じく、見出し部分をクリックして編集する必要があります。ただし、見出し部分の編集時に、Ctrl+スペースキー を押すことで、値を手入力することなく定義した内容を選択して挿入することができます。

10
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

入力列を 1 つ増やし、以下のように設定します。
(入力列を増やすには、ツールバーのボタンを押します。)

あとは、それぞれの条件を入力します。入力例は以下の通りです。

なお、今回の例では、各項目の「アイテム定義」を作成していませんので、true・false の値は手入力する必要があります。後述するアイテム定義要素を作成すると、それぞれのセルの入力時にも Ctrl+スペースキー のショートカ
11
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

ットキーが使えるようになります。各セルの「-」(ハイフン 1 つ)は、その項目を判定の対象外とすることを示しています。
また、今回のルールは、上から順番に該当するかどうかをチェックし、最初に条件に該当するルールを採用するという方針で作成しています。このような方針についても指定できます。表の左上の「U」と記載されている箇所を右クリックすると、この方針を指定できますので、「F : First」を選択してください。

これでビジネス知識モデルの定義が完了です。このビジネス知識モデルを利用するデシジョン要素が必要です
ので、デシジョン要素をツールボックスから作成します。ダイアグラムへの配置時に表示されるメニューでは、今回は「呼び出し」を選択してください。

3.4 要素間を接続する
最後に、今まで作成した要素を結びます。今まで作成した要素は、次の 3 つです。

12
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

消費税率の決定

食品かどうか

食品判定ルール

DMN では、要素間を結ぶ接続は「情報要求」「知識要求」「権限要求」の 3 つがあり、それぞれ作成可能な要素の種類が決まっています。Enterprise Architect の「クイックリンク」機能は、この DMN のルールにも対応していますので、以下のように適切な種類が選択肢に表示されます。

また、既存の要素から、新規要素を作成できます。この場合には、接続の向きも適切に設定されます。

このようにして、以下の図を作成しました。これで、対象の商品がある場合に、どのようにして消費税率を計算するかの意思決定の流れを可視化することができました。

13Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

消費税率の決定

食品かどうか

食品判定ルール

対象の商品

この図によって、対象の商品について、食品判定ルールに従って(消費税率の判断基準による観点での)食品かどうかを判断し、その上で消費税率を決定する、という意思決定プロセスが明示できました。

なお、今回は 1 つの「食品判定ルール」というビジネス知識モデルにルールを定義しましたが、内容に複雑度や他のデシジョンとの再利用性の関係によっては、複数のビジネス知識モデル要素にルールの定義を分散させる方がよい場合もあります。今回の内容は、ツールの基本的な機能の紹介であるため、実用性・拡張性などは考慮していませんので、ご注意ください。
(逆をいえば、DMN を利用することで、どのようにビジネス知識モデルを定義しデシジョンと結びつけるか、という設計を可視化可能となり、再利用性や将来の拡張・修正を考慮した検討や議論を視覚的に行うことができる、ということになります。)

4

シミュレーションの実施

第 3 章で説明したように、DMN を利用して意思決定の流れやその根拠(ルール)を可視化できます。また、複数の入力データがある場合には、どのデシジョンでどの入力データを参照しているか、というような関係も可視化できます。
しかし、可視化するだけでは、定義した内容が正しいかどうかの判断は容易ではありません。そのため、実際にはこの章で説明するシミュレーション(試験)機能が重要になります。

4.1 単一のデシジョンに対するシミュレーション

14
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

まずは、前章で作成した「食品判定ルール」の内容が正しいかどうかの確認のために、実際の値を指定してシミュレーションしてみます。
実行するための手順は簡単で、「シミュレーションのためのパラメータ値」タブを開き、それぞれのセルにシミュレーションのための値を入力します。
例えば、店内で食品を食べる場合には、以下のような値になります。
(この例では「食品以外の原価率」の項目は関係ないので、0 としています)

値を設定後、上の画像の赤枠部分のシミュレーション実行ボタンを押すと、以下のように結果を確認できます。(ユニファイド版あるいはアルティメット版ではない場合、赤枠のボタンを押すことはできず、シミュレーション機能は利用できません。)

黄緑色の行が、「採用」となった行です。4 行目の薄い黄緑色の行は条件を満たしていますが、今回は「F」、つまり最初に見つかったルールが採用される条件ですので、4 行目は採用されません。
このようにして、さまざまな値を設定して、どのルールが採用されるのかを確認できます。シミュレーシ
15
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

ョンを終了する場合には、シミュレーションの実行ボタンの右端にある黒三角の領域を押してメニューを表示し、「シミュレーションの停止」を選択してください。

複雑な内容になるほど、シミュレーション機能の有用性は高まります。以下の例は、「C+」、つまり条件を満たす全てのルールの数値を足し合わせる場合の例です。

この画像のように、「C+」の場合には該当するルールに定義されている「リスクスコア」の数値を全て足し合わせます。
「スコア」のピンク色のセルの下に表示されているリスクスコアの合計値「124」が、この条件の場合に算出される値となります。
こうして、定義したビジネス知識モデルについて、内容が正しいかどうかを実際の値を元に検証することができます。

16
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

4.2 複数のデシジョンに対するシミュレーション
次に、第 3 章で作成した以下の内容を検証したいと思います。
消費税率の決定

食品かどうか

食品判定ルール

対象の商品

この例で、「対象の商品」について具体的な値を入力し、最終的に消費税率が 8%なのか 10%なのかを確認します。

4.2.1 アイテム定義の追加
この「対象の商品」の入力データには、「食品かどうか」などのいくつかのパラメータがあります。こうした、複数の値で構成される入力データをシミュレーションする場合には、その値の構成を定義する必要があります。
まず、ツールボックスから「アイテム定義」要素を図にドロップして配置し、名前を「商品」としてください。
«ItemDefinition»
商品

ダブルクリックすると、DMN 表現ウィンドウに、この商品の定義が表示されます。右クリックして「子コンポーネントの追加」を選択してください。

17
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド「New Component」の欄が増えますので、クリックして名前を編集し「食品」としてください。また、そのセルを右クリックして、「型を boolean に設定」を選び、真偽値(true/false)とします。

同様に右クリックして「兄弟コンポーネントの追加」を選択すると他の値を追加できますので、次の画像のように、値と型を指定します。

このようにして、商品がどのような値を持つのか、ということを階層的に定義しました。シミュレーショ
18
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

ン機能を利用する場合および次章のソースコード生成を利用する場合には、アイテム定義要素での型定義が必要です。

4.2.2 入力データとの結びつけ
このようにして、シミュレーションで利用する情報を定義したら、シミュレーションで利用する入力デー
タ「対象の商品」と結びつけます。
「対象の商品」要素をダイアグラム内で選択すると DMN 表現ウィン
ドウの内容が変わりますので、ツールバーにある結びつけのためのボタンを押し、今定義した「商品」のアイテム定義と結びつけます。

すると、以下のように定義の内容が表示され、「値の入力」欄にシミュレーションの値を指定できるようになります。それぞれの「値の入力」欄では、Ctrl+スペースキー のショートカットキーで値を指定入力することもできます。

それぞれ、シミュレーションのための値を入力し保存してください。

4.2.3 入力データとデシジョンの結びつけ
入力データの型と値を指定したら、その入力データを参照するデシジョン「食品かどうか」に対して、入力データの結びつけを行う必要があります。
「食品かどうか」要素をダブルクリックすると、DMN 表現ウィンドウに内容が表示されます。それぞれのセルをクリックして編集状態にした段階で、Ctrl+スペー
スキー のショートカットで、下の画像のようにシミュレーション実行時に参照する値を指定できます。
19
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

このようにして、入力データのそれぞれの値と、ビジネス知識モデルのそれぞれのパラメータをどのように結びつけるかを指定する必要があります。

4.2.4 シミュレーション要素の作成と実行
複合的なシミュレーションを実行するためには、「シミュレーションの設定」要素が必要です。
ツールボックスから「シミュレーションの設定」をダイアグラムにドラッグ&ドロップして配置してください。(要素の名前はシミュレーションには直接関係しませんので、必要に応じて変更してください。)«DMNSimConfiguration»
DMNシミュレーションの設定1

この要素をダブルクリックすると、「DMN シミュレーション」サブウィンドウが開きます。ツールバー
20
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイドにあるドロップダウンリストを開くと、デシジョン要素の名前が表示されますので、「消費税率の決定」を選択します。

ここまでの設定が正しく完了していれば、シミュレーションの実行ボタン(Simulate タブ内のツールバーの左端のボタン)を押すと、以下のように入力した値についての判断結果が表示されます。

DMN シミュレーションウィンドウ内のボタンで、いわゆるステップ実行を行うことができます。シ

ミュレーション結果に至るまでの経過を 1 ステップずつ確認することができます。
(確認中は、DMN 表現ウィンドウでも関係する内容が表示されます。)

21
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

このようにして、シミュレーション機能を利用すると、複雑なデシジョンの組み合わせで何らかの意思決定が行われる場合に、その経過も参照することができます。
以下の例のように、複雑になればなるほど、シミュレーション機能の効果は高まります。

22
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

なお、このドキュメントでは触れませんが、入力データ要素には「データセット」として複数の値を保持し、切り替えて実行することができます。今回の例では、例えば「食品以外の原価率」が異なる複数のデータセットを定義し、切り替えて結果を見ることができます。DMN モデルは試行錯誤しながら内容を変えることが多いので、データセットを定義しておけば、モデルの変更後にシミュレーションする場合に、値をその都度入力する必要がなくなります。

5

ソースコードの生成

シミュレーション機能で定義した内容が適切であることが確認できたら、その内容からソースコードを生成することもできます。自動生成することにより、定義した内容をソースコードとして作成する手間が省けるほか、手作業による誤りの混入を防ぐこともできます。
ソースコードを生成するためには、DMN シミュレーションウィンドウの Generate Module タブを利用します。

23
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

上の画像のように「モジュールパス」と「パッケージ/名前」を指定し、生成ボタンを押します。次の画像のように、ソースコードが自動生成されます。

なお、上の例のように、DMN モデルの内容がそのままソースコードとして生成されますので、要素名などに日本語を利用している場合には、そのまま日本語で出力されることになります。生成される内容は、Enterprise Architect の「コード生成テンプレート」の機能を利用してカスタマイズすることができます。

24
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

6

BPMNとの連携 (BPSim)

最後に、作成した DMN モデルのもう 1 つの活用法として、BPMN との連携について紹介します。
Enterprise Architect には、BPMN モデルのシミュレーション機能(BPSim)を搭載しています。この機能は、BPMN で表現される業務などの処理について、例えば「店にレジは何台必要か」「お客様の平均待ち時間はどのくらいになるか」「その場合の人件費はいくらになるか」などを検証するために利用することができます。
この BPMN の処理(アクティビティ)において、DMN で定義した内容を参照することができます。例えば、以下のような BPMN モデルで、アクティビティ「消費税率の計算」で、前の章までで作成したデシジョンを利用することができます。

消費税率が8%消費税率の計算

消費税率が10%高いね、と言われても落ち込まないようにする
対象の商品

手順の概要は以下の通りです。詳細はこのドキュメントでは割愛します。
1.

BPMN モデルを作成する

2.

BPMN シミュレーション要素を作成し、DMN シミュレーション要素と依存の関係で結ぶ(これにより、他の設定で Ctrl+スペースキーのショートカットで、DMN で定義された内容を呼び出すことができるようになります。また、BPSim の実行時に、自動的に DMN で定義された内容からソースコードを生成し、ビルドします。)«BPSim»BPSimConfig«DMNSimConfiguration»
サンプルモデル::DMNSimConfig

25
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド

3.

種類が「ビジネスルール」のアクティビティに対して、DMN モデルからコード生成する Java のメソッドを呼び出すようにプロパティを追加する

4.

そのデシジョンで利用するデータオブジェクトに対して、DMN モデルのシミュレーションで利用した値をコピーする

5.

その他、BPMN シミュレーションのための設定を行い、BPSim を実行する

これらの設定を行うことで、以下の例のように DMN モデルで定義された内容を利用し、BPMN シミュレーションを実行することができます。

26
Copyright (c) 2019-2022 Sparx Systems Japan

DMN (Decision Model and Notation) 機能ガイド○ 改版履歴2019/09/25 初版
2020/02/05 Enterprise Architect 15.1のリリースに伴い。画像を更新。
2022/04/27 Enterprise Architect 16.0のリリースに伴い。画像を更新。

27
Copyright (c) 2019-2022 Sparx Systems Japan