こんにちはアピリオ北嵐です。第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 の開発作業の流れ]
[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 を導入してください。
※ 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 のコンテンツをもっと見る