

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

# GraphQL フィールド
<a name="graphql-fields"></a>

フィールドはタイプのスコープ内に存在し、GraphQL サービスから要求された値を保持します。これらは、他のプログラミング言語の変数とよく似ています。例えば、次のような `Person` オブジェクトタイプがあります。

```
type Person {                                  
   name: String                                  
   age: Int
}
```

この場合のフィールドはそれぞれ `name` `age` で、`String` および `Int` 値が格納されます。上に示したようなオブジェクトフィールドは、クエリやミューテーションのフィールド (オペレーション) の入力として使用できます。例については、以下の `Query` を参照してください

```
type Query {                                   
  people: [Person]
}
```

`people` フィールドは、データソースから `Person` のすべてのインスタンスを要求しています。GraphQL サーバーで `Person` を追加または取得すると、データはタイプとフィールドの形式に従うことが期待できます。つまり、スキーマ内のデータの構造によって、レスポンスでどのように構造化されるかが決まります。

```
}
  "data": {
    "people": [
      {
        "name": "John Smith",
        "age": "50"
      },
      {
        "name": "Andrew Miller",
        "age": "60"
      },
      .
      .
      .
    ]
  }
}
```

フィールドはデータを構造化する上で重要な役割を果たします。以下で説明するように、フィールドに適用してさらにカスタマイズできるプロパティがいくつかあります。

## Lists
<a name="list-components"></a>

リストは指定されたタイプのすべての項目を返します。リストは括弧 `[]` を使ってフィールドの型に追加できます。

```
type Person { 
  name: String
  age: Int
}
type Query {                                   
  people: [Person]
}
```

`Query` では、`Person` を囲んでいる括弧は、データソースからの `Person` のすべてのインスタンスを配列として返したいことを示しています。レスポンスでは、それぞれの `Person`の `name` および `age` の値が 1 つの区切りリストとして返されます。

```
}
  "data": {
    "people": [
      {
        "name": "John Smith",         # Data of Person 1
        "age": "50"
      },
      {
        "name": "Andrew Miller",      # Data of Person 2
        "age": "60"
      },
      .                               # Data of Person N
      .
      .
    ]
  }
}
```

使用できるのは特殊なオブジェクトタイプだけではありません。リストは通常のオブジェクトタイプのフィールドでも使用できます。

## NULL 以外
<a name="non-null-components"></a>

NULL 以外は、レスポンスで NULL であってはならないフィールドを示します。`!` 記号を使用して、フィールドを NULL 以外に設定できます。

```
type Person { 
  name: String!
  age: Int
}
type Query {                                   
  people: [Person]
}
```

`name` フィールドを明示的に NULL にすることはできません。データソースにクエリを実行して、このフィールドに NULL を入力すると、エラーが発生します。

リストと NULL 以外を組み合わせることができます。次のクエリを比較してください。

```
type Query {                                   
  people: [Person!]      # Use case 1
}

.
.
.

type Query {                                   
  people: [Person]!      # Use case 2
}

.
.
.

type Query {                                   
  people: [Person!]!     # Use case 3
}
```

ユースケース 1 では、リストに NULL 項目を含めることはできません。ユースケース 2 では、リスト自体を NULL に設定することはできません。ユースケース 3 では、リストとその項目を NULL にすることはできません。ただし、いずれにしても、空のリストを返すことはできます。