---
schema_version: "1"
id: aa8d63e1f4458911b314b4b1be1bb7ebe28a178e2b83d94f702057a267bdfbbc
title: OAS、RAML、および GraphQL API の実装
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/anypoint-code-builder/imp-implement-api-specs.md
canonical_url: https://docs.mulesoft.com/jp/anypoint-code-builder/imp-implement-api-specs
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 44d540e7f0ba6e435c1059450443ff203a225ec1f6c6f3afce6868212a7b811a
description: MuleSoft Documentation Site
latest: true
---
# OAS、RAML、および GraphQL API の実装

**進行中のベータリリース**​: **クラウド IDE は進行中のベータリリースです**​。ベータ状態での Anypoint Code Builder の使用には、IDE で入手できる、該当するベータサービス契約条件が適用されます。

API 仕様を作成したら、Anypoint Code Builder を使用して API を実装またはインテグレーションの Mule プロジェクトにスキャフォールディングします。

Anypoint Code Builder では、API 仕様から参照される場合、次のスキーマフラグメントファイルのスキャフォールディングがサポートされています。

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top"></th>
<th class="tableblock halign-left valign-top">Avro</th>
<th class="tableblock halign-left valign-top">JSON</th>
<th class="tableblock halign-left valign-top">RAML</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>AsyncAPI</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">はい</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">はい</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>GraphQL</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">はい</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>OData</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">はい</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>REST</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">はい</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>SOAP</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">いいえ</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">はい</p></td>
</tr>
</tbody>
</table>

サポートされていないフラグメントを追加した場合、スキャフォールダーは Exchange から仕様をインポートするときに、これらのフラグメントをプロジェクトの連動関係として追加しません。ただし、仕様内でインラインで指定されたスキーマをスキャフォールディングすることはできます。

OAS および JSON スキーマの場合、実装またはインテグレーションプロジェクトディレクトリ内に手動で作成したフラグメントファイルを指定することもできます。

Anypoint Code Builder では、仕様で定義された設定を使用して実装プロジェクト内の基本インターフェースを自動生成します。 このインターフェースには、各エンドポイントまたは操作のフロー、XML ベースの組み込みルーター、エラーハンドラーが含まれており、それらをその後 Mule アプリケーション内に実装します。

API を実装するために使用するプロセスは、すでにインテグレーションまたは実装のプロジェクトを作成しているか Exchange に仕様をパブリッシュしているかによって異なります。

- Exchange の仕様を使用して API をスキャフォールディングする方法は、次のとおりです。
    
    - 新しいプロジェクトにスキャフォールディングするには、​[新しいプロジェクトへの API のスキャフォールディング](#scaffold-new-integration)​を参照してください。
    - 既存のプロジェクトにスキャフォールディングするには、​[プロジェクトへの API 仕様のインポート](#import-spec-into-project)​を参照してください。
- Exchange の仕様への最新の変更でプロジェクトを更新するには、​[プロジェクトへの API 仕様のスキャフォールディング](#re-scaffold-spec)​を参照してください。
- 仕様を Exchange にパブリッシュせずに API をプロジェクトにスキャフォールディングおよび再スキャフォールディングするには、[API の反復的な設計および実装](https://docs.mulesoft.com/jp/anypoint-code-builder/imp-implement-local-apis)を参照してください。

## [](#始める前に)始める前に

- [デスクトップまたはクラウド IDE をセットアップしてアクセス](https://docs.mulesoft.com/jp/anypoint-code-builder/start-acb)​します。
- [API 仕様を作成してテスト](https://docs.mulesoft.com/jp/anypoint-code-builder/des-create-api-specs)​します。
- [API 仕様を Exchange にパブリッシュ](https://docs.mulesoft.com/jp/anypoint-code-builder/des-publish-api-spec-to-exchange)​します。
- 必要に応じて、​[インテグレーションプロジェクト (Mule アプリケーション) を作成](https://docs.mulesoft.com/jp/anypoint-code-builder/int-create-integrations)​します。

## [](#scaffold-new-integration)新しいプロジェクトへの API のスキャフォールディング

プロジェクトをまだ作成していない場合は、Anypoint Code Builder を使用して API を新しい Mule プロジェクトにスキャフォールディングします。

1. IDE のアクティビティバーで、​![](/mulesoft/current/ja-jp/anypoint-code-builder/_images/icon-ms-logo.png)​ (​**Anypoint Code Builder**​) アイコンをクリックします。
    
    ![アクティビティバー内で強調表示されている \[Anypoint Code Builder\] アイコン](_images/anypoint-code-builder-view.png)
2. **\[Quick Actions (クイックアクション)\]**​ から ​**\[Implement an API (API を実装)\]**​ をクリックします。
    
    ![\*\[Getting Started (使用開始)\]\* セクション内の強調表示された \*\[Implement an API (API を実装)\]\*リンク](_images/implement-api-option-mat.png)
3. **\[Implement an API Specification (API 仕様を実装)\]**​ フォームに入力します。
    
    ![実装プロジェクトの開始フォーム](/mulesoft/current/ja-jp/anypoint-code-builder/_images/implement-api-configure-in-task.png)
    
    <table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">項目名</th>
<th class="tableblock halign-left valign-top">項目値</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><strong>Project Name (プロジェクト名)</strong></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>プロジェクトの一意の名前。</p>
</div>
<div class="paragraph">
<p>この名前はタイトルおよびプロジェクトファイルの名前として使用されます。
たとえば、プロジェクト名が​<em>「My Project (私のプロジェクト)」</em>​の場合、プロジェクトファイル名は ​<code>my-project</code>​ になります。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><strong>Project Location (プロジェクトの場所)</strong></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ホームディレクトリまたは作成する別のディレクトリ。</p>
</div>
<div class="paragraph">
<p><a href="https://docs.mulesoft.com/jp/anypoint-code-builder/start-add-folders" class="xref page">ホームディレクトリへのフォルダーの追加</a>を参照してください。</p>
</div>
<div class="paragraph">
<p>別のプロジェクトディレクトリ内にプロジェクトを作成しないでください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><strong>Search an API Specification from Exchange (Exchange から API 仕様を検索)</strong></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Exchange の仕様の名前。​<strong>[Show filters (検索条件を表示)]</strong>​ をアクティブ化して、検索結果を絞り込みます。詳細は、<a href="https://docs.mulesoft.com/jp/anypoint-code-builder/imp-filter-search-results" class="xref page">検索結果の絞り込み</a>を参照してください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><strong>Mule Runtime</strong></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>プロジェクトに使用する Mule Runtime バージョン。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><strong>Java Version (Java バージョン)</strong></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Mule に使用する Java バージョン。</p>
</div></div></td>
</tr>
</tbody>
</table>
    
    サポートされている Mule Runtime と Java バージョンのいずれかを選択できます。IDE は、バージョン設定をプロジェクトの ​`mule-artifact.json`​ ファイルに保存します。
    
    ![Exchange の API を検索する](/mulesoft/current/ja-jp/anypoint-code-builder/_images/imp-api-search.png)
    
    選択した API 仕様がフォームに表示されます。次に例を示します。
    
    !["\[Implement an API Specification (API 仕様を実装)](/mulesoft/current/ja-jp/anypoint-code-builder/_images/imp-api-selected.png) フォームで選択された \[OAS Example (OAS 例)\] API"\]
4. **\[Create Project (プロジェクトを作成)\]**​ をクリックします。
    
    プロジェクトを作成すると、Anypoint Code Builder で次の操作が実行されます。
    
    - プロジェクトの ​`pom.xml`​ ファイルに API 仕様を連動関係として追加します。
        
        ```XML
        <dependency>
            <groupId>e91cab06-650b-4634-9c6f-5bc4f4fc4d17</groupId>
            <artifactId>OAS-Example</artifactId>
            <version>1.0.1</version>
            <classifier>oas</classifier>
            <type>zip</type>
        </dependency>
        ```
    - Mule と Java のバージョンをプロジェクトの ​`mule-artifact.json`​ ファイルに追加します。
    - API を新しい Mule プロジェクトにスキャフォールディングして、設定 XML ファイルを開きます。
        
        設定 XML ファイルには、仕様の各エンドポイントのフロー、エラーハンドラー、組み込みルーターを含む実装プロジェクトのインターフェースが含まれます。次に例を示します。
        
        ![Anypoint Code Builder での OAS インテグレーション例](/mulesoft/current/ja-jp/anypoint-code-builder/_images/imp-api-scaffolded.png) この例には以下が含まれます。
        
        - メインフロー
        - 組み込みルーターを含む HTTP リスナー
        - いくつかのエラーハンドラー
        
        GraphQL API の場合、Anypoint Code Builder では、各 Mule フローのソースとしてデータフェッチャー (​`<graphql-router:data-fetcher>`​) も作成されます。 データフェッチャーについての詳細は、「​[GraphQL API の実装](https://docs.mulesoft.com/jp/anypoint-code-builder/tut-graphql-implement-api) tutorial for an example GraphQL API and [データソースへの GraphQL API のマッピング](https://docs.mulesoft.com/jp/apikit/latest/apikit-graphql-api-mapping)​」を参照してください。

Mule アプリケーション内でインターフェースを実装できるようになりました。

## [](#import-spec-into-project)プロジェクトへの API 仕様のインポート

[インテグレーションプロジェクトを作成](https://docs.mulesoft.com/jp/anypoint-code-builder/int-create-integrations)​している場合、Exchange から API 仕様をインポートすることでインターフェースをプロジェクトにスキャフォールディングできます。この場合、Anypoint Code Builder では、インテグレーションプロジェクトのインターフェース用の個別の設定 XML ファイルが作成されます。

1. Anypoint Code Builder の \[Explorer\] ビューで、​`my-project-name`​ などのインテグレーションプロジェクトを開きます。
2. コマンドパレットを開きます。
    
    手順を表示
    
    - キーボードショートカットを使用する。
        
        - Mac: Cmd+Shift+p
        - Windows: Ctrl+Shift+p
    - デスクトップ IDE で、​**\[View (表示)\]**​ > ​**\[Command Palette (コマンドパレット)\]**​ を選択する。
    - クラウド IDE で、​![](/mulesoft/current/ja-jp/anypoint-code-builder/_images/icon-menu.png)​ (メニュー) アイコンをクリックし、​**\[View (表示)\]**​ > ​**\[Command Palette (コマンドパレット)\]**​ を選択する。
3. 次のコマンドを入力します。
    
    ```command
    MuleSoft: Import Asset from Exchange
    ```
4. API 仕様の言語に応じて、次のオプションのいずれかを選択します。
    
    - OAS または RAML では ​**Rest API**
    - **GraphQL API**
5. 確認を促されたら、​**\[Allow (許可)\]**​ をクリックして、Anypoint Platform を使用したサインインを許可し、ビジネスグループを選択します。
6. API 仕様の名前を入力して Enter キーを押します。
7. 名前に一致するアセットのリストが IDE に読み込まれるまで待機します。
    
    ![\[Assets from Exchange (Exchange のアセット)\] ドロップダウン](_images/imp-assets-from-exchange.png)
8. インポートする API 仕様を選択します。
9. プロンプトで、API 仕様のバージョン (​`v1.0.1`​ など) を選択します。
10. API 連動関係をスキャフォールディングするように促されたら、​**\[Yes (はい)\]**​ を選択します。
    
    API 連動関係をスキャフォールディングすると、Anypoint Code Builder では次の操作が実行されます。
    
    - プロジェクトの ​`pom.xml`​ ファイルに API 仕様を連動関係として追加します。
        
        ```XML
        <dependency>
            <groupId>e91cab06-650b-4634-9c6f-5bc4f4fc4d17</groupId>
            <artifactId>OAS-Example</artifactId>
            <version>1.0.1</version>
            <classifier>oas</classifier>
            <type>zip</type>
        </dependency>
        ```
    - Mule と Java のバージョンを ​`mule-artifact.json`​ ファイルに追加します。
        
        ```XML
        {
            "minMuleVersion": "4.6.2",
            "javaSpecificationVersions": [
                "11"
            ]
        }
        ```
    - 新しい設定 XML ファイル (​`oas-example.xml`​ など) をプロジェクトに追加します。
        
        ![\[Explorer\] ビューでの新規設定ファイル](_images/imp-new-config-file.png)
        
        新しい設定 XML ファイルには、仕様の各エンドポイントのフロー、エラーハンドラー、組み込みルーターを含む、インテグレーションプロジェクトのインターフェースが含まれます。次に例を示します。
        
        ![Anypoint Code Builder での OAS インテグレーション例](/mulesoft/current/ja-jp/anypoint-code-builder/_images/imp-api-imported.png)
        
        この例には以下が含まれます。
        
        - メインフロー
        - 組み込みルーターを含む HTTP リスナー
        - いくつかのエラーハンドラー
            
            GraphQL API の場合、Anypoint Code Builder では、各 Mule フローのソースとしてデータフェッチャー (​`<graphql-router:data-fetcher>`​) も作成されます。 データフェッチャーについての詳細は、「​[GraphQL API の実装](https://docs.mulesoft.com/jp/anypoint-code-builder/tut-graphql-implement-api) tutorial for an example GraphQL API and [データソースへの GraphQL API のマッピング](https://docs.mulesoft.com/jp/apikit/latest/apikit-graphql-api-mapping)​」を参照してください。

Mule アプリケーション内でインターフェースを実装できるようになりました。

## [](#re-scaffold-spec)プロジェクトへの API 仕様のスキャフォールディング

再スキャフォールディングを使用すると、Anypoint Exchange の API 仕様の最新の変更とバージョンで IDE 内のプロジェクトを更新できます。再スキャフォールディングでは、プロジェクトの設定 XML と ​`pom.xml`​ が更新されます。Exchange にパブリッシュされていないローカル API 設計プロジェクトで定義された仕様をスキャフォールディングするには、代わりに [API の反復的な設計および実装](https://docs.mulesoft.com/jp/anypoint-code-builder/imp-implement-local-apis) を参照してください。

この手順は、仕様の最新バージョン (2.0.0 バージョンなど) を Exchange で使用できることを前提とします。

![Exchange から API 仕様の新しいバージョンの選択](/mulesoft/current/ja-jp/anypoint-code-builder/_images/imp-assets-from-exchange-multiversion.png)

1. Anypoint Code Builder の \[Explorer\] ビューで、​`my-implementation-project`​ などの実装プロジェクトを開きます。
2. コマンドパレットを開きます。
    
    手順を表示
    
    - キーボードショートカットを使用する。
        
        - Mac: Cmd+Shift+p
        - Windows: Ctrl+Shift+p
    - デスクトップ IDE で、​**\[View (表示)\]**​ > ​**\[Command Palette (コマンドパレット)\]**​ を選択する。
    - クラウド IDE で、​![](/mulesoft/current/ja-jp/anypoint-code-builder/_images/icon-menu.png)​ (メニュー) アイコンをクリックし、​**\[View (表示)\]**​ > ​**\[Command Palette (コマンドパレット)\]**​ を選択する。
3. 次のコマンドを入力します。
    
    ```command
    MuleSoft: Import Asset from Exchange
    ```
4. API 仕様の言語に応じて、次のオプションのいずれかを選択します。
    
    - OAS または RAML では ​**Rest API**
    - **GraphQL API**
5. 確認を促されたら、​**\[Allow (許可)\]**​ をクリックして、Anypoint Platform を使用したサインインを許可し、ビジネスグループを選択します。
6. API 仕様の名前を入力して Enter キーを押します。
7. 名前に一致するアセットのリストが IDE に読み込まれるまで待機します。
    
    ![\[Assets from Exchange (Exchange のアセット)\] ドロップダウン](_images/imp-assets-from-exchange-multiversion.png)
8. プロンプトで、API 仕様のバージョン (​`v2.0.0`​ など) を選択します。
9. API 連動関係をスキャフォールディングするように促されたら、​**\[Yes (はい)\]**​ を選択します。
    
    API 連動関係をスキャフォールディングすると、Anypoint Code Builder では次の操作が実行されます。
    
    - プロジェクトの ​`pom.xml`​ ファイルに API 仕様を連動関係として追加します。
        
        ```XML
        <dependency>
            <groupId>e91cab06-650b-4634-9c6f-5bc4f4fc4d17</groupId>
            <artifactId>phoneSync1005</artifactId>
            <version>2.0.0</version>
            <classifier>oas</classifier>
            <type>zip</type>
        </dependency>
        ```
    - プロジェクトのインターフェースが含まれる設定 XML ファイルを、インポートした仕様への変更で更新します。
10. プロジェクトへの変更があるかどうかを確認します。
    
    たとえば、更新された仕様で新しいエンドポイントが追加される場合、実装プロジェクトの設定 XML にはそのエンドポイントの新しいフローがあります。
11. 仕様で新しいバージョン番号が導入された場合、​`pom.xml`​ を開き、再スキャフォールディングされた仕様の ​`artifactID`​ の新しい連動関係バージョンを検索します。

## [](#インターフェースファイルを調べる)インターフェースファイルを調べる

API 仕様をインターフェースにスキャフォールディングしたら、UI キャンバスと設定 XML でインターフェースのスキャフォールディング済みフローとエラーハンドラーを調べます。

![キャンバスでのスキャフォールディング済みフロー](/mulesoft/current/ja-jp/anypoint-code-builder/_images/imp-scaffolded-flow-canvas.png)

1. \[Explorer\] ビューで、目的のインターフェースの設定 XML ファイルを開きます。
2. キャンバス UI が自動的に開かない場合は、アクティビティバーの ​![](/mulesoft/current/ja-jp/anypoint-code-builder/_images/icon-tree-view.png)​ (​**Show Mule graphical mode (Mule グラフィカルモードを表示)**​) アイコンをクリックしてキャンバス UI を開きます。
3. **\[Flow List (フローリスト)\]**​ をクリックして、フロー間を移動します。
    
    ![\[Flow List (フローリスト)\] の例](_images/int-flow-list.png)
4. 設定 XML で、API 仕様のエンドポイント用に作成したフローを見つけます。
    
    フローの例
    
    ```xml
        <flow name="oas-example-console">
            <http:listener config-ref="oas-example-httpListenerConfig" path="/console/*">
                <http:response statusCode="#[vars.httpStatus default 200]">
                    <http:headers>#[vars.outboundHeaders default {}]</http:headers>
                </http:response>
                <http:error-response statusCode="#[vars.httpStatus default 500]">
                    <http:body>#[payload]</http:body>
                    <http:headers>#[vars.outboundHeaders default {}]</http:headers>
                </http:error-response>
            </http:listener>
            <apikit:console config-ref="oas-example-config" />
            <error-handler>
                <on-error-propagate type="APIKIT:NOT_FOUND">
                    <ee:transform doc:name="Transform Message">
                        <ee:message>
                            <ee:set-payload><![CDATA[%dw 2.0
    output application/json
    ---
    {message: "Resource not found"}]]></ee:set-payload>
                        </ee:message>
                        <ee:variables>
                            <ee:set-variable variableName="httpStatus">404</ee:set-variable>
                        </ee:variables>
                    </ee:transform>
                </on-error-propagate>
            </error-handler>
        </flow>
    ```
5. 自動的に生成されたエラーハンドラーコンポーネントを確認します。
    
    エラーハンドラーコンポーネントの例
    
    ```xml
    <apikit:console config-ref="oas-example-config" />
        <error-handler>
            <on-error-propagate type="APIKIT:NOT_FOUND">
                <ee:transform doc:name="Transform Message">
                    <ee:message>
                        <ee:set-payload><![CDATA[%dw 2.0
    output application/json
    ---
    {message: "Resource not found"}]]></ee:set-payload>
                    </ee:message>
                    <ee:variables>
                        <ee:set-variable variableName="httpStatus">404</ee:set-variable>
                    </ee:variables>
                </ee:transform>
            </on-error-propagate>
        </error-handler>
    ```

## [](#rename)インターフェースおよび実装ファイルに名前を付ける

API 仕様を既存のインテグレーションにインポートすると、Anypoint Code Builder で設定 XML ファイルの名前が API 仕様名に基づいて自動的に設定されます。 ファイル名を、たとえばその機能に基づいてわかりやすい名前に変更することができます。次に例を示します。

- `interface.xml`​ でアプリケーションへのすべての受信要求を受け取り、スキャフォールディング済みフローで要求を検証してルーティングします。
- `implementation.xml`​ では、インターフェースへのコールのためのバックエンドロジックを提供します。

ファイルの名前を変更するには、ファイルを右クリックして ​**\[Rename (名前変更)\]**​ を選択し、新しい名前を指定します。

## [](#関連情報)関連情報

- [インテグレーションの作成](https://docs.mulesoft.com/jp/anypoint-code-builder/int-create-integrations)
- [API の反復的な設計および実装](https://docs.mulesoft.com/jp/anypoint-code-builder/imp-implement-local-apis)
- [GraphQL API の実装](https://docs.mulesoft.com/jp/anypoint-code-builder/tut-graphql-implement-api)