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 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" } ] } }