---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# GraphQL API フレームワークを使用したレコードデータのクエリ

# GraphQL API フレームワークを使用したレコードデータのクエリ {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：6分

コンポーネントまたはサードパーティシステムからレコードデータをクエリするカスタム GraphQL API を作成します。

たとえば、SLA に関連付けられたケースを表示するコンポーネントを作成できます。ネクストエクスペリエンス UI フレームワーク を使用して必要なコンポーネントを開発し、 ケーステーブルのデータを定義する GraphQL スキーマを作成することで、 プラットフォームからケースデータにアクセスできます。

コンポーネント開発の詳細については、「 [ワークスペースのコンポーネントの開発](https://www.servicenow.com/docs/access?context=custom-components&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US)」を参照してください。

## GraphQL のメリット {#scripted-graph-ql__section_ztd_cf1_dlb}

GraphQL は、クライアント側の開発用に最適化された Web クエリ言語です。スクリプト化された GraphQL を使用すると、次のことができます。  
* イントロスペクションを通じてクエリ可能なフィールドとオブジェクトを検出します。
* コンポーネントから必要なデータを正確にクエリします。
* REST 要求の複数のエンドポイントとは対照的に、単一の API から複数のクエリを管理します。
* スキーマを公開してサードパーティシステムと統合します。
* コンポーネントから GraphQL クエリを生成し、応答を処理します。
{#scripted-graph-ql__ul_pp2_myf_dlb}

## 使用前の注意事項 {#scripted-graph-ql__section_yrj_nh1_dlb}

カスタム GraphQL API の作成を開始する前に、次のことを確認します。  
* スキーマを作成するための GraphQL の知識
* API の動作を定義するための JavaScript の知識
* Web コンポーネントの概念に関する一般的な知識
* レコードデータを使用するカスタムワークスペースコンポーネント
* スキーマで公開する ServiceNow データモデルの理解
* リゾルバースクリプトでフィールドをレコードデータにマッピングするための GlideRecord の知識
{#scripted-graph-ql__ul_zj1_qh1_dlb}

## GraphQL の概要 {#scripted-graph-ql__section_wqr_bf1_dlb}

スクリプト化された GraphQL API の作成には、次の部分が含まれます。  

GraphQL スキーマ定義言語 (SDL)
:   GraphQL クエリで利用可能なフィールドの構造とデータタイプを定義します。GraphQL スクリプト化済みスキーマ \[sys_graphql_schema\] テーブルの \[スキーマ\] スクリプトフィールドを使用して、SDL を定義できます。SDL はクエリ操作と変更操作のみをサポートしています。

リゾルバー
:   各フィールドによって返されるデータを定義します。\[GraphQL スクリプト化済みスキーマ\] フォームで \[GraphQL スクリプト化リゾルバー\] 関連リストの各フィールドのリゾルバーを定義できます。

タイプリゾルバー
:   インターフェイスとユニオンを GraphQL の具象タイプに転換させます。たとえば、ユニオンを `incident` タイプか `problem` タイプに定義します。タイプリゾルバースクリプトを使用して、いつどちらを返すかを定義します。\[GraphQL スクリプト化済みスキーマ\] フォームで \[GraphQL スクリプト化済みタイプリゾルバー (GraphQL Scripted Typeresolvers)\] 関連リストのタイプリゾルバーを定義できます。

リゾルバーマッピング
:   リゾルバーをスキーマのフィールドにマッピングします。\[GraphQL スクリプト化済みスキーマ\] フォームで \[GraphQL スクリプト化済みリゾルバーマッピング (GraphQL Scripted Resolver Mappings)\] 関連リストのリゾルバーマッピングを定義できます。

GraphQL クエリ言語の詳細については、[GraphQL の Web サイト](https://graphql.org/)を参照してください。

GraphQL API へのクエリをテストするには、統合された GraphQL テストツールである GraphQL エクスプローラーを使用できます。詳細については、「[GraphQL Explorer を使用して GraphQL API をテストする](https://servicenow-prod.fluidtopics.net/aWZssvMyKMVQxkL1mE9kaA "統合された GraphQL テストツールを使用して、GraphQL API をテストクエリします。")」を参照してください。

## 制限事項 {#scripted-graph-ql__section_ymn_b2j_dlb}

次の GraphQL 機能はサポートされていません。  
* サブスクリプションの操作
* カスタムスカラータイプ
{#scripted-graph-ql__ul_fns_g3v_flb}

## イントロスペクション {#scripted-graph-ql__section_vxz_rw5_flb}

既定では、カスタム スキーマへのイントロスペクション クエリは有効になっていません。イントロスペクションをオンにする場合は「[GraphQL スキーマのイントロスペクションクエリを有効にする](https://servicenow-prod.fluidtopics.net/zkqfkKLvfB4c~WJ_I1dI~g "イントロスペクションを有効にして、インスタンスのスキーマでサポートされているクエリとミューテーションを検出します。")」を参照してください。

## 名前空間 {#scripted-graph-ql__section_frl_yyh_dlb}

GraphQL API には 2 つの異なる名前空間があります。  

アプリケーション名前空間
:   カスタムアプリケーションの名前空間。アプリケーション名前空間の詳細については、「 [アプリケーションスコープ](https://www.servicenow.com/docs/access?context=c_ApplicationScope&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US)」を参照してください。

スキーマ名前空間
:   すべてのクエリが一意になるようにするスキーマの名前空間。1 つのアプリケーションに複数のスキーマ名前空間を含めることができます。

データをクエリするときは、クエリに両方の名前空間を含める必要があります。たとえば、次のクエリは次の名前空間でデータを検索します。  
* アプリケーション名前空間：`x_graph_scope`
* スキーマ名前空間：`planet`
{#scripted-graph-ql__ul_ihg_pzh_dlb}  

    query {
      x_graph_scope {
        planet {
          findAll {
            name
            mass
            distance
          }
        }
      }
    }

## ディレクティブとグローバル関数 {#scripted-graph-ql__section_zdw_rnc_glb}

`@source` スキーマディレクティブ

:   GraphQL フィールドを親オブジェクトのプロパティの値にマッピングします。フィールドに個別のリゾルバースクリプトがある場合、システムは親オブジェクトの代わりに解決されるレコードを使用します。

    スキーマスクリプトで `@source` ディレクティブを使用します。

`@defer` クエリディレクティブ
:   クエリの後半まで GraphQL フラグメントの処理を保留します。このクエリディレクティブを使用して、フラグメント内の応答の遅いフィールドのデータの戻しを遅らせます。保留されたフラグメントのフィールド結果をマルチパート応答としてストリーミングします。  
    注:  
    `@defer` ディレクティブを使用するには、GraphQL クライアントがマルチパート/混在 HTTP ヘッダーを受け入れる必要があります。たとえば、HTTP ヘッダーを `Accept: multipart/mixed; boundary="-"` に設定します。

    `@defer` ディレクティブを使用して、ユーザーのインタラクションまでの時間を短縮します。 パフォーマンスが低下する可能性があるため、このクエリディレクティブを無差別に適用しないでください。パフォーマンステストを実施して、パフォーマンスを向上させるためにどのフィールドを保留できるかを判断してください。

リゾルバー関数

:   これらの関数はグローバル env オブジェクトで使用できます。

    * getArguments()：前のフィールドの引数を返します。
    * getSource()：親オブジェクトを返します。
    {#scripted-graph-ql__ul_t2l_vrx_glb}

    リゾルバースクリプトで使用します。

タイプリゾルバー関数

:   これらの関数はグローバル env オブジェクトで使用できます。

    * getArguments()：前のフィールドの引数を返します。
    * getObject()：親オブジェクトを返します。
    * getTypeName()：インターフェイスまたは共用タイプの名前を返します。
    {#scripted-graph-ql__ul_e1w_vrx_glb}

    タイプリゾルバースクリプトで使用します。

## デモアプリケーション {#scripted-graph-ql__section_ubj_21v_flb}

変更とクエリを含むデモの GraphQL PTO カレンダースキーマを表示するには、GraphQL Framework Demo Application プラグイン (com.glide.graphql.framework.demo) を有効にします。
* **[GraphQL スキーマの作成](https://servicenow-prod.fluidtopics.net/XmUgFJ8qYAwbYAaFEVlfkg#build-graphql-scripted-schema)**   
  GraphQL スキーマを作成して、GraphQL クエリでデータを使用できるようにします。
* **[GraphQL スキーマのイントロスペクションクエリを有効にする](https://servicenow-prod.fluidtopics.net/zkqfkKLvfB4c~WJ_I1dI~g)**   
  イントロスペクションを有効にして、インスタンスのスキーマでサポートされているクエリとミューテーションを検出します。
* **[GraphQL Explorer を使用して GraphQL API をテストする](https://servicenow-prod.fluidtopics.net/aWZssvMyKMVQxkL1mE9kaA)**   
  統合された GraphQL テストツールを使用して、GraphQL API をテストクエリします。
* **[コンポーネントからの GraphQL スキーマのクエリ](https://servicenow-prod.fluidtopics.net/u4E8C_tl47HTj_FDnzlp8g)**   
  スクリプト化された GraphQL スキーマを照会して、コンポーネント内のレコードデータにアクセスします。
* **[GraphQL システムのプロパティ](https://servicenow-prod.fluidtopics.net/NSEeI_bzERtFdXgiBQYXEQ)**   
  GraphQL API フレームワークの動作を構成します。たとえば、スキーマへのイントロスペクションクエリを許可するかどうかを設定できます。

