Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

JSON での MATLAB 関数シグネチャ

RESTful クライアントがディスカバリー API を使用して MATLAB® Production Server™ にデプロイされた MATLAB 関数の関数シグネチャを取得するには、デプロイ可能なアーカイブをパッケージ化する際に MATLAB 関数に関する情報を JSON ファイルに組み込む必要があります。

Production Server コンパイラ アプリにデプロイする MATLAB 関数を追加したら、[MATLAB 関数シグネチャ ファイルを含める] セクションで [ファイルの作成] ボタンを選択します。この操作により、<projectName>functionSignatures.json という名前で JSON ファイルのテンプレートが作成されます。

<projectName>functionSignatures.json ファイルは単一の JSON オブジェクトです。スキーマ バージョンと "関数オブジェクト" のリストが含まれています。各関数オブジェクトには "シグネチャ オブジェクト" のリストが含まれ、各シグネチャ オブジェクトには "引数オブジェクト" のリストが含まれています。

MATLAB 関数が入力または出力として struct または cell データ型をもつ場合は、"typedef オブジェクト" を使用して JSON ファイルにそれらの説明を追加できます。

JSON ファイルでは datetime 値と enumeration 値の説明の追加はサポートされていませんが、MATLAB 関数は入力または出力としてこれらのデータ型をもつことができます。

Discovery Serviceを使用して、サーバーから JSON オブジェクト ファイルにアクセスできます。

警告

関数 validateFunctionSignaturesJSON (MATLAB) では、MATLAB Production Server<projectName>functionSignatures.json の検証はサポートされていません。

Example of a function signature JSON file.

スキーマ バージョンの値は、<major#>.<minor#>.<patch#> という形式の JSON 文字列です。ここで、各番号は非負の整数である必要があります。

関数オブジェクト

関数オブジェクトの名前は、プロジェクトに追加する MATLAB 関数の名前から自動的に継承されます。関数オブジェクトの目的行は、MATLAB 関数で指定されている関数の説明から継承されます。各関数オブジェクトの値がシグネチャ オブジェクトです。

{
  "functionName1": { signatureObj1},
  "functionName2": { signatureObj2}
}

シグネチャ オブジェクト

シグネチャ オブジェクトは、関数の入力引数と出力引数およびサポートされているプラットフォームのリストを定義します。プロパティの値は引数オブジェクトの配列です。

{
  "functionName1":
  {
     "inputs": [ argumentObj1, argumentObj2 ]
  }
}
各シグネチャに次のプロパティを含めることができます。

プロパティ説明値の JSON データ型

inputs

関数の入力引数のリスト

引数オブジェクトの配列

outputs

関数の出力引数のリスト

引数オブジェクトの配列

引数オブジェクト

引数オブジェクトは、入力引数と出力引数のそれぞれについての情報を定義します。

{
  "functionName1":
  {
     "inputs":
     [
        {"name":"in1",  "type":["double"], "purpose":"<input 1 description>"},
        {"name":"in2",  "type":["logical"], "purpose":"<input 2 description>"}
     ]
  }
}
JSON ファイルにおける入力の出現順序は重要です。たとえば、関数 functionName1 への呼び出しでは in1in2 の前になければなりません。

各引数オブジェクトに次のプロパティを含めることができます。

 name — 引数の名前

 type — 引数のデータ型

 size — 配列の次元

 purpose — 引数の説明

typedef オブジェクト

typedef オブジェクトは、cell 配列および構造体を定義します。typedef オブジェクトを追加するのは、引数オブジェクトの値が cell または構造体である場合だけです。[Production Server コンパイラ] アプリによって生成される JSON ファイル テンプレートには、既定ではこのオブジェクトはありません。

スキーマでは、typedef オブジェクトは名前 _typedefs を使用して、その値を 1 つ以上の cell または構造体オブジェクトの名前として示します。型は引数オブジェクトと同じです。

同種 cell 配列の使用例: MATLAB 関数 sortinput が入力として cell 配列を受け入れて、出力として cell 配列を返し、入力の各 cell が構造体で構成される場合、その JSON 表現は次のようになります。

{
    "_schemaVersion": "1.1.0",
    "_typedefs" : {
        "struct_names_scores_of_students": {
            "purpose": "Names and scores of students",
            "type": "struct",
            "fields": [
                {"name": "Name",  "type": "char"},
                {"name": "Score", "type": ["double","size=1,1"]}
            ]
        },
        "cell_student_information": {
            "purpose": "Cell representing student information",
            "type": "cell",
            "elements": {
                "type": "struct:struct_names_scores_of_students"
            }
        }
    },
    "sortinput": {
        "inputs": [
            {
                "name": "unsorted_input",
                "type": ["cell:cell_student_information"],
                "purpose": "Unsorted list of students and their scores"
            }
        ],
        "outputs": [
            {
                "name": "sorted_output",
                "type": ["cell:cell_student_information"],
                "purpose": "Sorted list of students with respect to their scores"
            }
        ]
    }
}

異種混合 cell 配列の使用例: MATLAB 関数 organize が入力として文字、正方行列、および string を含む長さが 3 の cell 配列を受け入れて、出力として double のベクトルを返す場合、その JSON 表現は次のようになります。

{
       "_typedefs": {
           "cell_het_mydata": {
               "purpose": "cell containing character, matrix, and string",
               "type" : "cell",
               "elements" : [
                   { "type": ["char", "size=1,1"], "purpose": "cell element 1 is a character" },
                   { "type": ["double", "size=N,N"], "purpose": "cell element 2 is a square matrix" },
                   { "type": "char", "purpose": "cell element 3 is a string" }
           ]
       },
       "organize": {
           "inputs": [
               {
                   "name": "data",
                   "type": ["cell:cell_het_mydata","size=3,1"],
                   "purpose": "heterogenous cell array"
               }
           ],
           "outputs": [
               {
                   "name": "numerator",
                   "type": "double",
                   "purpose": "result of function"
               }
           ]
       }
   }

関連するトピック