VoltMX Iris9.5 MicroAppアーキテクチャ入門 - Foundry Appとの連携方法について -

# 目次
1. はじめに
1. 完成イメージ
1. 実装方法
1. 最後に

# はじめに
前回までIrisでMicroAppアーキテクチャを使ったアプリの実装方法について説明しました。

今回はFoundryでAPIを作成した後、下図のようにFoundryアプリとIrisアプリを接続し、
1つのアプリとしてプレビューする方法について紹介していきます！
（今回Foundryとの接続についての説明がメインのため、Controller上のロジック説明については省略します。）

![スクリーンショット 0005-03-13 15.54.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/5b2a3c8e-6596-b36b-e889-14749ffdf556.png)

MicroAppの概要などについて知りたい方は以下のリンクもご参考ください👀

【MicroAppアーキテクチャ入門】
- [MicroAppの概要と連携方法について](https://qiita.com/Kony_Team/items/13a337475d707ff3a59c)
- [複数App間でのリソース共有方法について](https://qiita.com/Kony_Team/items/aea161e9c0716226ee3b)
- [複数App間で画面遷移を行う方法について](https://qiita.com/Kony_Team/items/d88043af3e5736dadc2a)
- Foundry Appとの連携方法について（👈今回のパート）


# 完成イメージ

今回の記事を読むことで以下のようなアプリを作成できるようになります。
![ezgif-4-50e7aefb33.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/c93686f8-65ac-c6c4-3b2b-8a5491f18e37.gif)

Foundry Appで認証サービスと問い合わせ一覧APIを別々のApp内に作成し、
ログイン画面でIdentity Serviceを呼び出し認証を実行後、
問い合わせ画面で問い合わせ一覧を取得できるようなアプリを作成していきます。

# 実装方法
## 1. Foundry Appを作成
フロントと接続するFoundry Appをそれぞれ作成していきます。

今回はこのように作成しました。
![スクリーンショット 0005-03-13 17.35.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/523e4ffb-cdb9-0595-6363-2a3a241f980f.png)

Deliveryには、ログイン画面で認証を行えるように、
Identity ServiceのUser Repositoryで簡易認証APIを作成しました。
![スクリーンショット_0005-03-13_16_59_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/b26f4af6-868c-de55-c93b-788b3a355321.png)

InquiryMAには、Integration ServiceのRelational Databaseを使い、
問い合わせ一覧を取得するAPIを作成しました。
![スクリーンショット 0005-03-13 17.15.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/efb762c2-9260-c4b0-5b77-ad673433893a.png)
※OrderMAに関しては、基本的に他Appと同じ設定でAPIの作成ができるため今回は説明を省きます。


認証サービスとAPIの作成方法については、以下で詳しく説明していますのでご参考ください。

|記事タイトル|リンク|
|--|--|
|User Repositoryの作成方法|https://qiita.com/Kony_Team/items/963a88c97dab99f8b583|
|Integration Service/Relational DatabaseでのAPI作成方法|https://qiita.com/Kony_Team/items/5236864ada5b825b7792|


## 2. BaseAppとMicroAppの接続
次にベースアプリであるDeliveryに他のMicroApp（OrderMA,InquiryMA）を紐付けます。



DeliveryのAppを開き、「⋯」をクリックしManage Linked Appsを選択します。
![スクリーンショット_0005-03-14_15_27_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/196c26ff-c427-f58a-d52c-a26b5da9c024.png)

「+Add」をクリックしてリンクするAppを選択します。
使用するAppにチェックマークをつけて「Link」をクリックします。
今回InquiryMAとOrderMAを使用するので2つのAppをリンクしました。
![スクリーンショット 0005-03-14 15.28.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/01bc94f3-4a38-7b7e-56da-ae5ad740b8e7.png)

Appが接続できたらIris側からAPIを呼べるようにPublishを行います。

:::note warn
ベースアプリのManage Linked Apps設定で他MicroAppとの紐付けを行わない場合、
Iris側でベースアプリ以外のアプリでAPIの呼び出しロジックを実装しても
APIの呼び出しに失敗してしまうためご注意ください。
:::

## 3. Publish
APIの作成とAppの紐付けが完了したので、Publishを行っていきます。

2の手順で関連するAppを接続することで、
**紐付けを行ったベースアプリ（Delivery）でPublishをするだけで紐づくAppも同時にPublishすることができます。**

Publishタブに移動し、Publishボタンをクリックします。

![スクリーンショット_0005-03-14_18_05_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/9dc28e09-36d2-d3ef-4b57-77b65cf831a6.png)

ベースアプリでリンク設定をしていると、以下のようにリンクしたAppも同時にPublishされるようになります。
1つ1つPublishする必要がないので便利ですね！
![スクリーンショット 0005-03-14 15.30.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/8410e9e4-5b15-318e-6c35-3bf1635e137b.png)

これでFoundryでの設定は以上となります。
Publishが終わったらIrisを開き、Foundry Appとの接続を行っていきます。

## 4. Appごとに各Foundry Appと接続
Publishが終わり全てのFoundry AppのAPIが使用可能になったので、
Irisを開きフロントアプリとの接続を行っていきます。

他MicroAppとリンク済みのベースアプリを開いた状態（※）で、
各MicroAppごとにFoundry Appを接続していきます。

※MicroApp同士のリンク方法がわからない方は以下の記事をご参考下さい。

https://qiita.com/Kony_Team/items/13a337475d707ff3a59c

ベースアプリを開いた状態で他のMicroAppでFoundryと接続する場合は、
下記の動画の通り、まず対象のMicroAppのデバイスをクリックした後、
通常通り右側の「≡」をクリックしてFoundryとの接続を行ってください。
　![ezgif-1-f97fb44ee7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/b670f0ae-193d-12a5-e35c-f3bda33433a9.gif)

それぞれのMicroAppが以下のようにFoudryAppと接続できていればOKです。

|App|接続状態|
|--|--|
|Delivery|![空白_Skitch_キャンバス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/8e2c7230-673d-68c0-ec8f-8e3b848566aa.png)|
|Inquiry|![スクリーンショット_0005-03-14_18_31_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/a347a454-a360-3cf4-7547-dede16ff8501.png)|
|Order|![スクリーンショット_0005-03-14_16_42_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/44da850d-3e0d-9142-70a0-9ef47af25005.png)|


FoundryアプリとIrisのアプリが接続できたので、
早速プレビューしてアプリ全体の動作を見ていきましょう！

## 5. プレビュー

ベースアプリのDeliveryを開いた状態で、
いつも通りBuild->Run Live Previewを選択しプレビューを実行します。

![ezgif-4-50e7aefb33.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/8468cde9-a5d9-4347-bd1e-4c5690467557.gif)

ログイン画面ではDeliveryのIdentityServiceを呼び認証を実行し、
失敗時にエラー表示、成功時にメイン画面に遷移することができています。
またメイン画面から問い合わせ画面に遷移後、
InquiryMAのIntegration Serviceを呼び、問い合わせ一覧を取得することができました！


# 最後に
Foundry AppとMicroAppの接続方法は理解できたでしょうか？
MicroAppアーキテクチャに関する記事は今回で終了となります！
MicroAppを使ったアプリの開発を検討している人は、過去記事も是非参考にしてみてくださいね！

# 参考
https://opensource.hcltechsw.com/volt-mx-docs/95/docs/documentation/Iris/iris_microapps/Content/MicroApp.html#link-a-volt-foundry-app-to-a-micro-app