SimDiffは、Simulinkのライセンス使用量を最小限に抑えながら、Simulinkを最新のDevOpsプラットフォームに統合するための最適なソリューションです。複雑なメカトロニクスシステムを開発する大半の主要企業に導入されており、Git 本来のワークフローに必要な精度と速度を兼ね備えた、唯一のSimulink用 差分・マージツールです。3万以上のブロックで構成される大規模モデルであっても、わずか10秒未満で処理が可能です。SimDiffのピアレビューファイルにより、大規模な開発チームにおいて、レビュー担当者はSimulinkのライセンスなしで、モデルの変更点を可視化し確認できます。GitLabやAzure DevOpsをはじめとする主要プラットフォームにおけるDevOpsコラボレーション機能との連携において、SimDiffに匹敵するツールは他に存在しません。さらにSimDiff Automationを活用すれば、パイプラインやビルドスクリプトから変更履歴を自動生成することも可能です。
本デモでは、SimDiffの主な機能の概要をご紹介します。ぜひ無料トライアルをお申し込みいただき、実際のモデルでお試しください!
SimDiffは、Simulinkモデルの比較、変更箇所のフィルタリング、監査、レポート作成、およびマージにご活用いただけます。デスクトップツールからDevOpsソリューションへと移行する中で導入された新機能には、連携機能の強化、サブシステムスナップショット、ピアレビュー、そしてDockerによる自動化をサポートするAutomationなどがあります。
ここでは、ローカルのワークステーションで作業を行うエンジニア向けに、完全な機能(高度な比較・マージ、監査、レポート作成、ピアレビューなど)を備えた SimDiff Teamについてご紹介します。その他のエディション(Review、Automation、Professional、または Basicなど)をご検討の場合は、購入のご案内からライセンスおよびエディションの概要をご確認ください。
ピアレビューファイル
SimDiff の新機能ピアレビューにより、Simulink モデルの変更に関するコラボレーションが効率化されます。各ピアレビューファイルには、モデルの比較中に検出された差分のスナップショットと詳細な一覧が含まれています。静的なレポートとは異なり、これらのファイルはSimDiff で直接開くことができるため、レビュー担当者が SimDiff に組み込まれたモデルビューアーを使用して、インタラクティブに差分を調査・可視化することができます。
ディスカッションスレッドに添付できるサブシステムスナップショットを作成したり、モデル変更の段階的なレビューや監査履歴の追跡を実行することも可能です。
ピアレビューファイルは、SimDiff のユーザーインターフェイスから生成することも、
またはパイプラインからSimDiff Automationを使用してスクリプトで生成することもできます。
たとえば、同僚からチャットで、マージリクエスト(またはプルリクエスト)の変更内容を確認して欲しいと頼まれ、そのメッセージにはピアレビューファイルが添付されていた場合を想像してみてください。SimDiff でピアレビューファイルを開けば、SimDiff のモデルビューワーを使用して、変更点をグラフィカルに簡単に確認できます。尚、モデルを可視化するために、Simulink ライセンスも MATLAB のインストールも必要ありません。レビューを実行するには2つのワークフローが考えられます。サブシステムスナップショット機能を使うと、ディスカッションスレッド内の特定の差分に関するコメントに、スナップショットを添付することができます。
あるいは、ピアレビューの監査 機能を使って、SimDiff で直接、差分を確認しコメントを付けることも可能です。作業が完了したら、変更内容に関するレビューが反映された、自動更新済みのピアレビューファイルを共有できます。
Subsystem Snapshot
SimDiff の新機能ピアレビューにより、Simulink モデルの変更に関するコラボレーションが効率化されます。各ピアレビューファイルには、モデルの比較中に検出された差分のスナップショットと詳細な一覧が含まれています。静的なレポートとは異なり、これらのファイルはSimDiff で直接開くことができるため、レビュー担当者が SimDiff に組み込まれたモデルビューアーを使用して、インタラクティブに差分を調査・可視化することができます。
ディスカッションスレッドに添付できるサブシステムスナップショットを作成したり、モデル変更の段階的なレビューや監査履歴の追跡を実行することも可能です。
ピアレビューファイルは、SimDiff のユーザーインターフェイスから生成することも、
またはパイプラインからSimDiff Automationを使用してスクリプトで生成することもできます
例えば、マージリクエストやプルリクエストの変更内容についてコメントを追加したい場合、コメントを入力した後、スナップショットをマージリクエストやプルリクエストに直接ドラッグ&ドロップするだけで済みます。右の画像では、GitLab のマージリクエストコメント欄にあるコメントと対応するスナップショットが表示されています。
変更点の検討に、PowerPoint を使うユーザーもいます。そのような場合は、「クリップボードにコピー」ボタンを使用して、お使いのプレゼンテーションソフトに貼り付けることができます。
他にも、同僚にメールを送って、変更点のレビューを依頼することできます。この場合も、メールの本文にスナップショットをドラッグ&ドロップし、さらにSimDiffのピアレビューファイルを添付して、レビュー用に送信することも可能です。
尚、ピアレビューファイルを使用する際は、Simlink ライセンスや MATLAB は必要ありません。
ピアレビューでの監査
SimDiff には、差分を監査するためのレガシーワークフローもあります。本来、このワークフローはコンプライアンス対応や文書化を目的として導入されました。このワークフローは、ピアレビュー機能で拡張され、現在では監査を段階的に行うことができるようになっています。
基本的には、いくつかの変更点をレビューした後、ピアレビューファイルを同僚に渡して、引き続きレビューを進めてもらうことができます。
SimDiff でレビューをすると、監査情報は自動的にピアレビューファイルに保存されます。
監査の進捗状況は、ピアレビューファイルの概要欄に表示されます。この欄には、「コピー」ボタンがあり、GitLab 上で情報を供給して、他の人が引き継きレビューをすることができます。さらに、ピアレビューを添付したり、メールで送ることもできるので、同僚にレビューを引き継いでもらうことも可能です。
SimDiff によるモデルの比較
SimDiff は .mdl または .slx 形式のモデルの比較をサポートします。比較とマージの2つのモードから選択できます。比較モードは、変更を確認するために最適化されており、マージモードでは変更をマージできます。
変更のレビュー
SimDiff の結果ウィンドウには、結果を確認できる2つのツリーがあります。
左側のツリーは、変更が実行されたSimulinkモデルです。右側のツリーは、他のユーザーによって変更が実行されたたSimulink モデルです。各差分には番号が振られ、色付けされています。青は変更、赤は削除、緑は追加を示します。これらの色は、環境設定でカスタマイズできます。また、SimDiffの色とアイコンを説明する凡例(右上のボタン)も含まれています。ウィンドウの下には、ステータスバーがあり、比較にかかった時間とモデルに加えられた変更の数を表示します。各項目にマウスを置くと、詳細が表示されます。
SimDiff の優れた機能の一つは、そのスピードです。SimDiffに付属しているサンプルモデルの比較は0.5秒以内に行われ、大きなモデルでも迅速に比較が実行されます。SimDiff は、数千ブロックのモデルを2.5秒以内で、30,000ブロック以上を含む20MB MDLファイルを10秒以内で比較できます。この迅速かつ正確な比較は、EnSoft社におけるグラフ理論研究の結果です。
具体的な変更を見てみましょう。
こちらの図では、Actual Speedブロックが水色でハイライト表示されています。これはブロックに1つ以上の変更された属性があることを意味しています。どちらのツリーでも、ブロックをクリックすると、SimDiff がウィンドウの下部に属性の比較を表示します。定数ブロックの値が400から500に変更されたことが、属性パネルで確認できます。
Simulink の差分を表示するには、差分をダブルクリックするか、差分を選択した状態でツールバーボタンをクリックします。SimDiff はSimulink で現在選択されているブロックをハイライト表示します。デフォルトでは、SimDiffの2つのツリー表示で使用されている色と一致するように、変更、削除、追加されたブロックもハイライト表示されます。SimDiff のツールバーにはナビゲーションボタンがあり、変更を1つずつ段階的に進めることができます。
次に、同じブロック内で並列編集が行われた別の種類の変更を見てみましょう。
赤いバーは、これが競合する変更であることを示しています。属性パネルでは、左と右の両方のモデルで名前が変更されたため、競合が起きていることが示されています。
変更のフィルター
ブロック名の違いを無視したいとしましょう。属性パネルで、Name属性を右クリックして、フィルターに追加できます。name属性をフィルターで除外することにより、SimDiff はブロックが変更されたとみなさなくなります。デフォルトでは、属性フィルターは全ての要素タイプに適用されます。例えば、Kalman Filter サブシステム の名前は、Kalman Filter からRadar Kalman Filter に変更されましたが、属性パネルのフィルターアイコンでご覧いただけるように、この変更がフィルターで除外されています。
この変更は、関数名がサブシステムの名前に基づくため、生成されたコードのインターフェイスに影響します。そのため、名前のフィルターを特定のタイプのブロックに限定する必要があるでしょう。それには、フィルターを微調整する必要があります。これはフィルター編集 (編集 > フィルター…) から実行できます。
フィルター編集から、フィルターを追加、編集、削除できます。必要に応じて、有効または無効にできます。SimDiff には、ほとんどの場合重要でない属性設定を除外できるビルトインフィルターが含まれています。必要に応じて、ビルトインフィルターを無効にできます。
この場合、Name フィルターを修正すると、特定の要素にのみ適応させることができます。現段階では、フィルターは全ての要素に適用されます。フィルターからサブシステムを除外してみましょう。要素の名前を入力するか、または右側のリストから要素の名前をコピーして貼り付けることができます。
サブシステムの名前がフィルター処理されなくなり、SimDiffがサブシステムブロックの変更を検出することが分かります。
監査
SimDiff はデフォルトで。差分のないブロックを含む全てのモデル内容を表示します。しかし、ツリーの上部にあるボタンで、表示をカスタマイズできます。例えば、「全変更」をクリックすると、変更のある項目のみを表示するように調整できます。
この表示は、レビューの過程で役に立ちます。レビュー担当者は、レビュー中に右側の列の変更にチェックを入れることで、進捗状況を追跡できます。レビューの進行状況は、ステータスバーに表示されます。
監査パネルでは、選択したモデル要素に、タグやメモなどの監査情報を追加することができます。ユーザー名と日付は、自動的に入力されます。
監査情報をXML ファイルに保存して、後でSimDiff に読み込むことができます。更に、監査情報を変更レポートに含むこともできます。変更レポートは、HTML またはXML形式で保存することができます。HTMLは表示に適した形式である一方、外部ツールを使った自動後処理にはXMLが便利です。
レポート
SimDiff では、比較レポートを作成できます。
レポートには、モデルの情報、凡例、差分の概要、及び詳細な表が含まれます。簡単にナビゲーションできるようにリンクさせた目次もあります。SimDiff はSimulink を使用して、変更レポートのスクリーンショットを生成できます。SimDiff アプリケーションと同様に、差分には番号が振られています。スクリーンショットの画像をクリックすると、フル解像度で表示できます。
変更のマージ
マージモードでは、マージ結果を保存する場所を指定する必要があります。
慣例では、これは通常、左側のモデルです。しかし、別の出力モデルファイルを用意することもできます。
マージモードには、比較モードとほぼ同じ機能がありますが、右側のモデルの変更を左側のモデル(または出力モデル)にマージすることもできます。ステータスバーでマージの進行状況を確認できます。
例として、少し高度な変更を見てみましょう。Terminator ブロックが、Radar Kalman Filter サブシステムの中から削除され、新しい Terminator ブロックがサブシステムの外側に追加されました。この Terminator ブロックを、モデルに追加する必要があります。これを実行するには、マージの矢印をクリックするだけで、SimDiff が変更を追加します。
SimDiff はSimulink でマージ動作を適用します。これらの修正は、Simulink モデルの未保存の変更として表示されます。マージされたブロックをモデル内で確認し、移動させることができます。
この信号は、Terminator ブロックに接続していて、出力モデルの Kalman Filter にまだ存在していないポートにも接続されています。SimDiff を使ってマージをすると、何が起こるでしょうか。SimDiff は依存関係を検知し、必要な3つ目の出力ポートを作成します。SimDiffウィンドウの下部にある依存関係タブを見ると、SimDiffにより検出された依存関係が確認できます。
ここでは、コピーした行がTerminatorブロックとKalman Filter の3つ目の出力ポートの両方に依存していることが分かります。この様にSimDiffは出力ポートを作成して適確な名前を付けます。マージ動作を元に戻したり、やり直したりすることもできます。
サンプルモデルでは、まだマージされていない変更がいくつかあります。「階層マージ」ボタンを使って、その下のサブシステムを含む、サブシステム全体の内容をマージできます。
ステータスバーは、SimDiff が競合しない変更全てをマージしたことを示していますが、まだ1つ競合する変更があります。ユーザーだけが変更が正しいかを判断できるため、安全のため、階層マージは競合する変更をスキップします。「次の競合」ボタンを使用すると、競合する変更へジャンプできます。この場合は、Mux ブロックで1つ競合が見られます。
他のユーザーの変更の方が、あなたの変更より優れているように見えるため。競合する変更をマージして先に進んだとします。これにより、全ての変更がマージされました。マージが終了したら、出力モデルを保存するだけです。
以上が、SimDiff の概要です。SimDiff には、モデルのハイライト表示されたコピーの抽出、サブシステムの差分、ワークスペースの比較、ライブライリンクの解除、そしてMATLAB とコマンドラインインターフェイス など、こちらのページでは説明されていない他の機能もあります。
SimDiffトライアルのお申し込み
SimDiff の機能を実際に体験してみませんか。ご希望のお客様は、以下のフォームに必要事項をご記入の上、お申し込みください。
バージョン管理システムの統合
SimDiff は多くのバージョン管理システム(VCS) と統合されており、セットアップ手順の詳細をまとめた記事が提供されています: ClearTeam Explorer, Git, Git+Git Extensions, Git+SourceTree, Mercurial, TortoiseGit, and TortoiseSVN. リンク先の情報、及び表示されていないバージョン管理システムについては、ENSOFT のサポート担当にご連絡ください。
SimDiff をダウンロードする
SimDiffシステム要件
SimDiff は、過去20年間に渡る全ての Windows バージョンと一般的な Linux バージョンをサポートしています。SimDiff は、MATLAB/Simulink がインストールされていなくても差分計算をすることができますが、一部の高度な機能においては、MATLAB/Simulink を使用します。SimDiff はR2007b 以降から最新版までをサポートしております。SimDiff のシステム要件の詳細はこちらをご参照ください。

