最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

プログラムの依存関係の特定

作成したプログラムが、どの関数またはスクリプトに依存しているかを知る必要がある場合は、以下のいずれかの方法を使用します。

プログラム ファイル依存関係の簡単な表示方法

ある関数から参照されるすべてのプログラム ファイル名を簡単に表示するには、以下の手順に従います。

  1. clear functions と入力して、メモリからすべての関数をクリアします (下のメモを参照)。

    メモ:

    clear functions では、mlock によってロックされている関数はクリアされません。ロックされている関数 (inmem を使用して調査可能) がある場合は、munlock を使用してロックを解除してから、ステップ 1 を再度行ってください。

  2. 調べたい関数を実行します。異なった引数を使用すると同じ関数を呼び出しても結果が異なるため、このステップでは選択する関数の引数が重要になります。

  3. inmem」と入力して、この関数の実行時に使用されるすべてのプログラム ファイルを表示します。使用される Mex ファイルも調べる場合は、次のように追加の出力を指定します。

    [mfiles, mexfiles] = inmem

プログラム ファイル依存関係の詳細な表示方法

依存する関数についての情報の詳細を表示するには、関数 matlab.codetools.requiredFilesAndProducts を使用します。プログラム ファイルの他に、matlab.codetools.requiredFilesAndProducts は特定の関数がどの MathWorks® 製品に依存するかを表示します。Image Processing Toolbox™ の関数 edge を呼び出す関数 myFun がある場合、次のようになります。

[fList,pList] = matlab.codetools.requiredFilesAndProducts('myFun.m');
fList
fList = 

    'C:\work\myFun.m'

必要なプログラムファイルは、関数ファイル myFun だけです。

{pList.Name}'
ans = 

    'MATLAB'
    'Image Processing Toolbox'

ファイル myFun.m は、MATLAB® と Image Processing Toolbox の両方を必要とします。

フォルダー内での依存関係

依存関係レポートには、フォルダー内の MATLAB コード ファイル間の依存関係が表示されます。これは以下を決める場合に使用します。

  • フォルダー内で、そのフォルダー内の他のファイルが必要とするファイルはどれか

  • ファイルを削除すると実行できなくなるファイルが現在のフォルダー内にあるか

  • 呼び出されたファイルが現在のフォルダーからなくなっていないか

レポートには、次のものがリストされません。

  • toolbox/matlab フォルダーのファイル。これは、すべての MATLAB がこれらのファイルをもっているためです。

    したがって、組み込み関数ファイルを隠す関数ファイルを使用すると、MATLAB によってリストから両方のファイルが除外されます。

  • 無名関数から呼び出されたファイル

  • クラス ファイルのスーパークラス

  • evalevalcrunload、関数ハンドル、コールバックから呼び出されたファイル

    MATLAB はこれらのファイルを実行時まで解決しないため、依存関係レポートではこれらを検出できません。

  • 一部のメソッドファイル

    依存関係レポートは、MATLAB ファイルで呼び出すクラス コンストラクターを検出します。しかし、レポートでは、結果のオブジェクトで実行されるメソッドを特定できません。これらのメソッドは、別のメソッド ファイル、またはメソッド ファイルのスーパークラスに属するファイルとして、classdef ファイルに存在することができます。

依存関係レポートの有意義な結果を得るには以下が必要になります。

  • レポートを実行する場合の検索パスは、フォルダー内でファイルを実行する場合と同じにする (すなわち、現在のフォルダーを検索パスの最上位にする)

  • レポート実行の対象のフォルダー内のファイルは、検索パスの変更や操作を行わない

  • 同名の異なるプログラム要素の結果が名前衝突を起こさないようにするために、フォルダー内のファイルは変数を読み込まない

メモ

特定のファイルを実行するために別のユーザーが必要とする MATLAB コード ファイルを判断するために使用しないでください。代わりに、関数 matlab.codetools.requiredFilesAndProducts を使用してください。

依存関係レポートの作成

  1. [現在のフォルダー] ペインを使用して、依存関係レポートの作成対象とするファイルが格納されているフォルダーに移動します。

    メモ

    パスが UNC (Universal Naming Convention) パス名である場合、すなわちパスが \\ で始まる場合は、レポートを実行できません。代わりに、システム上の実際のハード ドライブまたはマッピングされているネットワーク ドライブを使用します。

  2. 現在のフォルダー ペインで をクリックし、[レポート][依存関係レポート] を選択します。

    依存関係レポートは MATLAB Web ブラウザーで開かれます。

  3. 必要に応じて以下のようにレポート内の 1 つまたは複数のオプションを選択します。

    • フォルダー内の各ファイル (親) によって呼び出されるすべての MATLAB コード ファイル (子) の一覧を表示するには、[子関数の表示] を選択します。

      レポートには各子関数がある場所 (指定のツールボックス内など) も示されます。子関数の場所が不明として表示される場合は、次の理由が考えられます。

      • 子関数が検索パス上にない

      • 子関数が現在のフォルダー内にない

      • ファイルが移動または削除された

    • 各 MATLAB コード ファイルを呼び出すファイルの一覧を表示するには、[親関数を表示] を選択します。

      レポートに表示される親関数 (呼び出し元) は、現在のフォルダー内の関数に制限されています。

    • レポート内にローカル関数を含めるには、[サブ関数の表示] を選択します。レポートには、ローカル関数がメイン関数の直後にグレーで強調表示されます。

  4. [現在のフォルダーでレポートを実行] をクリックします。

依存関係レポートの読み取りと取り扱い

次の図には、依存関係レポートを示しています。これは、chirpy.m が Signal Processing Toolbox™ の 2 つのファイルと Image Processing Toolbox の 1 つのファイルを呼び出していることを示します。また、go.m が、現在のフォルダーにある mobius.m を呼び出していることも示します。

依存関係レポートは以下を含みます。

  • MATLAB ファイル リスト

    依存関係レポートを実行したフォルダーのファイル リスト。この列のリンクをクリックすると、エディターにファイルが開かれます。

  • MATLAB ファイルによって呼び出された関数。

    この列のリンクをクリックすると、同じ行にリストされた MATLAB ファイルが開かれ、呼び出された関数への最初の参照が示されます。たとえば、前の図に示した依存関係レポートが表示されているとします。\images\images\erode.m をクリックすると、chirpy.m が開かれ、カーソルが erode を参照する最初の行に配置されます。つまり、erode.m は開かれません。

  • 複数のクラス メソッド

    レポートは静的な解析であるため、実行時のデータ型を判別することはできず、ファイルに必要な特定のクラス メソッドを識別することはできません。複数のクラス メソッドが参照したメソッドと一致する場合、依存関係レポートはファイル名の隣にクエスチョン マークを挿入します。次の図には、クエスチョン マークが示されています。

    クラス メソッドのリストを表示するには、MATLAB が使用する指定名のクエスチョン マークをクリックします。MATLAB は検索パス上にあり、指定した名前に一致する "ほぼすべての" メソッド ファイル (例の場合は freqresp.m) をリストします。使用しないクラス メソッドや MATLAB の組み込み関数をリストが含む場合は考慮しないでください。

    どのファイルを MATLAB が使用するかを判別する必要はありません。MATLAB はどのメソッドを使用するかを、プログラム実行時呼び出されるオブジェクトによって判別します。