

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# GraphQL のスカラー型
<a name="scalars"></a>

 GraphQL オブジェクトタイプには名前とフィールドがあり、これらのフィールドにはサブフィールドを使用できます。最終的には、オブジェクトタイプのフィールドを、クエリの各要素を表す*スカラー*型に解決する必要があります。オブジェクトタイプとスカラーの詳細については、GraphQL ウェブサイトの「[スキーマとタイプ](https://graphql.org/learn/schema/)」を参照してください。

GraphQL スカラーのデフォルトセットに加えて、AWS AppSync では *AWS* プレフィックスで始まる**サービス定義**のスカラーも使用できます。AWS AppSync では**ユーザー定義** (カスタム) スカラーの作成はサポートしていません デフォルトまたは *AWS* スカラーのいずれかを使用する必要があります。

カスタムオブジェクトタイプのプレフィックスとして *AWS* を使用することはできません。

次のセクションはスキーマタイピングのリファレンスです。

## デフォルトスカラー
<a name="graph-ql-base-scalars"></a>

 GraphQL は、次のデフォルトスカラー を定義します。

### デフォルトのスカラーのリスト
<a name="graph-ql-base-scalars-list"></a>

`ID`  
オブジェクトの一意な識別子。このスカラーは、`String` のようにシリアル化されますが、人間が読めることは意図していません。

`String`  
UTF-8 文字シーケンス。

`Int`  
-(231) と 231-1の間の整数値。

`Float`  
IEEE 754 浮動小数点値

`Boolean`  
ブール値 (`true` または `false`)。

## AWS AppSync スカラー
<a name="graph-ql-aws-appsync-scalars"></a>

AWS AppSync は次のスカラーを定義します。

### AWS AppSync スカラーリスト
<a name="graph-ql-aws-appsync-scalars-list"></a>

`AWSDate`  
拡張機能[ISO 8601 の日付](https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates)形式の文字列`YYYY-MM-DD`。

`AWSTime`  
拡張機能[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Times)形式の文字列`hh:mm:ss.sss`。

`AWSDateTime`  
拡張機能[ISO 8601 の日時番号](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations)形式の文字列`YYYY-MM-DDThh:mm:ss.sssZ`。

**注記**  
`AWSDate`、`AWSTime`、および `AWSDateTime` スカラーは、必要に応じて[タイムゾーンオフセット](https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators)に含むことができます。例えば、値 `1970-01-01Z`、`1970-01-01-07:00`、 および `1970-01-01+05:30` はすべて `AWSDate` に有効です。タイムゾーンのオフセットは、`Z`(UTC)、または時間と分 (およびオプションで秒) のオフセットのいずれかである必要があります。例えば、`±hh:mm:ss`。ISO 8601 標準には含まれていませんが、タイムゾーンオフセットの第 2 フィールドは有効と見なされます。

`AWSTimestamp`  
`1970-01-01-T00:00Z` 前後の秒数を表す整数値。

`AWSEmail`  
[RFC 822](https://tools.ietf.org/html/rfc822)で定義される `local-part@domain-part` 形式のメールアドレス。

`AWSJSON`  
JSON 文字列。すべての有効な JSON コンストラクトは、リテラルな入力文字列としてではなく、マップ、リスト、スカラー値として自動的に解析され、リゾルバーマッピングテンプレートにロードされます。引用符で囲まれていない文字列、または無効な JSON は GraphQL 検証エラーになります。

`AWSPhone`  
電話番号 この値は文字列として保存されます。電話番号には、スペースまたはハイフンのいずれかを指定して、数字グループを区切ることができます。国番号のない電話番号は、[北米番号計画 (NANP)](https://en.wikipedia.org/wiki/North_American_Numbering_Plan)に紐づいている米国/北米の電話番号とみなされます。

`AWSURL`  
[RFC 1738](https://tools.ietf.org/html/rfc1738)によって定義される URL。例えば、`https://www.amazon.com/dp/B000NZW3KC/`、`mailto:example@example.com` です。URL にはスキーマ (`http`,`mailto`) および 2 つのフォワードスラッシュ (`//`) をパス部分に入れる必要があります。

`AWSIPAddress`  
有効な IPv4 または IPv6 アドレス。IPv4 アドレスはクアッドドット表記で想定されます (`123.12.34.56`)。IPv6 アドレスは、角カッコで囲まれていないコロン区切りの形式で想定されます (`1a2b:3c4b::1234:4567`)。オプションの CIDR サフィックス (`123.45.67.89/16`) を含めることで、サブネットマスクを示すことができます。

## スキーマの使用例
<a name="example-schema-usage"></a>

以下に示す GraphQL スキーマの例は、すべてのカスタムのスカラーを「オブジェクト」として使用するとともに、基本的なput、get、および list 操作にリゾルバーリクエストとレスポンステンプレートを使用しています。最後に、 クエリとミューテーションを実行するときに、この をどのように 使用できるかの例を示します。

```
type Mutation {
    putObject(
        email: AWSEmail,
        json: AWSJSON,
        date: AWSDate,
        time: AWSTime,
        datetime: AWSDateTime,
        timestamp: AWSTimestamp,
        url: AWSURL,
        phoneno: AWSPhone,
        ip: AWSIPAddress
    ): Object
}

type Object {
    id: ID!
    email: AWSEmail
    json: AWSJSON
    date: AWSDate
    time: AWSTime
    datetime: AWSDateTime
    timestamp: AWSTimestamp
    url: AWSURL
    phoneno: AWSPhone
    ip: AWSIPAddress
}

type Query {
    getObject(id: ID!): Object
    listObjects: [Object]
}

schema {
    query: Query
    mutation: Mutation
}
```

`putObject` のリクエストテンプレートは次のようになります。`putObject` は `PutItem` オペレーションを使用して Amazon DynamoDB テーブル内の項目を作成または更新します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。

```
{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
    },
    "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args)
}
```

`putObject` のレスポンステンプレートは結果を返します。

```
$util.toJson($ctx.result)
```

`getObject` のリクエストテンプレートは次のようになります。`getObject` は `GetItem` オペレーションを開始し、指定されたプライマリキーを持つ項目の属性のセットを取得します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。

```
{
    "version": "2017-02-28",
    "operation": "GetItem",
    "key": {
        "id": $util.dynamodb.toDynamoDBJson($ctx.args.id),
    }
}
```

`getObject` のレスポンステンプレートは結果を返します。

```
$util.toJson($ctx.result)
```

`listObjects` のリクエストテンプレートは次のようになります。`listObjects` は `Scan` オペレーションを使用して 1 つ以上の項目と属性を返します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。

```
{
    "version" : "2017-02-28",
    "operation" : "Scan",
}
```

`listObjects` のレスポンステンプレートは結果を返します。

```
$util.toJson($ctx.result.items)
```

このスキーマを GraphQL クエリと共に使用する例をいくつか次に示します。

```
mutation CreateObject {
    putObject(email: "example@example.com"
        json: "{\"a\":1, \"b\":3, \"string\": 234}"
        date: "1970-01-01Z"
        time: "12:00:34."
        datetime: "1930-01-01T16:00:00-07:00"
        timestamp: -123123
        url:"https://amazon.com"
        phoneno: "+1 555 764 4377"
        ip: "127.0.0.1/8"
    ) {
        id
        email
        json
        date
        time
        datetime
        url
        timestamp
        phoneno
        ip
    }
}

query getObject {
    getObject(id:"0d97daf0-48e6-4ffc-8d48-0537e8a843d2"){
        email
        url
        timestamp
        phoneno
        ip
    }
}

query listObjects {
    listObjects {
        json
        date
        time
        datetime
    }
}
```