紹介
SimDiffは、Simulinkモデルのチーム開発における先導的な差分及びマージ解決手段です。
SimDiffのマージは、他のユーザーにより実行された変更を1つのSimulinkに統合する最も容易かつ確実な手段です。SimDiffには、マージモードと比較モードの2種類のオペレーションモードがあります。また、Basic、Professional、Teamの3種類のエディションがあります。下の表には、各エディションの特徴が列挙されています。
SimDiff Team | SimDiff Professional | SimDiff Basic | |
---|---|---|---|
差分 | |||
レポート | |||
マージ |
弊社では、SimDiff デモのご閲覧を強くお勧めしております。 その後、SimDiffの使用中においてクイックリファレンスとして本書をご利用頂けます。本書は横幅が細くなっているため、モニター上のSimDiffの横にピッタリとはまります。
EnSoftサポートの要請
ご質問等ございましたら、support@ensoftcorp.comまでご連絡下さい。SimDiffに関します一般的なご質問の際には、メールにご質問内容を記入して下さい。
SimDiff作動中にエラーが発生した場合には、SimDiffのログをご送信下さい。
ログを開くには、 Windows の [スタート] メニューから SimDiff ログ を選択し、ご希望のロケーションに保存してから、メールに添付して下さい。
用語
当説明書とSimDiffのユーザーインターフェイスにおいて、モデルに関する下記の用語が使用されます:
- 左モデル: 大抵の場合、自分が変更したモデル、又はローカルコピー
- 右モデル: 大抵の場合、他のユーザーにより変更されたモデル、又はリポジトリーのコピー
- ベースモデル: 左と右モデルの最新の共通先祖。3点間比較やマージに使用される。
- 出力モデル: マージ結果のモデル。出力モデルが指定されていない場合、マージは左モデルにおいて実行される。
- ターゲットモデル: マージの実行先のモデル、つまり左又は出力モデルを指すために便宜上使用される用語。
インストール
EnSoftからのメールまたはSimDiffのインストールCDに含まれるSimDiffインストーラーを作動させ、画面上の説明に従って下さい。
SimDiffを初めて作動させると、ライセンスキーもしくはライセンスサーバー情報を入力するよう指示されます。この時点で、ライセンスキー取得に関する説明をメールで受信されているはずです。そのメールをまだ受信されていない場合には、sales@ensoftcorp.comまでご連絡下さい。
SimDiffは、使用開始時より大抵のバージョン管理システムと併用することができます。詳細に関しましては、リポジトリの統合セクションをご参照下さい。
MATLAB/Simulinkのインストール設定
MATLABがSimDiffにより初めて要求される時、使用しているコンピューターにMATLAB/Simulinkのインストールを設定するよう指示されます。設定から自動検出プロセスに戻るか、又は手動でインストールを追加・削除することができます:
▷ファイル ▷設定.
注意: 適合性の問題につき、SimDiffはWindows Vista以上においてMATLAB R14SP1以下に接続することができません。
ウィンドウ位置の変更
SimDiffは、SimDiffとSimulinkのウィンドウを整列させ、画面を要領よく使用します。このデフォルト位置は、設定にて変更することができます:
▷ファイル ▷設定.
リポジトリクライアントからSimDiffを作動する場合は、SimDiffの使用セクションに進んで下さい。
モデル選択ウィンドウ
SimDiffの起動後、モデル選択ウィンドウが開き、比較やマージしたいファイルを入力するよう要請されます。手順に従ってください。
1. モードを選択する
比較: 変更をマージすることなく、2つのモデルの比較のみを行う場合。このモードは、誤ってモデルを変更しないようにSimDiffのマージボタンをディスエーブルにします。
マージ: このモードでは、1つのモデルから他のモデルへ変更をマージすることができます。
2. 比較/マージを行うモデルを選択する
選択されたモードによっては、SimDiffが使用するモデルの種類が最高4つあります:
左モデル: 自分が変更したモデルまたはローカルコピー。
右モデル: 他のユーザーが変更したモデルまたはリポジトリー内のコピー。
ベースモデル: 左と右モデルの最新の共通先祖。これは、オプショナルとなっており、3点間比較やマージのみに使用されます。
出力モデル: 「マージ」モードにおいて、4つ目のオプショナル出力モデルを指定することができます。指定しない場合には、マージ結果が左モデルに保存されます。
「比較」モードにおいて、ライブラリリンクを比較するオプションがあります。詳細に関しましては、ライブラリリンクの解除セクションをご覧下さい。
3. 比較・マージを開始する
モードの選択とモデルの指定終了後、スタート ボタンをクリックします。
3点間 vs 2点間比較とマージ
3点間比較は、モデルがどの様に異なるかのみだけでなく、どの様に変更されたかを出力するため、2点間比較より正確な手段となっています。その結果、3点間マージは、2点間マージより正確なものとなります。唯一の違いは、3点間比較は、共通の祖先を使用するというです。簡単な例を見てみましょう。
原型モデル |
---|
A |
B |
上記モデルが2人のユーザーにより下記モデルに変更されたとします。
モデル1 | モデル2 |
---|---|
A | A |
B | |
C | |
D |
⇐同じ |
⇐違う |
⇐違う |
⇐違う |
モデルの2点間比較は、2つの要素が同じ場合と異なる場合のみを出力します。原型モデルを検討することなく、モデル1にDが追加されたのか、モデル2からDが削除されたのかを確認することはできません。SimDiffの2点間比較のアプローチは、常に右モデルが変更されたものとして想定します。そのため、上記例においては、Dが削除されたものとして報告されます。マージの段階において、Dが削除されるべきかまたはマージされたモデルに保存されるべきかは、ユーザーにより決定されます。全2点間マージツールにおいて、マージ後のモデルは、マージ中にユーザーにより決定されることにご注意下さい。
対照的に、3点間比較は、比較される2つのモデルと原型モデル(共通の祖先)を検討し、どの様にモデルが変更されたかを出力します。
モデル1 | モデル2 |
---|---|
A | A |
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と入力して下さい。
SimDiffは、左に自分のモデルを、右にリポジトリのモデルを表示します。両モデルへの変更もまた表示されます。モデル内の要素をダブルクリックすると、SimDiffはSimulinkのウィンドウ内にそれを表示します。
SimDiffには、基本機能の使用法を説明する入門ガイドがあります。 それには、ガイドのいくつかのセクションにおいて使用されるサンプルモデルのセットが含まれています。 Windows の [スタート] メニューからスタートガイドを開くことができます。
情報パネル
情報パネルは、現在選択されている要素の簡単な説明を提供します。SimDiffの初心者には、大変便利な機能となります。
属性変更の視覚化
下部のタブグループ内にある属性パネルで選択した要素に対する属性変更を視覚化することができます。 このパネルのツールバーにはトグルボタンがあり、基準値、フィルタリング済みの属性、変化していない属性の表示/非表示を切り替えることができます。
属性の値の変更を詳しく確認するには、該当する属性の省略ボタンをクリックします。 大半の属性では二つの値をハイライト表示し、変更を表します。 真理値表の値を持つ属性ではStateflowが表示する真理値表の形式を真似たカスタムレンダラーをハイライト表示します。 Simulinkのマスクパラメータに対応する属性では、全てのマスクパラメータとその変更を記す表をハイライト表示します。
マージ
- 単数マージ: 2つのモデル階層間のマージアクションボタンの1つをクリックして、差分をマージすることができます とてもシンプルなデザインとなっています。
- 複数マージ: 1度に複数の変更をマージする場合、モデル階層内で変更を選択し、 マージツールバーボタンをクリックします。
- 階層マージ: 指定された要素の全変更をクリック1つでマージすることができます。コンテナ要素を選択し、階層マージツールバーボタンをクリックします。
これにより、コンフリクトとStateflowを除く選択された要素とその子孫がマージされます。
コンフリクトはユーザーの決定を要求するために除外されます。 Stateflowの変更は、各Stateflowマージ後に充分な注意が必要とされるために除外されます。 詳細に関しましては、Stateflowサポートセクションをご参照下さい。
ヒント: 階層マージは、Simulink Highlightingがディスエーブルの状態においてより速く作動します。Simulinkのハイライト変更セクションをご参照下さい。
手動で変更のマージを行う場合には、Simulinkのウィンドウ内で直接モデルを編集し、SimDiffの同期ボタンをクリックします。このマージは、SimDiffのアンドゥシステムにより探知されないのでご注意下さい。
SimDiffは、マージの開始時にモデルのバックアップコピーを自動的に作成します。デフォルトでは、バックアップコピーは:
「...\Documents\SimDiff\model-backup」に7日間保存されます。これは、設定において変更することができます:
ファイル ▷設定.
マージアクション
マージアクションは、2つのモデルツリー間の色付きの矢印により表示されます。
右モデルに要素が追加された場合、このマージアクションをクリックしてターゲットモデルに同じブロックを追加することができます。
右モデルから要素が削除された場合、このマージアクションをクリックしてターゲットモデルから同じブロックを削除することができます。
右モデルにて要素の属性が変更された場合、このマージアクションをクリックしてターゲットモデルにこの属性変更をコピーすることができます。
コンフリクトと依存性
左と右の両モデルにおいて同じ要素が変更された場合、これをコンフリクトと呼びます。右モデルの変更が適用された場合、左モデルの変更の幾つかが上書きされる可能性があります。左と右の両モデルにおける変更は、ベースモデルが利用可能な場合のみ決定することができます。そのため、コンフリクトは、3点間比較・マージモードにおいてのみ検知することができます。
コンフリクトのマージアクションは、 赤いマージアイコンにて表示されます。
変更の中には、他の変更に依存するものもあります。例えば、シグナルを追加するには、接続するブロックが存在しなければなりません。 SimDiffは、依存性を理解しているため、マージアクションの実行時に依存性変更を自動的に適用します。
変更がコンフリクトしている変更に依存している場合は、そのマージアクションは オレンジのアイコンにて表示されます。 それをクリックすることにより、全依存性マージアクションを適用します;これにより、左モデル内の変更の幾つかが上書きされる可能性があります。
変更が実行不可能なマージアクションに依存している場合には、そのマージアクションは遮断されます。 遮断されたマージアクションは、 上塗りのアイコンにて表示されます。 Simulinkウィンドウ内においてモデルを直接変更し、上記変更を試みることができます。実行後、同期ボタンをクリックして下さい。
依存性タブを使って、依存性マージアクションを表示することができます。依存性は、ツリー内に配列され、先祖の前に子孫が実行されなければなりません。
重要: Simulinkで直接モデルを編集した後、SimDiffに変更が実行されたことを知らせる必要があります。これは、同期ボタンをクリックすることにより行うことができます。
マージアクションとフィルター
要素差分がフィルターされる場合、通常その要素のマージアクションは表示されません。その例外は、マージアクションがフィルターされないマージアクションに依存する場合です。その場合、空のマージアクションアイコンが表示されます。このマージアクションを直接マージすることはできませんが、依存性マージアクションがマージされる場合には、マージされます。
Simulink/Stateflowにおける変更表示
要素をSimulink/Stateflowのウィンドウに表示するには、そのツリービュー内の要素をダブルクリックするか、又はツリービュー内で要素を選択してウィンドウツリーバーボタンをクリックします。
Simulinkにおけるハイライト変更
Simulink/Stateflowにおいて差分を表示する時に、Simulinkの変更を種類に基づいてハイライトすることができます。この設定は、ビュー ▷ Simulinkにおけるハイライト変更メニューオプションからイネーブル/ディスエーブルにすることができます。この効果は、モデルが開いている時のみ有効となります。
Simulinkハイライトがイネーブルの状態では、要素は下の表にあるデフォルト色により識別されます。
Simulinkハイライト色 | |
---|---|
追加要素 | |
削除要素 | |
要素または依存性要素に変更がある | |
要素または依存性要素にコンフリクトする変更がある |
追加、削除、変更要素の色は、ファイル ▷設定からカスタム変更することができます。
このハイライト手段は、ブロック色設定を覆いますが、変更することはなく、ハイライトはモデルファイルに保存されません。
SimDiffは、ブロックとラインにハイライトを適用します。分枝したラインにおいては、全枝がハイライトされるため、分枝したラインのハイライトが不正確な場合があります。
監査変更
SimDiffには、変更のレビューと監査における幾つかの便利な機能があります。ユーザーは、変更にメモを入力、レビュー済みとして変更に印付け、変更にタグを適用することができます。また、SimDiffは、前回のレビューのユーザー名と日付を記録します。
監査データは、ファイルに保存・読み込むことができ、変更レポートに出力することもできます。「変更レポートの作成」セクションをご参照下さい。
監査機能は、新しいユーザーインターフェイスコンポーネント数を追加します:
- 下部のタブグループにある監査パネルは、現在選択されている項目の監査データの編集に使用することができます。ここでは、ユーザーは、レビュー済みとして変更に印付けや印除去、変更に関連するタグの追加や修正、変更にメモ入力や編集を実行するチェックボックスを切り替えることができます。
- メインのツリービュー内の右モデル欄の右側にあるレビュー欄は、ビューの各列のレビューステータスを表示します。レビュー済みの項目は、アイコン()で印付けされ、レビュー未済の項目にはアイコンがありません。ユーザーは、クリックすることにより、その列のレビューステータスを切り替えることができます。
- メインウィンドウの下方にあるステータスバーには、レビュー進行‐全変更数に対する全レビュー済みの変更数‐が表示されます。
- 設定ダイアログには、監査設定のタブがあります。これらの設定は、監査パネル上のボタンからも容易にアクセスすることができます。
監査タグは、分類を目的として変更に追加することのできるマーカーです。タグには、名前、色、解説があます。名前は、タグを識別するために使用され、アルファベット、ダッシュ、アンダースコア、ピリオドを使用することができます。色もタグの識別に役立ち、定義済みのSimulink色を使用できます。解説は、タグの重要性における詳細を提供する短文となります。
タグは、タグ欄に新しいタグ名を入力するだけで、監査パネルから容易に適用又は作成することができます。タグ欄内の複数のタグは、コンマにより分けられます。また、タグ欄には、存在するタグの適用や削除を行うことのできるドロップダウンボックスがあります。監査タグの完全リストは、監査設定から表示・編集を行うことができます。
ユーザーは、監査メモを使い、差分についての詳細を入力することができます。監査パネルにおいて、ユーザーは、新しいメモの入力や前回使用されたメモの選択をドロップダウンから実行することができます。
監査データは、監査メニューにおいて保存と読み込むことができます。これにより、現在のセッションのデータを保存し、後に読み込むことができます。また、監査データファイルは、他のユーザーに転送することができるため、チームメンバー間で監査作業を分担することができます。
SimDiffは、大量の監査データを編集する手段も提供します。メインのツールバーには、選択された変更にレビュー済みとして印付け又は印削除を実行するボタンがあります。複数の項目が選択されている場合は、このボタンは選択されている全変更を印付け又は印削除します。各ツールバーボタンには、選択されている変更の全子孫の印付け又は印削除を実行するドロップダウン矢印が右下の角にあります。更に、複数の項目が選択されている場合、監査パネルは、選択されている全項目の監査情報の編集を表示し、実行することができます。
変更レポートの作成
変更レポートには、比較したモデルに存在する、全ての差分項目の一覧が表示されており、XML または HTML 形式で保存することが可能です。なお、MATLAB API では、MATLAB 変数の戻り値として、変更レポートを取り扱うこともできます。
変更の内容は、モデルの属性の変更、設定パラメータの変更、システム変更、Stateflow マシンの変更など、主に 4 種類に区分されます。
システムの変更は、コンテナ要素ごとに構成されています。各コンテナ要素には、以下の情報が含まれています。
- コンテナ要素へのパス
- コンテナ要素のオプション スクリーンショット (HTML のみ)
- 左モデルにおける追加/削除項目の一覧
- 右モデルにおける追加/削除項目の一覧
- 両モデルに存在し、属性が変更された要素の一覧
変更レポートを作成するには、ファイル ▷変更レポートの作成...メニューオプションを選択するか、もしくはウィンドウツールバーボタンをクリックします。すると、レポートファイルのロケーションやその他のレポート作成に関するオプションを選択できるダイアログボックスが現れます。
ハイライト表示モデルのエクスポート
差分がハイライト表示されているモデルのコピーをエクスポートするには、[ファイル] > [ハイライト表示モデルのエクスポート... ] メニューをクリックします。差分項目をマージした場合には、同期化の実行を確認するメッセージが表示されます。その後、モデルの保存作を指定するダイアログボックスが表示されます。エクスポート対象のモデル名は、元のモデルと一致しますが、モデル名の末尾に "_highlighted" が付属されています。
Simulink のブロックまたはアノテーションの場合、背景色によって変更内容を識別します。なお、Simulink における変更項目のハイライト表示と同じ配色が、適用されています。Simulinkにおけるハイライト変更セクション を参照して下さい。
Stateflow オブジェクトの場合、接頭文字によって変更内容を識別します。使用される接頭文字は以下の通りです。オブジェクトが変更された場合には、「c_」、追加は「a_」、削除は「d_」、コンフリクトには「co_」が適用されています。なお現時点では、Stateflow にてオブジェクトのカラー表示がサポートされていないため、接頭文字を使用しています。
また、別の接頭文字が適用される、特殊なケースも存在します。Sate アクティビティの出力が可能な 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は、フィルター除外として記録されている全属性/要素における変更を無視します。
フィルター編集には、編集 ▷フィルター... メニューオプションを選択するか、又は ボタンをクリックします。比較の終了後に無視したい変更を除外することもできます。それには、無視したい要素または属性を右クリックし、希望の除外フィルターに追加します。結果は、直に更新されます。
内蔵フィルターのセットは、SimDiffに既に搭載されています。内蔵フィルターの属性または要素のリストを変更することはできません。しかし、その他のフィルターと同様に、イネーブルまたはディスエーブルにすることができます。
フィルター除外された要素は、SimDiffのモデル階層に アイコンで表示されます。フィルターされた属性は、属性タブに アイコンで表示されます。
属性フィルターは、マージに影響を与えません。そのため、属性変更のある要素がマージされる場合には、フィルター除外に関わらず、その属性全てがマージされます。配置に関連する属性のみがその例外となります。この属性は、フィルターされていない時のみマージされます。
サブシステムの比較
SimDiffは、モデルファイルだけでなく、モデルファイル内のサブシステムの比較とマージを実行することができます。モデルファイルの選択後、ユーザーは、モデルの比較またはマージの実行時に、使用するモデルファイル内のサブシステムを選択することができます。
サブシステムの比較により、ユーザーはモデルの一部に焦点を置くことができます。これにより、ユーザーはモデルのその他の部分の変更による背景雑音を減少させ、焦点を絞ることができます。また、SimDiffの短い比較時間を更に削ることもできます。
この機能を使用し、別々のサブシステムを互いに比較することもできます。これは、ブロックがリファクター(例えば、1つのサブシステムをその他に移動、または新しいサブシステムや新しいモデルの下に分類等)される場合に役に立ちます。事実、サブシステムをモデル全体と比較することもできます。
注意: ポートの移動により親システム内のラインの接続が切られる場合があるため、サブシステムのインポート/アウトポートのマージ実行時には特別な注意が必要となります。
Workspace 変数の比較
SimDiff のオプション機能を使用すると、MATLAB Base Workspace およびに Model Workspace から Workspace 変数を比較できます。
Workspace 変数を比較するには、以下の手順に従ってください。
- 1 SimDiff を開きます。
- 2 モデルを指定するフィールドの下部に表示された、[Workspace の比較] チェックボックスを選択します。
- 3 Workspace を設定する場合には、[設定する...] ボタンをクリックします。ここで表示されるダイアログボックスにて、コマンドやスクリプトを実行し、各モデルに適応した Workspace を設定することが可能です。MATLAB のパスは、MATLAB コマンドの入力または既存スクリプトの指定によって設定できます。設定作業が完了した後、プリセットを保存しておくと便利です。
- 4 差分を開始します。When 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セッションが閉じている場合、同期ボタンをクリックしてからマージ処理を続行することをお勧め致します。
- 2 保存せずにターゲットモデルを閉じる: モデルに保存されていない変更があり、保存せずにそのモデルを閉じた場合、次回のアンドゥ作業に失敗する場合があります。そのため、ターゲットモデルを未保存のまま閉じなれければならない場合、閉じた直後に同期ボタンをクリックすることをお勧め致します。
- 3 ターゲットモデルを変更する: ターゲットモデルにおいて手動で実行された変更がアンドゥ作業を妨害する場合があります。そのため、モデル変更後に同期する必要があります。
上記またはその他の理由によりアンドゥ作業に失敗した場合でも、SimDiffにおいて次のアンドゥ作業に進むことができます。
重要: 同期終了時、アンドゥ/リドゥの履歴は消去されるのでご注意下さい。
異なるMATLABで保存されたモデルの比較
SimDiffでは、異なるMATLABで保存されたモデルを比較することができます。 これは、比較モードのみにて実行することができます。マージモードでは、SimDiffは、システムにある最も類似した共通のより新しいMATLAB版にモデルをアップコンバートする必要があります。 アップコンバートはモデルの一時的コピーを作成し、アップコンバートされたモデルはその一時的コピーに保存されます。 左モデルがアップコンバートされ、出力モデルが指定されていない場合、マージが終了すると、左モデルはアップコンバートされたものに上書きされます。
一時的モデルコピー
比較やマージの実行に当たり、SimDiffがモデルの一時的コピーを作成する特別な状況があります。その状況とは:
- MATLABにおいてモデルファイル名が有効でない場合。これは、ファイル名がリポジトリシステムにより改名された場合に起こる時があります。
- モデルにおいてリンクが解除された場合。ライブラリリンクの解除セクションをご覧下さい。
- モデルのアップコンバージョンが必要とされる場合。異なるMATLABで保存されたモデルの比較セクションをご覧下さい。
モデルの一時的コピーが作成された場合、SimDiffは、GUIのモデルパスの隣にボタンを表示します。 このボタンをクリックすると、ファイル管理ツールが開かれ、対応する一時的モデルを選択します。
注意: マージモードにおいて、同期時もしくはSimDiffの終了時に、一時的ターゲットモデルで実行されたマージが原型ターゲットモデルに伝搬されます。
SimDiffは、Stateflow要素のマージもサポートしています。Stateflow要素の位置は操行に影響を与える場合があるため、Stateflowのマージ時には充分な注意を払う必要があります。Simulinkと同様にマージアクションを使って、必要に応じて位置を調節することができます。
バッチモードで SimDiff を使用する
スクリプトから SimDiff 実行する場合には、SimDiff バッチモードの実行ファイル、sd4.exe の呼び込みを行ってください。なお、モデルのマージにはユーザとの相互作動が必要なため、バッチモードではマージがサポートされておりませんのでご注意ください。
SimDiff インストール先を Windows のパス内で指定しておくと便利です。
sd4.exe の戻り値:
- -1: 異なるモデル
- 0: 同一のモデル
- <その他の値>: エラーを検出
バッチモードの 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 | 失敗 - 無効なプログラムの設定 |
注記 - 上記のコードは暫定的なものであり、今後のリリースで変更される可能性があります
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 ディレクトリにあるファイルをご参照下さい。
法定通知
SimDiff取扱説明書
著作権 (c) 2004-2024 EnSoft Corp.著作権法に基づく全権利、EnSoftの同意書なしに当取扱説明書の全体又は部分的コピー、複写、再分配することは禁じられています。ソフトウェアへの権利は、付随のエンドユーザーライセンス契約により管理されます。当取扱説明書の情報の正確性を保障するために最善の努力がなされています。EnSoftは、印刷や書記による誤りの責任を負いません。
EnSoft Corp.
2625 North Loop Drive Suite 2580
Ames, IA 50010 USA
Phone: +1-515-296-3253
Email: contactus@ensoftcorp.com
本書に言及されている会社や製品名は、各会社のトレードマークです。第三者製品の言及は、情報提供のみを目的とし、宣伝や推奨ではありません。EnSoftは、それらの製品の性能や使用に関する責任を負いません。