手順3: カテゴリーレシピをセットアップする
この手順では、フィードのカテゴリーレシピの構成を開始します。カテゴリーは、メディアをさまざまなコレクションやチャンネルにグループ化します。カテゴリーを使用してメディアを整理することで、すべてのビデオを1つの長いリストで管理する必要がなくなります。レシピ構成の全般的な概要については、レシピ構成の概要を参照してください。
カテゴリーレシピの構成
-
LightCastレシピファイルを複製して名前を変更していない場合は、前のトピックのレシピファイルのカスタマイズを参照してください。
注: 前のトピックでは、ファイル名の「LightCast」という部分を、「AcmeMedia」のような一意の名前にカスタマイズしました。以下の手順では、カスタマイズした部分を<プロジェクト名>として表しています。 -
<プロジェクト名>CategoriesRecipe.jsonファイル(app > assets > recipes内)を開きます。
デフォルトのカテゴリーレシピ構成は次のようになっています。
{ "cooker": "DynamicParser", "format": "json", "model": "com.amazon.android.model.content.ContentContainer", "translator": "ContentContainerTranslator", "modelType": "array", "query": "$..categories[*]", "queryResultType": "[]$", "matchList": [ "StringKey@mName" ], "keyDataType": "StringKey@keyDataPath" }
-
以下の表の説明に従って、ファイルの値を構成します。
注:query
とmatchList
は複雑であるため、これらの構成については、後続のカテゴリーレシピ: queryパラメーターとカテゴリーレシピ: matchListパラメーターの各トピックで説明します。キー 説明 cooker
レシピで定義されたパラメーターを受け取ってロジックを実行するユーティリティを定義します。つまり、レシピを「料理」するのがcookerです。この値は、デフォルトの
DynamicParser
のままにします。format
受信データフィードのデータ形式を指定します。指定できる値は
json
またはxml
です。model
データのコンテンツモデルを指定します。コンテンツモデルは、コンテンツの構造を提供し、その構造をFire App BuilderのUIにマッピングします。これはデフォルトの
com.amazon.android.model.content.ContentContainer
のままにします。translator
フィードのオブジェクトをFire App Builderのコンテンツモデルに変換するときに、トランスレーションとリフレクションのどちらを使用するかを指定します。トランスレーションの方が高速であり、推奨されます。トランスレーションを使用するには、この値をデフォルトの
ContentContainerTranslator
のままにします。代わりにリフレクションを使用する場合は、レシピからtranslator
パラメーター全体を削除します。modelType
フィードが配列であるか単一オブジェクトであるかを指定します。指定できる値は
array
またはsingle
です。ほとんどのフィードはarray
です。たとえば、JSONフィードが角かっこで囲まれている場合や、XMLフィードで山かっこが入れ子になっている場合は、array
を選択します。フィードが1つのオブジェクトとして構成されている場合は、single
を選択します。query
メディアフィードからカテゴリーを返すために使用されるクエリ。クエリの構文は、フィードの構造によって異なります。カテゴリーを取得するには、適切なクエリを作成する必要があります。JSONフィードの場合は、クエリ構文にJayway JsonPath構文(英語のみ)を使用します。XMLフィードの場合は、XPath式(英語のみ)を使用します。現時点では、このフィールドの値はそのままにします。これは、次の手順の カテゴリーレシピ:queryパラメーターで構成します。
queryResultType
query
パラメーターの結果が文字列のリストを返す場合は、このqueryResultType
パラメーターを追加して、値を[]$
に設定します。クエリの結果がオブジェクト(マップ)である場合は、このパラメーターを省略します(Fire App Builderでは、オブジェクトをJavaハッシュマップにプッシュする必要があるため、結果の型を把握する必要があります)。 現時点では、このフィールドの値はそのままにします。これは、次の手順の カテゴリーレシピ: queryパラメーターで構成します。matchList
query
パラメーターで定義したクエリからは、結果が返されます。この結果では、フィードで使用されている名前を、Fire App Builderのコンテンツモデルで使用される名前にマッピングする必要があります。matchList
パラメーターは、クエリの結果をFire App Builderのメディアカテゴリーの名前にマッピングします。現時点では、このフィールドの値はそのままにします。これは、後の手順の カテゴリーレシピ: matchListパラメーターで構成します。keyDataType
カテゴリーに関連するメディアオブジェクト。どのメディアをどのカテゴリーにグループ化するかを指定する必要があります。
matchList
と同様に、ターゲットとするアイテムを左側に記述し、@
とkeyDataPath
を続けて、それらのメディアオブジェクトをカテゴリーにマップして識別します。たとえば、StringKey@keyDataPath
のようになります。現時点では、このフィールドの値はそのままにします。これは、後の手順の カテゴリーレシピ:matchListパラメーターで構成します。
カテゴリーのないフィード
フィード内にカテゴリーがなく、カテゴリーごとに個別のフィードを用意している場合は、Navigator.jsonの構成時にカテゴリー名をハードコードできます。これにより、特定のフィードに含まれているすべてのビデオが特定のカテゴリーにグループ化されます。この方法の詳細については、カテゴリーのハードコードを参照してください。
次のステップ
これでカテゴリーレシピの基本的なプロパティが構成されたので、queryパラメーターについて詳しく見ていきましょう。次の手順の カテゴリーレシピ:queryパラメーターに進みます。