SimDiffのインストール、Simulinkモデルの比較とマージ、チームでの変更のレビュー、バージョン管理からのSimDiffの実行方法です。

SimDiff Team、Professional、Basic、Review向けです。まず概要をご覧下さい。その後は、このマニュアルを開いたまま参照してください。

1 はじめに

紹介

SimDiffは、Simulinkモデルのチーム開発における先導的な差分及びマージ解決手段です。

SimDiffのマージは、他のユーザーにより実行された変更を1つのSimulinkに統合する最も容易かつ確実な手段です。SimDiffには、マージモードと比較モードの2種類のオペレーションモードがあり、ピアレビューファイルを読み込むこともできます。また、Basic、Professional、Team、Reviewの4種類のエディションがあります。下の表には、各エディションの特徴がまとめられています。

SimDiff Team SimDiff Professional SimDiff Basic SimDiff Review
差分
レポート
マージ
ピアレビュー
サブシステム
スナップショット

Review はピアレビューファイルを読み込むことができます。Team と Professional では、ファイルを生成することもできます。

まず初めに、SimDiff デモをご覧いただくことを強くお勧めいたします。その後は、SimDiffの操作中に本マニュアルをクイックリファレンスとしてご活用ください。

ENSOFTサポートの要請

ご質問等ございましたら、support@ensoftcorp.comまでご連絡下さい。SimDiffに関します一般的なご質問の際には、メールにご質問内容を記入して下さい。

SimDiff作動中にエラーが発生した場合には、SimDiffのログをご送信下さい。
ログを開くには、 Windows の [スタート] メニューから SimDiff ログ を選択し、ご希望のロケーションに保存してから、メールに添付して下さい。

用語

当説明書とSimDiffのユーザーインターフェイスにおいて、モデルに関する下記の用語が使用されます:

  • 左モデル: 通常は、自分が変更したモデル、又はローカルコピー
  • 右モデル: 通常は、他のユーザーにより変更されたモデル、又はリポジトリーのコピー
  • ベースモデル: 左と右モデルの最新の共通祖先。3点間比較やマージに使用される。
  • 出力モデル: マージ結果のモデル。出力モデルが指定されていない場合、マージは左モデルにおいて実行される。
  • ターゲットモデル: マージの実行先のモデル、つまり左又は出力モデルを指すために便宜上使用される用語。

2 インストールと設定

インストール

ENSOFTからのメールまたはSimDiffのインストールCDに含まれるSimDiffインストーラーを起動し、画面の指示に従ってインストールを行ってください。

SimDiffを初めて起動する際、ライセンスキーまたはライセンスサーバー情報の入力を求められます。ライセンスキーの入手方法に関する案内メールが届いているかご確認ください。届いていない場合は、sales@ensoftcorp.com までご連絡ください。

SimDiffは、使用開始時より大抵のバージョン管理システムと併用することができます。詳細に関しましては、リポジトリの統合セクションをご参照下さい。

MATLAB/Simulinkのインストール設定

SimDiff が初めて MATLAB を必要とする際、コンピューターの MATLAB/Simulink のインストール設定を行うよう求められます。設定から、自動検出プロセスを再実行したり、手動でインストールを追加・削除することができます。
▷ファイル ▷設定.

ウィンドウ位置の変更

SimDiff は、SimDiff と Simulink のウィンドウを適切に配置することで、ディスプレイを最大限に活用します。デフォルトの配置は、設定で変更できます。
▷ファイル ▷設定.

初期モデルウィンドウ位置のみを設定するを選択すると、SimDiff は左右のモデルウィンドウを最初に表示したときに配置します。これらのウィンドウは自分で移動でき、SimDiff は置いた位置のままにします。この設定は、ピアレビューファイルを開いている場合、および MATLAB R2012b 以降に適用されます。

3 SimDiffの起動

リポジトリクライアントからSimDiffを実行するように設定している場合は、SimDiffの使用セクションに進んで下さい。

モデル選択ウィンドウ

SimDiff を起動すると、モデル選択ウィンドウが表示され、比較またはマージしたいファイルを入力するよう求められます。以下の手順に従ってください。

1. モードを選択する

比較: 変更をマージせずに、単純に2つのモデルを比較したい場合に使用します。このモードでは、SimDiff のマージボタンが無効になるため、誤ってモデルを変更してしまうことはありません。

マージ: このモードでは、1つのモデルから他のモデルへ変更をマージすることができます。

ピアレビュー読み込み: モデルの代わりにピアレビューファイルを選択し、スタート をクリックします。詳細に関しましては、ピアレビューセクションをご覧下さい。

2. 比較/マージを行うモデルを選択する

選択したモードに応じて、SimDiff が使用するモデルは最大4種類あります。

左モデル: 自分が変更したモデルまたはローカルコピー。

右モデル: 他のユーザーが変更したモデルまたはリポジトリー内のコピー。

ベースモデル: 左モデルと右モデルに共通する、最も新しい祖先です。これはオプションであり、3点間比較やマージの場合にのみ使用されます。

出力モデル: 「マージ」モードでは、必要に応じて4つ目の出力モデルを指定できます。指定しない場合、マージ結果は左モデルに保存されます。

「比較」モードにおいて、ライブラリリンクを比較するオプションがあります。詳細に関しましては、ライブラリリンクの解除セクションをご覧下さい。

3. 比較・マージを開始する

モードの選択と、モデルまたはピアレビューファイルの指定終了後、スタート ボタンをクリックします。

3点間 vs 2点間比較とマージ

3点間比較は、単にモデル間の違いを示すだけでなく、モデルがどのように変更されたかをユーザーに提示するため、2点間比較よりも正確です。その結果、3点間マージは、2点間マージよりも信頼性が高くなります。唯一の違いは、3点間比較では、共通の祖先モデルを利用する点です。簡単な例を見てみましょう。

原型モデル
A
B

上記のモデルが、2人のユーザーによって変更され、その結果、以下の2つのモデルになったとします。

モデル1モデル2
AA 同じ
B 違う
C 違う
D 違う

モデルの2点間比較では、2つの要素が同じか違うかだけを判断します。原型モデルを検証しない限り、モデル1にDが追加されたのか、モデル2からDが削除されたのかを判断する方法はありません。SimDiffの2点間比較のアプローチでは、変更は常に右モデルで発生したものと仮定します。そのため、上記の例では、Dが削除されたものとして報告されます。マージの段階において、Dをマージ後のモデルから削除するか、それとも残すかを判断するのはユーザーの責任となります。全ての2点間マージツールにおいて、最終的なマージ後のモデルは、マージの過程で行われるユーザーの判断によって決まるということに注意してください。

対照的に、3点間比較では、比較対象となる2つのモデルと原型モデル(共通の祖先)を合わせて検証することで、どの様にモデルが変更されたかを明らかにします。

モデル1モデル2
AA 同じ
B 削除
C 追加
D 追加

上記の情報があれば、以下のマージされたモデルを簡単に作成できます。

マージされたモデル
A
C
D

MATLABからSimDiffを使用

MATLABからSimDiffを使用するには、まずMATLABのパスにSimDiffインストレーションディレクトリを追加する必要があります:

  1. MATLABを開く。
  2. ファイル ▷ パス設定…をクリックする。
  3. フォルダを追加をクリックして、MATLABのパスにSimDiffインストレーションディレクトリを追加する。
  4. 保存をクリックしてから、閉じるをクリックする。

これで、MATLABからSimDiff を起動したり、SimDiff API を使用できるようになりました。オプションの完全な一覧を確認するには、MATLABで help simdiff4 または doc simdiff4 と入力してください。

4 SimDiffの使用

SimDiffは、左側に自分のモデルを、右側にリポジトリのモデルを表示します。また、両方のモデルに加えられた変更点も表示されます。モデル内の要素をダブルクリックすると、SimDiffはSimulinkのウィンドウ内にその要素を表示します。

SimDiffには、基本機能の使い方を説明するスタートアップガイドが用意されています。それには、ガイドの各セクションで使用されるサンプルモデルのセットも含まれています。スタートアップガイドは、Windowsの [スタート] メニューから開くことができます。

ツールバーボタン

  • synchronize button同期
  • change report変更レポートの作成(**)
  • next change次の変更
  • previous change前の変更
  • next conflict次のコンフリクト
  • previous conflict前のコンフリクト
  • sync SimulinkSimulinkウィンドウにおいて現在選択されているブロックを検索する
  • sync StateflowStateflow Editorにおいて現在選択されているStateflowオブジェクトを検索する
  • view in simulink windowSimulinkウィンドウに要素を表示する
  • open modelモデルを開く
  • merge elements変更をマージする(*)
  • hierarchy merge階層マージ‐コンフリクトとStateflowを除く選択された要素と子孫をマージする(*) (***)
  • undo最後に実行されたマージアクションをアンドゥする(*)
  • redo最後に実行されたマージアクションをリドゥする(*)
  • 選択された要素をレビュー済みとしてマークする選択された要素をレビュー済みとしてマークする (****)
  • 選択された要素をレビュー未済としてマークする選択された要素をレビュー未済としてマークする (****)
  • 選択された要素と全子孫をレビュー済みとしてマークする選択された要素と全子孫をレビュー済みとしてマークする (****)
  • 選択された要素と全子孫をレビュー未済としてマークする選択された要素と全子孫をレビュー未済としてマークする (****)

*  Teamエディションのみ
** TeamとProfessionalエディションのみ
*** コンフリクトしているマージアクションを除外します。レイアウトを変更し、その結果、実行動作にも影響を及ぼす可能性があるため、Stateflowマージアクションも除外されます。したがって、ユーザーはこれらを1つずつマージして確認する必要があります。
**** Team、Professional、および Review エディション

情報パネル

情報パネルは、現在選択されている要素の簡単な説明を提供します。SimDiffの初心者には、大変便利な機能となります。

属性変更の視覚化

画面下部のタブグループにある属性パネルを使うと、選択した要素の属性変更を視覚化することができます。このパネルのツールバーには、基準値、フィルタリング済みの属性、未変更の属性の表示/非表示を切り替えるボタンが配置されています。

属性の値の変更を詳しく確認するには、該当する属性の省略ボタンをクリックします。 大半の属性では二つの値をハイライト表示し、変更を表します。 真理値表の値を持つ属性ではStateflowが表示する真理値表の形式を真似たカスタムレンダラーをハイライト表示します。 Simulinkのマスクパラメータに対応する属性では、全てのマスクパラメータとその変更を記す表をハイライト表示します。

マージ

  • 単数マージ: 2つのモデル階層間のマージボタンをクリックすると、差分をマージすることができます ー 操作はとても簡単です!
  • 複数マージ: 1度に複数の変更をマージする場合、モデル階層内で変更を選択し、merge elements マージツールバーボタンをクリックします。
  • 階層マージ: 指定された要素の全変更をクリック1つでマージすることができます。コンテナ要素を選択し、hierarchy merge階層マージツールバーボタンをクリックします。 これにより、コンフリクトとStateflowを除く選択された要素とその子孫がマージされます。
    コンフリクトはユーザーによる判断が必要となるため除外されます。 また、Stateflowの変更は、各Stateflowのマージ後に特別な注意が必要となるため除外されます。 詳細に関しましては、Stateflowサポートセクションをご参照下さい。 

    ヒント: Simulinkのハイライト表示を無効にすると、階層マージの処理速度が向上します。Simulinkのハイライト変更セクションをご参照下さい。

手動で変更のマージを行う場合には、Simulinkのウィンドウ内で直接モデルを編集し、SimDiffの同期ボタンをクリックします。ただし、このマージは SimDiff のアンドゥ機能の対象外となります。ご注意ください。

SimDiffは、マージの開始時にモデルのバックアップコピーを自動的に作成します。デフォルトでは、バックアップコピーは:
「...\Documents\SimDiff\model-backup」に7日間保存されます。これは、設定において変更することができます:
ファイル ▷設定.

マージアクション

マージアクションは、2つのモデルツリー間の色付きの矢印により表示されます。

added element arrow 右モデルに要素が追加された場合、このマージアクションをクリックしてターゲットモデルに同じブロックを追加することができます。

deleted element arrow 右モデルから要素が削除された場合、このマージアクションをクリックしてターゲットモデルから同じブロックを削除することができます。

merge changed element arrow 右モデルで要素の属性が変更された場合、このマージアクションをクリックしてターゲットモデルにこの属性変更をコピーすることができます。

コンフリクト(競合)と依存関係

左と右の両モデルにおいて同じ要素が変更された場合、これをコンフリクト(競合)と呼びます。右モデルの変更が適用された場合、左モデルの変更の幾つかが上書きされる可能性があります。左と右の両モデルにおける変更は、ベースモデルが利用可能な場合のみ決定することができます。そのため、コンフリクトは、3点間比較またはマージモードにおいてのみ検知することができます。

コンフリクトのマージアクションは、conflict merge icon 赤いマージアイコンにて表示されます。

変更の中には、他の変更に依存しているものがあります。例えば、シグナルを追加するには、そのシグナルの接続先となるブロックが存在している必要があります。 SimDiff はこのような依存関係を認識しており、マージアクションを実行すると、依存している変更も自動的に適用します。

変更がコンフリクトしている変更に依存している場合、そのマージアクションはdependent on conflict merge icon オレンジのアイコンが表示されます。 このアイコンをクリックすると、依存関係にあるすべてのマージアクションが適用されます。ただし、その際、左モデルの変更の一部が上書きされる可能性があります。

変更が、実行できないマージアクションに依存している場合、その変更はブロックされます。 ブロックされたマージアクションは、blocked merge action overlay icon オーバーレイアイコンが表示されます。 Simulink ウィンドウでモデルを直接編集することで、この変更を適用するか試すことができます。編集が完了したら、同期ボタンをクリックしてください。

依存関係タブを使用すると、依存関係にあるマージアクションを確認できます。依存関係はツリー状に構成されており、子は親より先に実行される必要があります。

重要: Simulinkで直接モデルを編集した後、SimDiffに変更が実行されたことを知らせる必要があります。これは、synchronize button同期ボタンをクリックすることにより行うことができます。

マージアクションとフィルター

要素の差分がフィルタリングされている場合、その要素に対応するマージアクションは通常非表示になります。ただし、そのマージアクションが、フィルタリングされていない別のマージアクションの依存先である場合は例外です。その場合、[filtered merge action arrow]白抜きのマージアクションアイコンが表示されます。このマージアクションを直接マージすることはできませんが、依存しているマージアクションが実行されると、それに伴ってこちらもマージされます。

Simulink/Stateflowにおける変更表示

要素をSimulink/Stateflowのウィンドウに表示するには、2つのツリービューで要素をダブルクリックするか、要素を選択して、view in simulink windowウィンドウツールバーボタンをクリックします。

Simulinkにおけるハイライト変更

Simulink/Stateflowにおいて差分を表示する時に、Simulinkの変更を種類に基づいてハイライトすることができます。この設定は、ビュー ▷ Simulinkにおけるハイライト変更メニューオプションから有効/無効にすることができます。この変更の影響は、モデルを開いている場合にのみ確認できます。

Simulinkハイライトが有効の状態では、要素は下の表にあるデフォルト色により識別されます。

Simulinkハイライト色
node_block_add.png 追加要素
node_block_delete.png 削除要素
node_block_change.png 要素またはその子孫に変更がある
node_block_conflict.png 要素またはその子孫にコンフリクトする変更がある

追加、削除、変更要素の色は、ファイル ▷設定からカスタム変更することができます。

このハイライト表示では、ブロック本来の色を一時的に隠して表示するだけで、ブロックの色設定を変更するものではありません。また、ハイライト表示の状態はモデルファイルには保存されません。

SimDiffは、ブロックとラインにハイライトを適用します。分枝したラインにおいては、全枝がハイライトされるため、分枝したラインのハイライトが不正確な場合があります。

監査変更

SimDiff には、変更内容の確認や監査に役立つ機能がいくつか備わっています。ユーザーは変更内容にメモを残したり、確認済みとしてマークしたり、変更にタグをつけたりすることができます。また、SimDiff は、最後にレビューしたユーザー名と日付を記録します。

監査データは、ファイルに保存・読み込むことができ、変更レポートに出力することもできます。変更レポートの作成セクションをご参照下さい。

監査機能は、新しいユーザーインターフェイスコンポーネント数を追加します:

  • 下部のタブグループにある監査パネルは、現在選択されている項目の監査データの編集に使用することができます。ここでは、ユーザーは、チェックボックスを切り替えて変更内容をレビュー済みとしてマーク(またはマークを解除)したり、変更内容に関連付けるタグを追加・編集したり、変更内容に関するメモを残したり編集したりすることができます。
  • メインのツリービュー内の右モデル欄の右側にあるレビュー欄は、ビューの各列のレビューステータスを表示します。レビュー済みの項目は、アイコン(✓)でマークされ、レビュー未済の項目にはアイコンがありません。ユーザーは、クリックすることにより、その列のレビューステータスを切り替えることができます。
  • メインウィンドウの下方にあるステータスバーには、レビュー進行‐全変更数に対する全レビュー済みの変更数‐が表示されます。
  • 設定ダイアログには、監査設定のタブがあります。これらの設定は、監査パネル上のボタンからも容易にアクセスすることができます。

監査タグは、分類を目的として変更に追加することのできるマーカーです。タグには、名前、色、解説があます。名前は、タグを識別するために使用され、アルファベット、ダッシュ、アンダースコア、ピリオドを使用することができます。色もタグの識別に役立ち、定義済みのSimulink色を使用できます。解説は、タグの重要性における詳細を提供する短文となります。

タグは、タグ欄に新しいタグ名を入力するだけで、監査パネルから容易に適用又は作成することができます。タグ欄内の複数のタグは、コンマにより分けられます。また、タグ欄には、存在するタグの適用や削除を行うことのできるドロップダウンボックスがあります。監査タグの完全なリストは、監査設定から表示・編集を行うことができます。

ユーザーは、監査メモを使い、差分についての詳細を入力することができます。監査パネルにおいて、ユーザーは、新しいメモの入力や前回使用されたメモの選択をドロップダウンから実行することができます。

監査データは、監査メニューから保存および読み込みを行うことができます。これにより、現在のセッションのデータを保存し、後に読み込むことができます。また、監査データファイルは、他のユーザーに転送することができるため、チームメンバー間で監査作業を分担することができます。ピアレビューファイルを開いている場合、監査の編集内容はそのファイルに保存されます。ピアレビューセクションをご参照下さい。

SimDiffは、監査データを一括で編集する機能もあります。メインツールバーのボタンを使用すると、選択した変更をレビュー済みとしてマークしたり、そのマークを解除したりできます。複数の項目を選択した状態でボタンをクリックすると、選択した全ての変更をマーク(またはマークを解除)します。各ツールバーボタンの右下隅には、ドロップダウンの矢印があり、これをクリックすると、選択された変更の全ての子要素もマーク(またはマークを解除)できます。更に、複数の項目が選択されると、監査パネルが表示され、選択された全ての項目の監査情報を編集できるようになります。

サブシステム スナップショット

サブシステム スナップショットとは、変更内容を検討する際に共有できる画像のことです。サブシステムのスクリーンショットと、選択した差分の簡潔な概要が表示されます。追加、削除、変更には、SimDiff と同じ色が使用されます。属性の変更では、概要に属性名と 2 つの値が含まれます。

サブシステム スナップショットは、Team および Review エディションで利用できます。ピアレビューファイルを開いている場合も、MATLAB と Simulink をインストールすることなく、スナップショットを利用できます。

モデルツリーでサブシステムを 1 つ選択して右クリックし、サブシステム スナップショットを作成する... を選択します。同じコマンドは、モデルのルートと Stateflow チャートでも有効です。SimDiff がスクリーンショットを準備し、サブシステム スナップショット ダイアログを開きます。

ダイアログでは、次の操作を行います。

  1. 含めるスクリーンショットを選択します で、左、右、または 両方 を選択します。
  2. 画像をズームおよびパンして、表示する領域に調整することができます。各スクリーンショットの上には、サブシステムのパスが表示されます。
  3. 左側 と 右側 の一覧には、そのサブシステムにおける差分が表示されます。画像に含めたい項目にチェックを入れます。

クリップボードにコピー を選択すると、スナップショットがクリップボードにコピーされ、プレゼンテーションやその他の文書に貼り付けることができます。

右下のサムネイルがスナップショットファイルです。マージリクエストやプルリクエストのコメント、またはメールへドラッグして、画像を添付します。SimDiff は PNG を Documents\EnSoft\SimDiff\snapshots にも保存します。7 日以上経過したスナップショットは、次回 SimDiff を起動したときに削除されます。

ピアレビュー

ピアレビューファイルを作成すると、Simulink ライセンスがなくても、モデルの変更を視覚的にレビューできます。SimDiff の組み込みモデルビューアーを使用して、閲覧、監査、およびサブシステム スナップショットの作成が可能です。このファイルは HTML として保存されるため、変更内容をブラウザで確認できるほか、SimDiffがファイルを読み込むために必要なメタデータも含まれています。

ピアレビューファイルは、Team、Professional、および Review エディションで読み込むことができます。Team と Professional では、ファイルを生成することもできます。Review エディションは、ピアレビューファイルを読み込んで内容を確認・検討することができます。

ファイルを生成するには、比較モードでモデルを比較してから、ファイル ▷ピアレビューファイルを生成する… を選択します。モデルは、MATLAB R2015a 以降で保存されている必要があります。

ファイルを開くには、モデル選択ウィンドウで ピアレビュー読み込み を選択し、ファイルを指定してから スタート をクリックします。ブラウザを使用する場合は、HTML ファイルの ここをクリック から SimDiff で開くことができます。

ファイルを開いている間は、監査変更 の説明に従って、変更をレビュー済みとしてマークし、メモとタグを追加します。SimDiff はこれらの編集内容をピアレビューファイルに保存するため、そのファイルを次のレビュー担当者に渡すことができます。レビューの進行状況は、ファイルの まとめ に表示されます。特定のサブシステムの画像を共有したい場合は、サブシステム スナップショット を作成します。

変更レポートの作成

インタラクティブなレビューを共有するには、ピアレビューファイルを生成します。ピアレビューセクションをご参照下さい。

変更レポートには、比較したモデルで検出された全ての変更が一覧表示され、HTML形式で保存することができます。なお、MATLAB API では、MATLAB 変数の戻り値として、変更レポートを取り扱うこともできます。

変更の内容は、モデルの属性の変更、設定パラメータの変更、システム変更、Stateflow マシンの変更など、主に 4 種類に区分されます。

システムの変更は、コンテナ要素ごとに構成されています。各コンテナ要素には、以下の情報が含まれています。

  • コンテナ要素へのパス
  • コンテナ要素のオプション スクリーンショット (HTML のみ)
  • 左モデルにおける追加/削除項目の一覧
  • 右モデルにおける追加/削除項目の一覧
  • 両モデルに存在し、属性が変更された要素の一覧

変更レポートを作成するには、ファイル ▷変更レポートの作成...メニューオプションを選択するか、もしくはchange reportウィンドウツールバーボタンをクリックします。すると、レポートファイルを選択するダイアログボックスが現れます。

レポートのオプションは、設定のピアレビューファイルと変更レポートタブにあります。▷ファイル ▷設定.

ハイライト表示モデルのエクスポート

差分がハイライト表示されているモデルのコピーをエクスポートするには、[ファイル] > [ハイライト表示モデルのエクスポート... ] メニューをクリックします。変更内容をマージした場合は、同期するよう求められます。その後、モデルの保存先を指定するダイアログが表示されます。エクスポートされたモデルの名前は元のモデルと同じですが、モデル名の末尾に "_highlighted" が追加されています。

Simulink のブロックまたはアノテーションの場合、背景色によって変更内容を識別します。なお、Simulink における変更項目のハイライト表示と同じ配色が、適用されています。Simulinkにおけるハイライト変更セクション を参照して下さい。

Stateflow オブジェクトの場合、接頭文字によって変更内容を識別します。使用される接頭文字は以下の通りです。オブジェクトが変更された場合には、「c_」、追加は「a_」、削除は「d_」、コンフリクトには「co_」が適用されています。なお現時点では、Stateflow にてオブジェクトのカラー表示がサポートされていないため、接頭文字を使用しています。

また、別の接頭文字が適用される、特殊なケースも存在します。ある State に対して出力ステートアクティビティが有効になっている場合、Stateflow によって関連するData オブジェクトが自動的に作成されます。R2012b 以前のバージョンでは、作成される Data 名として、常に State 名と一致した名前が使用されていました。この場合、SimDiff は State にて特殊な接頭文字を適用し、State と Data オブジェクトの両方に変更が生じたことを識別します。フォーマットは以下の通りです。 <data-接頭文字>D_<state-接頭文字>_<state-名前>.

例えば、「State1」という名前の State に関連する Data が削除された場合、接頭文字が適用されて名前が「dD_c_State1」に変更されます。

変更のフィルター

SimDiff には、強力なフィルタリング機能が備わっており、確認したい変更点だけに素早く絞り込むことができます。この機能を使うと、比較対象に含めたい要素(例:定数ブロック)や比較から除外したい要素を指定することができます。同様に、特定の属性の変更について、表示・非表示を切り替えることも可能です。さらに、指定した一連の要素について、属性に関する変更だけを含めるよう指定することもできます。

フィルターは、要素と属性フィルターの2種類に分けられ、包含モードと除外モードにすることができます。

要素フィルターを使って、比較に包含/除外する要素タイプを指定することができます。可能な要素タイプ値は:

  • Block.[BlockType]; [BlockType] は、モデルファイル内のBlockType属性の可能な値となります。可能な値の例として、Constant、Gain、SubSystem等があります。「Block.」の接頭辞を使用する必要はありませんが、不明確性を避けるために使用することをお勧め致します。
  • Line、Annotation、ConfigurationParameter;ライン、注釈、コンフィギュレーションパラメータにおける変更を包含/除外します。
  • Stateflow.[ObjectType]; [ObjectType]は下記のStateflowオブジェクトから選択できます:Chart、EMChart、TruthTableChart、AtomicSubchart、State、Box、Annotation、Function、EMFunction、SLFunction、TruthTable、ConnectiveJunction、HistoryJunction、Transition、Data、Event、Target、Machine

属性フィルターは、比較に包含/除外される属性を指定することができます。可能な属性値は:

  • モデルファイル又はSimDiffの属性タブに表示される属性名
  • 複合属性のドット付表記(例;TargetLink.output.type, Port.Name )複合属性は、属性タブ内の階層内に表記されます。

属性名を指定するときは、ワイルドカードを使用できます。星印(*)は任意の文字列に一致し、 クエスチョンマーク(?)は1文字に一致します。例えば、「Port*」と入力すると、「Port」から始まる全ての属性をフィルタリングできます。

デフォルトでは、属性フィルターはすべての要素タイプに適用されます。なお、属性フィルターを設定することによって、特定の要素タイプのみに適用することも可能です。

フィルターモード: SimDiffには、要素と属性の変更において、2種類のフィルターモードがあります。

  • 除外フィルター: 指定された要素や属性の変更を無視します。
  • 包含フィルター: 指定された要素や属性の変更を表示し、その他を無視します。

複数の除外フィルターが有効の場合、それらすべての対象が除外されます。複数の包含フィルターが有効な場合は、それらすべての対象が含まれ、それ以外の除外フィルターに該当するものは除外されます。なお、要素フィルターと属性フィルターは互いに独立しています。例えば、ラインが包含対象で、色属性が除外対象である場合、SimDiffはラインの変更のみを表示し、そのラインにおける色属性以外のすべての属性変更を表示します。

属性フィルターと要素フィルターの適用において、SimDiffが実行するプロセスの詳細は以下の通りです。まず、SimDiffはフィルターを種類(属性または要素)ごとに分類します。各グループの処理は: 

  1. 指定された属性や要素のいずれかに該当する条件をまとめ、すべての包含フィルターを1つの統合包含フィルターに統合します。
  2. 指定された属性や要素のいずれかに該当する条件をまとめ、すべての除外フィルターを1つの統合除外フィルターに統合します。
  3. 統合包含フィルターが空ではない場合、そのフィルターで指定されていないすべての属性や要素がフィルター対象として記録されます。
  4. 統合除外フィルターで指定されたすべての属性や要素がフィルター対象として記録されます。
  5. SimDiffは、除外対象として記録されたすべての属性や要素の変更を無視します。

フィルター編集には、編集 ▷フィルター... メニューオプションを選択するか、又はfilters editor ボタンをクリックします。比較の終了後に無視したい変更を除外することもできます。それには、無視したい要素または属性を右クリックし、希望の除外フィルターに追加します。結果は、直に更新されます。

ピアレビューファイルを開いている間、フィルターは読み取り専用です。ピアレビューファイルの生成時に使用されていたフィルターが表示されるためです。

SimDiffには、あらかじめ組み込みフィルターが用意されています。フィルター内の属性や要素タイプのリストは変更できませんが、他のフィルターと同様に、有効または無効に切り替えることは可能です。

フィルター対象の要素は、SimDiffのモデル階層内にfiltered element アイコン付きで表示されます。フィルター対象となった属性は、属性タブ内にfiltered attribute アイコン付きで表示されます。

なお、マージ処理は属性フィルターの影響を受けません。そのため、属性に変更がある要素をマージする場合、その属性がフィルター対象であるかどうか関わらず、すべての属性がマージされます。ただし、レイアウト関連の属性は例外であり、フィルター対象外の場合にのみマージされます。

サブシステムの比較

SimDiffは、モデルファイルだけでなく、モデルファイル内のサブシステムの比較とマージを実行することができます。モデルファイルの選択後、ユーザーは、モデルの比較またはマージの実行時に、使用するモデルファイル内のサブシステムを選択することができます。

サブシステムを比較することで、モデルの一部に集中して作業を行うことができます。これにより、モデルの他の部分で発生した変更というノイズが減り、確認作業に集中しやすくなるだけでなく、SimDiffの高速な比較時間をさらに短縮することができます。

また、この機能を使用して、別々のサブシステム同士を比較することも可能です。これは、ブロックのリファクタリングを行った場合(例:あるサブシステムから別のサブシステムへの移動、新しいサブシステムや新しいモデルへのグループ化など)に役立ちます。さらに、サブシステムとモデル全体を比較することも可能です。

注意: サブシステム内のインポートやアウトポートをマージする際は、十分にご注意ください。ポートを削除すると、親システムのラインの接続が切断される可能性があります。

Workspace 変数の比較

SimDiff のオプションとして、MATLAB Base Workspace とModel WorkspaceのWorkspace 変数を比較することができます。

Workspace 変数を比較するには、以下の手順に従ってください。

  1. SimDiff を開きます。
  2. モデルを指定するフィールドの下部に表示された、[Workspace の比較] チェックボックスを選択します。
  3. Workspace を設定する場合には、[設定する...] ボタンをクリックします。ここで表示されるダイアログボックスにて、コマンドやスクリプトを実行し、各モデルに適応した Workspace を設定することが可能です。MATLAB のパスは、MATLAB コマンドの入力または既存スクリプトの指定によって設定できます。設定作業が完了した後、プリセットを保存しておくと便利です。
  4. 比較を開始します。SimDiffはモデルを比較する際、MATLAB Base Workspace と Model Workspace の両方にある Workspace 変数も比較します。

各変数の詳細な差分はGUI上に表示されます。このビューアーはMATLAB Workspaceウィンドウに似ており、[struct] や [matrix] のセルをダブルクリックすると、別のタブが開き、その内容が表示されます。

ライブラリリンクの解除

ライブラリブロックの参照ブロックであるライブラリリンクがモデルに含まれている場合があります。デフォルトでは、SimDiffは、モデルファイル内の情報のみを比較します-この場合、ライブラリロックではなく参照ブロックです。しかし、SimDiffには、参照付けられた全てのライブラリブロックを比較するように、ライブラリリンクを解除するオプションがあります。

リンクを解除するには、下記の説明に従って下さい: 

  1. SimDiffを開きます。
  2. 比較モードを選択します。リンクの解除は、比較モードのみにおいて可能となりますのでご注意下さい。
  3. モデル選択欄の下にある「ライブラリリンクを解除する」のチェックボックスにチェックを入れます。
  4. ライブラリの依存関係を指定する必要がある場合には、「設定…」ボタンをクリックします。これによりダイアログが開き、ライブラリの依存関係が正しく認識されるよう、各モデルに適したMATLABパスを設定できます。MATLABパスの設定は、MATLABコマンドを直接入力するか、既存のスクリプトを選択して行うことができます。設定完了後は、プリセットを保存しておくと便利です。
  5. 比較を開始します。SimDiffは、リンクが解除されたモデルの一時的なコピーを作成し、それらを比較します。

マージアクションのアンドゥ

SimDiffでは、Simulink要素に対するマージアクションのアンドゥ/リドゥが可能です。この実験的機能を適切に使用するには、いくつかの制限事項やガイドラインに従う必要があります。例えば、Stateflow要素に対するマージアクションのアンドゥ機能は、サポートされていません。この機能を正しく動作させるためには、以下の状況を避ける必要があります。 

  1. MATLABを閉じる:  SimDiffが接続されているMATLABセッションを手動で閉じると、アンドゥのデータが消失する場合があります。その結果、次回のアンドゥ操作に失敗する可能性が出てきます。MATLABセッションが閉じている場合、synchronize button同期ボタンをクリックしてからマージ処理を続行することをお勧め致します。
  2. 保存せずにターゲットモデルを閉じる: モデルに保存されていない変更があり、保存せずにそのモデルを閉じた場合、次回のアンドゥ操作に失敗する場合があります。そのため、ターゲットモデルを未保存のまま閉じなれければならない場合、閉じた直後に同期ボタンをクリックすることをお勧め致します。
  3. ターゲットモデルを変更する: ターゲットモデルにおいて手動で実行された変更がアンドゥ操作を妨害する場合があります。そのため、モデル変更後に同期する必要があります。

上記またはその他の理由によりアンドゥ操作に失敗した場合でも、SimDiffにおいて次のアンドゥ操作に進むことができます。

重要: 同期終了時、アンドゥ/リドゥの履歴は消去されるのでご注意下さい。

異なるMATLABバージョンで保存されたモデルの比較

SimDiffでは、異なるMATLABバージョンで保存されたモデルを比較することができます。ただし、これは比較モードでのみ可能です。マージモードでは、システム上で利用可能な、両モデルのバージョンよりも新しい共通のMATLABバージョンへ、モデルをアップコンバートする必要があります。アップコンバートを行うと、モデルの一時的なコピーが作成され、そのコピーがアップコンバートされて保存されます。なお、左モデルがアップコンバートされ、かつ出力先モデルが指定されていない場合、マージが終了すると、左モデルはアップコンバート後のバージョンで上書きされます。

一時的モデルコピー

比較やマージの実行に当たり、SimDiffがモデルの一時的コピーを作成する特別な状況があります。その状況とは: 

モデルの一時的なコピーが作成されると、GUI上のモデルパスの横にtemp file buttonボタンが表示されます。 このボタンをクリックすると、ファイルマネージャーが開き、該当する一時モデルのファイルが選択された状態で表示されます。

注意: マージモードでは、一時的なターゲットモデルに対して行われたマージは、同期時またはSimDiffの終了時に、元のターゲットモデルに反映されます。

5 Stateflowサポート

SimDiffは、Stateflow要素のマージもサポートしています。Stateflow要素の配置は操行に影響を与える場合があるため、Stateflowのマージ時には充分な注意を払う必要があります。Simulinkと同様にマージアクションを使って、必要に応じて配置を調節することができます。

6 自動化

バッチモードで SimDiff を使用する

スクリプトから SimDiff を実行する場合には、SimDiff バッチモードの実行ファイル、sd4.exe の呼び込みを行ってください。なお、モデルのマージにはユーザとの相互作動が必要なため、バッチモードではマージがサポートされておりませんのでご注意ください。

SimDiff インストール先を Windows のパス内で指定しておくと便利です。

バッチモードの API の詳細は、コマンドプロンプトでsd4 -h を実行してください。

SimDiffに引数を渡す

SimDiffの呼び出し時に、コマンドライン引数を渡すことができます。これは、"C:\Program Files\EnSoft\SimDiff\simdiff4.exe" にショートカットを作成するか、simdiff4.exeをコマンドラインから呼び出すことにより実行することができます。

SimDiff の GUI に適用する引数に関するヘルプは、ヘルプ ▷ コマンドライン オプション から表示するか、あるいはコマンドプロンプトを開いて以下の文字列を入力して下さい。simdiff4.exe -h。

SimDiff 終了コード

SimDiffはコマンドラインおよびデスクトップアプリに対して以下の終了コードを返します:

コード説明
0成功 - 差分は見つかりませんでした
1成功 - 差分が見つかりました
100失敗 - 一般
101失敗 - ライセンスを検証
102失敗 - 無効なプログラムの入力
103失敗 - 無効なプログラムの設定

注記 - 上記のコードは暫定的なものであり、今後のリリースで変更される可能性があります

7 リポジトリ統合

SimDiff は、リポジトリ システムのクライアントと統合して使用する場合に、最も効果を発揮します。リポジトリシステムには、リポジトリに保存されているファイルの異なるバージョンを比較・マージする機能が備わっています。これらは通常「クライアント側で」行われる処理です。一般的に、リポジトリのクライアントアプリケーションは、組み込みまたはあらかじめパッケージ化されたツールを起動し、比較対象となるリビジョンの一時的なチェックアウト先を指すコマンドライン引数をそのツールに渡します。

ただし、多くのリポジトリシステムでは、ユーザーが選択した外部ツールを使用するように設定できます。一部のリポジトリシステムでは、ファイル拡張子などのパターンマッチングに基づいて、異なるツールを使い分けるように設定することもできます。SimDiff の連携設定が最も容易なのはこうしたシステムですが、差分比較ツールやマージツールをユーザーが設定できるシステムであれば、基本的にどのようなシステムでもSimDiff は動作します。

ENSOFT では、多種のリポジトリ システム クライアントと SimDiff とを統合する詳細の情報を、弊社のサイトにて提供しています。なお、このサイトにて、全てのシステムがカバーされているわけではございませんので、何卒ご了承ください。ただし、このサイトにシステムが記載されていない場合においても、設定可能な場合があります。SimDiff をリポジトリ システム クライアントと統合する場合の、一般的な操作手順は以下の通りです。

SimDiff とご利用のリポジトリ システム クライアントの統合処理に不具合が発生する場合には、迅速に対応させて頂きますので、お気軽にsupport@ensoftcorp.com までご連絡下さい。

リポジトリ クライアントを統合する場合の基本操作

ほとんどのクライアントにて、比較処理とマージ処理、2種類のコマンドを実行するよう設定する必要があります。

比較を実行する場合のコマンドは、以下の通りです。
"C:\Program Files\EnSoft\SimDiff\simdiff4.exe"
-baseModel <ベースモデル> -leftModel <左モデル> -rightModel <右モデル>

マージを実行する場合のコマンドは、以下の通りです。
"C:\Program Files\EnSoft\SimDiff\simdiff4.exe"
-merge -baseModel <ベースモデル> -leftModel <左モデル> -rightModel <右モデル> [-outputModel <出力モデル>]

(SimDiff インストールフォルダのパスを使用して下さい。)

<ベースモデル>、<左モデル>、あるいは<右モデル>の部分は、クライアントに適した構文で置き換えて下さい。リポジトリ クライアントにて、個別の出力ファイルが必要な場合には、4番目のパラメーターを追加して、出力ファイルを特定して下さい。

リポジトリ クライアントによってモデル名に不正な文字が追加されてSimulinkを開くことができない場合には、SimDiff が自動的に不正な文字を削除します。

使用しているクライアントの設定によっては、SimDiff がモデルファイルに対してのみ動作するように設定するための、パターンマッチング機能が備わっていない場合があります。リポジトリにモデルファイル以外のファイルも含まれている場合、これは問題となります。この問題を回避するには、SimDiff と同梱のToolSelector ユーティリティプログラムを、C:\Program Files\EnSoft\SimDiff\utils (または SimDiff のインストールフォルダ) から使用して下さい。なお、ToolSelector の設定方法に関する情報は、utils ディレクトリにあるファイルをご参照下さい。

法定通知

目次

ご質問、または修正のご希望はありますか?

どのようなご用件ですか?