MuleSoft 入門(3)Anypoint Studio による API の実装(1/2)

December 19, 2019 Naoki Kitaarashi

こんにちはアピリオ北嵐です。第2回目「ようこそ Anypoint Platform」では、API を設計・実行・管理するためのクラウド上のプラットフォームである Anypoint Platform の基本的な機能をご紹介しました。
第3回目の本編では、Mule API 開発の基本的な流れと Eclipse ベースの開発ツールである Anypoint Studio についてご紹介します。

Mule API 開発作業の流れ

弊社での Mule API の開発作業の流れを下記に示します。開発作業には API のインターフェース設計、実装/単体テスト、デプロイ、Mule 環境上での設定、結合テストまでを含みます。作業は大きく分けて Anypoint Platform 上での作業と Anypoint Studio でのローカル作業の2つに分かれます。

[Mule API の開発作業の流れ]

#
作業
担当
 説明

1

API 定義の作成

開発者

Design Center上で RAML 形式の API のインターフェース定義を作成する。

2

Exchange への公開

開発者

開発した API のインターフェース定義を Exchange 上にアセットとして公開する。

3

API 定義のインポート

管理者

Anypoint Studioに Mule プロジェクトを作成し、#2で公開したアセットバージョンの RAML 定義をローカル環境にインポートする。

4

API 定義の実装

開発者

Anypoint Studio 上の Mule プロジェクトにフロー定義を追加して、API の実装部分を開発する。

5

ローカル環境での検証

開発者

Anypoint Studio 上で開発したフロー定義をローカル実行し、動作を検証する。API リクエストへの発行には Advanced REST Client のようなツールを使用する。

6

MUnit による単体テスト

開発者

(オプション)

Anypoint Studio 上に MUnit を使って単体テストケース用のフロー定義を作成し、テストを実施する。

7

API Manager へのAPIの登録

管理者

API Manager 上で、#2で公開した API アセットをベースに API インスタンスを作成し、API ID を発行する。この API ID は#8のデプロイで使用する。

8

デプロイ

開発者

単体テストが完了したMuleアプリケーションを CloudHub(Anypoint Platform 上の MuleSoft API の実行環境)にデプロイする。

9

コードのチェックイン

開発者

(オプション)

デプロイ済みの Mule プロジェクトファイルをバージョン管理用のリポジトリにチェックインする。

10

API へのポリシー設定

管理者

対象の API に対して必要なポリシーを追加する。

11

結合テストの実施

開発者

サーバー上で稼働する Mule アプリケーションに対して結合テストを実施する。

[Mule API 開発作業の説明]

前後編に分けて#1の「API 定義の作成」から#5の「ローカル環境での検証」までと#8のデプロイ作業を説明します。他の作業の詳細については、手順のタイトルにあるリンク先を参照してください。

インターフェースの定義

Mule API の開発はまず API のインターフェースを定義することから始まります。インタフェースの定義は Design Center 上のエディタで API を RAML 形式で記述しますが、実際にはいきなり API を定義できるわけではなく、関係者間でインターフェース要件の調整を別途行ってから、それを API として定義することになると思います。

[ Design Center 上の API 定義(RAML 形式)]

Design Center 上に RAML 形式で作成した API を Exchange に公開することで、インターフェース仕様を関係者がブラウザ上で確認できるようになります。自動的に APIのMockも作成されるため、この段階でAPI定義の詳細画面から実際に API を呼び出してみることもできます。

[ Exchange 上で公開された API のインターフェース仕様]

関係者との調整が終わりインターフェースの仕様が固まったら、Anypoint Studio を使ったローカル環境での API の実装に着手します。

Anypoint Studio

Anypoint Studio は MuleSoft から無償で提供されている、ローカル環境で Mule アプリケーションの開発および実行/デバッグを行うための Eclipse ベースの開発ツールです。利用には下記のサイトからモジュールをダウンロードして導入してください。

https://www.mulesoft.com/lp/dl/studio

2019年12月時点の最新バージョンは 7.4 で、メニュー等が日本語化されたローカライズ版は提供されていません。Anypoint Studio の実行には OpenJDK 8 が必要になりますので、対象 PC に導入されていない場合は最初に下記のサイトから OpenJDK 8 を導入してください。

https://adoptopenjdk.net

※ Anypoint Studio は実行中にインターネットに接続して処理を行いますので、インターネットに常時接続できない環境だと正常に動作しません

Anypoint Studio を起動したら、Mule プロジェクトを作成してそこに実装を追加していきます。典型的な Mule プロジェクトの構成は下記のようになります。実装作業のメインは src/main/mule フォルダに Mule フローを追加していく作業になります。

[Anypoint Studio でのMule プロジェクトの構成]

Mule アプリケーションの実態は Java プログラムであるため、プロジェクトの構造は通常の Java プロジェクトに非常によく似ています。プロパティファイルにプロパティ値を定義してコンポーネントから参照したり、log4j の仕組みを使ってログの出力レベルを切り替えたりすることも簡単にできます。また、プロジェクト全体は Maven を使って管理されているため、モジュールの依存関係の管理・ビルド・実行・デプロイは、内部的には全て Maven を使って実行されます。

Eclipse 上での Java プログラムの開発に慣れた開発者であれば、すぐに使いこなせるようになる環境だと思います。

Muleフロー(Flows)

Mule API の実装はプログラムコードを記述するわけではなく、キャンバス上にフローを構成するコンポーネントを配置しそのプロパティを設定していくコンポーネントベースのスタイルを取ります(フローの実態は XML で記述されているため、XML を直接編集することも可能)。下記はシンプルなフローの例であり、リクエストのログ出力 → 外部API の呼出 →レスポンスのログ出力と左から右に処理が流れていきます。Request コンポーネントの前後にある Transform コンポーネントは、入出力データの変換を行います。

[Mule フローの例]

開発の手順としては、最初に Design Center で作成したAPIのインターフェース定義をローカル環境にインポートします。この機能は Anypoint Studio の標準機能としてサポートされていて、右クリックメニュー [Anypoint Platform] - [import from Design Center]から実行できます。

インターフェース定義がインポートされると、RAML形式の定義ファイルは src/main/resources/api フォルダ配下に配置され、この定義をベースに Muleフロー が自動生成されます。自動生成されたフロー :api-main には HTTP リクエストを処理するための定型的な機能が含まれており、このフローから呼び出されるリソースパス(APIが提供する各オペレーション。/api/*** といったURLパス)にAPI実装の本体を開発していきます。

インポート後の Mule プロジェクトは下記のようなイメージになります。メンテナンス性を考慮して、自動生成されるフローと手作業で実装するフローはファイルを分けておくことをお勧めします。

[Muleプロジェクトのフロー構成]

今回は、Mule API の開発作業全体の流れと Anypoint Studio による API 実装についてご紹介しました。後半では API の実装作業の続きと CloudHub へのデプロイ作業についてご紹介します。

 

[MuleSoft 入門シリーズ]

MuleSoft 入門(1)MuleSoft による API-led なアプリケーションネットワーク

MuleSoft 入門(2)ようこそ Anypoint Platform へ

MuleSoft 入門(3)Anypoint Studio による API の実装

MuleSoft 入門(4)DataWeave によるデータ変換

MuleSoft 入門(5)Flow Designer で Mule アプリケーションを開発

MuleSoft 入門(6)MUnit による単体テスト

MuleSoft 入門(7)API 開発におけるテストの考え方

MuleSoft 入門(8)ポリシーと SLA

MuleSoft 入門(9)カスタムポリシーの開発

MuleSoft 入門(10)Mule API のバージョン管理

MuleSoft 入門(11)ランタイムログの自動アーカイブ

著者について

Naoki Kitaarashi

アピリオのシニアコンサルとしてクラウドの世界に身を投じてはや5年あまり。プロジェクトでの立場に応じて、アーキテクト、リーダー、デベロッパーと様々なロールの仕事に携わっています。続々と新しいサービスと技術が登場するSalesforceの世界はエンジニアとして常に刺激を持ち続けられるエリアであり、2019年からはMuleSoftソリューションの起ち上げに関わっています。しばらくはAPI-ledなシステム連携を広めることに全力投球!!

Naoki Kitaarashi のコンテンツをもっと見る
戻る
MuleSoft 入門(3)Anypoint Studio による API の実装(2/2)
MuleSoft 入門(3)Anypoint Studio による API の実装(2/2)

第3回目では、Mule API 開発の基本的な流れと Eclipse ベースの開発ツールである Anypoint Studio について説明します。前半では Mule API の開発作業全体の流れと Anypoin...

次へ
MuleSoft 入門(2)ようこそ Anypoint Platform へ
MuleSoft 入門(2)ようこそ Anypoint Platform へ

今回は、MuleSoft 上で API を開発・管理するための包括的な機能を提供するクラウド環境である「Anypoint Platform」についてご紹介します。API 主導のシステム連携をサポートするための幅広い...

アピリオまでお気軽にお問合せください

ご質問はこちら