MuleSoft公式チュートリアルを学ぶ - APIのデプロイと管理編

# はじめに

MuleSoftを勉強する機会があったので、公式チュートリアルをやってみました。

しかし2024年6月現在、いくつかのチュートリアルは **Mulesoftの最新バージョンと画面や機能が異なっていてなかなか進めない**ところがあったので、現行バージョンの仕様を調べ、最終的にうまくいった手順をスクショ満載でまとめました。

本記事は、現時点の公式チュートリアルとMuleSoft現行バージョンの差分を埋めるものとなっています。

# MuleSoft公式チュートリアルの構成
MuleSoftのクイックスタート・チュートリアルの項目は下図のようになっています。

1.でデスクトップアプリAnypoint Studioの操作を学び、2.でウェブ上のAnypoint PlatformでAPIの仕様を定義する方法を学びます。
3.が今回ご紹介する **Introduction to developing on Anypoint Platform** シリーズで、先のチュートリアルの復習をしつつ、APIをより実践的に実装していく内容になっています。

最初から順番にやっていって、3.2.までは問題なく進めました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/2b4f92b5-73f8-976e-e4a0-c34ec04432b5.png)

ところが、**3.3.**（**Deploying and managing your first API**：APIのデプロイと管理）と **3.4.**（**Connecting your first SaaS application to Salesforce**：SaaSアプリケーションをSalesforceと繋げる）は、画面構成や機能が現行バージョンと違っていてつまずいたので、今のバージョンでやる方法を調べました。

本記事では、 **Introduction to developing on Anypoint Platform** シリーズの**パート3**にあたる、**APIのデプロイと管理**（Deploying and managing your first API）のチュートリアルが、MuleSoft現行バージョンでうまくいった手順をまとめています。


この記事の元ネタのMuleSoft公式チュートリアルはこちらです：
Deploying and managing your first API
https://developer.mulesoft.com/tutorials-and-howtos/quick-start/deploying-managing-your-first-api/

パート4は現行バージョンだとパート3以上に手順が違うので、後日また書く予定です。

# 準備
このチュートリアルでは、下記のアプリケーションを使います。チュートリアルを進める前に無料トライアルアカウントの取得や、デスクトップアプリケーションのダウンロード／インストールをする必要があります。
- Anypoint Platform - Anypoint Platformのアカウントが必要です。今回は[無料トライアルアカウント](URL "https://anypoint.mulesoft.com/login/signup?apintent=generic")を利用しています。Anypoint Platformの操作はブラウザ上で行います。
- Anypoint Studio - APIの実装を開発するためのデスクトップ・アプリケーションです。[ダウンロード](URL "https://www.mulesoft.com/lp/dl/studio")・インストールしてください。
- RESTクライアント - APIテストのために何かしらのRESTクライアントアプリが必要です。本記事では[Postman](URL "https://www.postman.com/downloads/")を使います。

前の2つのチュートリアルを完了している前提で進むので、予め下記の **Introduction to developing on Anypoint Platform** シリーズ パート1、パート2をご参照ください。
日本語訳版を提供しているサイトもありました。

**Introduction to developing on Anypoint Platform** シリーズ
**パート1**
公式チュートリアル：[Designing your first API specification](URL "https://developer.mulesoft.com/tutorials-and-howtos/quick-start/designing-your-first-api/")
TerraSky様のサイト：[【クイックスタート：パート1】API Designerで最初のAPIを設計する方法](URL "https://base.terrasky.co.jp/articles/AWl7U")

**パート2**
公式チュートリアル：[Designing your first API specification](URL "https://developer.mulesoft.com/tutorials-and-howtos/quick-start/designing-your-first-api/")
TerraSky様のサイト：[【クイックスタート：パート2】初めてのMuleアプリケーション開発](URL "https://base.terrasky.co.jp/articles/CZlrC")

# 1. APIのAutodiscoveryを設定する
ではさっそく、前のチュートリアル（パート2）で作成したAPIアプリのAutodiscoveryを設定します。

## 1.1 Anypoint Platform でAPIを登録する
API Autodiscoveryを設定するには、まず（ブラウザー上で）**Anypoint Platform**にログインし、左上のメニューから**API Manager**を開きます。

<img width="150" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/4896ce8a-bfb2-245a-13e8-28f34cb17e4b.png">

**Add API** ドロップダウンから **Add new API**を選択すると

<img width="640" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/2d3504c2-24ed-958a-b7b0-1c7ea6d181cb.png">

設定画面が開きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/50938715-7e4f-abc6-be52-214634ef7140.png)

Select runtimeセクションでは **Mule Gateway** を選択し、Nextボタンを押下します。

APIセクションは **Select API from Exchange** を選択し、Select APIセクションでは、前のチュートリアルで定義したAPI（**Contact API**）を選択してNextボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/b9de4fef-f5ac-2ef8-7fa7-1575fe1f47bb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/c525888e-a878-e879-d957-2fd5bc013211.png)

次の **Downstream** 設定ページは何も変更せずにNext。

その次の **Upsteam** 設定ページは Upstream URL に "https://" が入力されていたら、削除してNext。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/ce3f14d7-0d4a-2413-cea7-779111d8801d.png)

Reviewページで特に問題がなければ Save ボタンを押して設定を保存します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/0c05547f-df5a-e817-1fe2-fd35c32873d5.png)

保存後 **API Manager** 画面に戻ると、登録済みAPIのリストの **Instance** カラムでAPIの Instance ID が確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/823a7124-c8f4-b86f-7a51-2465a0d5beb1.png)

次のステップで、今登録したContact API の Instance ID を使うので、控えておきます。

## 1.2 Anypoint Platform で登録した API Instance ID をアプリの Autodiscovery に紐づける
次は、前のチュートリアル（パート2）で実装したアプリに、前のステップ登録した API の Instance IDを紐づけます。

まず、デスクトップアプリ **Anypoint Studio** で、前のチュートリアルで作成した Contract APIアプリを開き、**Global Elements** ボタンを押下して画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/f132f6cc-a694-a99f-f62f-cb48a74a9d75.png)

**Create** ボタンでダイアログボックスを開き、Component configurations 配下の **API Autodiscovery** を選択して OK します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/2df1574c-28d3-d73a-6dff-616bdd5c278e.png)

API Autodiscovery の設定では、**API Id** フィールドに、前のステップで控えた API Instance IDを入力し、**Flow Name** 欄は **xxxx-main** (contact-api-main等)と名前の付くフローを選びます。OKボタンを押下。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/cb2c6fa9-6dd1-265f-9a1c-5c9ba654d603.png)

# 2. ローカルのAnypoint Studioで実装したアプリをCloudHubにアップロード／デプロイする
Anypoint Studioで作成したContact APIアプリを、CloudHubにアップロード／デプロイします。
アップロードを設定する際に、ウェブ上のAnypoint Platform側にある設定を参照するので、ブラウザーでAnypoint Platformを開いておくと便利です。

まず、デスクトップアプリ **Anypoint Studio** の **Package Explorer** で **Contact API** のプロジェクトを右クリックしてメニューを表示します。
メニューの **Anypoint Platform** から **Deploy to CloudHub** を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/f306b159-8450-8ba5-f2b7-e1c63438bff2.png)


ポップアップ内でAnypoint Platformにログインすると **Deploy Application** 画面が開きます。

一番上のフィールドがアプリケーション名ですが、すでに同じ名前が使用されている場合は赤く表示されて×印がつきます。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/28da2a79-0414-3e11-b31a-d7fb94788c30.png">

未使用のアプリケーション名に変更し、緑のチェックがつくようにしてください。


画面中央の4つのタブの **Runtime** タブの設定は特にありません。

**Properties** タブを開き、**anypoint.platform.client_id**、**anypoint.platform.client_secret** の2つのプロパティを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/be8a4a4f-6a93-c9b3-5168-c03af358a104.png)

上記プロパティの値は、別のブラウザーで**Anypoint Platform**を開いて、API Manager から取得します。以下その方法です。

**API Manager** 画面で **Environment** ボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/610545ef-a0f1-7f35-4b0f-a34d2556be06.png)

**Environment Information** ポップアップ画面で **Client ID** と **Client secret** が確認できるので

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/cf8cbb2a-4484-60bf-ad80-03c6125fcc9a.png)

それぞれの値をコピーし、先のデプロイ設定の**anypoint.platform.client_id**、**anypoint.platform.client_secret** の値として入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/f103d06a-3acb-deb3-279a-8094c12c6986.png)

プロパティの下にある **Deploy Application** ボタンを押下して Contact APIアプリをアップロード／デプロイをスタートします。

デプロイが完了すると「ウィンドウを閉じる」または「ブラウザーで確認」のボタンが表示される完了画面に遷移するので、それまで待ちましょう。

# CloudHubにデプロイした Contact API アプリの動作テストをする

CloudHub にデプロイしたアプリは、Anypoint Platform の Runtime Manager で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/fc8da4c3-e821-74cf-d57d-687a02b38eaa.png)

デプロイしたアプリをクリックして開き、エンドポイントのURLをコピーします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/99cf8089-ac4a-0ca2-090a-0172444e6270.png)

CloudHubにデプロイしたアプリを、**Postman** でテストしてみましょう。
Postmanを開き、CloudHub上のAPIにGETリクエストを投げます。

GETのURLは、先ほどRuntime Managerでコピーした <エンドポイントURL> に "/api/contacts" を付けた形式になります。
例：**contactapi-xxx-cloudhub.io/api/contacts**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308847/ddff548b-c7c3-94be-701b-a86efb42de8d.png)

GETリクエストを送信して、前のチュートリアルでローカルでテストした時と同じレスポンスが返ってくれば成功です！

# 最後に
本記事では、MuleSoft公式チュートリアルの **Introduction to developing on Anypoint Platform** シリーズ パート3にあたる **Deploying and managing your first API**を、2024年6月現在のMuleSoft最新バージョンで学ぶ際の手順をご紹介しました。

このシリーズのパート4にあたる **Connecting your first SaaS application to Salesforce** は、MuleSoftの現行バージョンだとパート3以上に手順が違うので、後日また手順を投稿する予定です。