JSON での MATLAB 関数シグネチャ
RESTful クライアントがディスカバリー API を使用して MATLAB® Production Server™ にデプロイされた MATLAB 関数の関数シグネチャを取得するには、デプロイ可能なアーカイブをパッケージ化する際に MATLAB 関数に関する情報を JSON ファイルに組み込む必要があります。
Production Server コンパイラ アプリにデプロイする MATLAB 関数を追加したら、[MATLAB 関数シグネチャ ファイルを含める] セクションで [ファイルの作成] ボタンを選択します。この操作により、 という名前で JSON ファイルのテンプレートが作成されます。<projectName>functionSignatures.json
ファイルは単一の JSON オブジェクトです。スキーマ バージョンと "関数オブジェクト" のリストが含まれています。各関数オブジェクトには "シグネチャ オブジェクト" のリストが含まれ、各シグネチャ オブジェクトには "引数オブジェクト" のリストが含まれています。<projectName>functionSignatures.json
MATLAB 関数が入力または出力として struct または cell データ型をもつ場合は、"typedef オブジェクト" を使用して JSON ファイルにそれらの説明を追加できます。
JSON ファイルでは datetime 値と enumeration 値の説明の追加はサポートされていませんが、MATLAB 関数は入力または出力としてこれらのデータ型をもつことができます。
Discovery Serviceを使用して、サーバーから JSON オブジェクト ファイルにアクセスできます。
警告
関数 validateFunctionSignaturesJSON (MATLAB) では、MATLAB Production Server の の検証はサポートされていません。<projectName>functionSignatures.json

スキーマ バージョンの値は、<major#>.<minor#>.<patch#> という形式の JSON 文字列です。ここで、各番号は非負の整数である必要があります。
関数オブジェクト
関数オブジェクトの名前は、プロジェクトに追加する MATLAB 関数の名前から自動的に継承されます。関数オブジェクトの目的行は、MATLAB 関数で指定されている関数の説明から継承されます。各関数オブジェクトの値がシグネチャ オブジェクトです。
{
"functionName1": { signatureObj1 },
"functionName2": { signatureObj2 }
}シグネチャ オブジェクト
シグネチャ オブジェクトは、関数の入力引数と出力引数およびサポートされているプラットフォームのリストを定義します。プロパティの値は引数オブジェクトの配列です。
{
"functionName1":
{
"inputs": [ argumentObj1, argumentObj2 ]
}
}| プロパティ | 説明 | 値の JSON データ型 |
|---|---|---|
| 関数の入力引数のリスト | 引数オブジェクトの配列 |
| 関数の出力引数のリスト | 引数オブジェクトの配列 |
引数オブジェクト
引数オブジェクトは、入力引数と出力引数のそれぞれについての情報を定義します。
{
"functionName1":
{
"inputs":
[
{"name":"in1", "type":["double"], "purpose":"<input 1 description>"},
{"name":"in2", "type":["logical"], "purpose":"<input 2 description>"}
]
}
}functionName1 への呼び出しでは in1 が in2 の前になければなりません。各引数オブジェクトに次のプロパティを含めることができます。
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"
}
]
}
}