ifLinkマイクロサービス(IMS)を、ざっくり作ってみた（Windows10）

ifLinkのマイクロサービス開発手順を紹介したいと思います。
今回は環境作成からAPKファイル作成までを紹介します。


#ifLinkマイクロサービスとは
ifLinkを使ってレシピを作成するときのIF-THENのマイクロサービスです。
ifLinkのマイクロサービスの開発はiLOC会員であることが前提となります。
ifLinkやiLOCに関しては以下をご参照ください。

https://iflink.jp/

#AndroidStudio4.2.0のインストール
ifLinkテンプレート機能は動作するAndroidStudioは、4.1.1、4.1.3、4.2.0、みたいなので、今回は4.2.0を使用するのと、インストーラ版ではなくZIP版を利用してセットアップします。

まず、AndroidStrudioの公式サイトよりAndroidStudio4.2.0をダウンロードします。

https://developer.android.com/studio/archive

利用規約を読み、「ライセンス契約に同意する」をクリックすると過去にリリースされたAndroidStrudioをダウンロードする画面が表示されます。
その中から、「Android Studio 4.2.0     2021年5月4日」をダウンロードします。
インストーラ版とZipファイル版がありますが、どちらでも大丈夫です。
今回はZipファイル版で説明します。
![2021-10-19_162232.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/da115172-7861-656b-d732-1b0935c306ea.png)
ダウンロードしたZIPファイルを任意のフォルダに解凍します。
解凍が終わったら、binフォルダのstudio64.exeでAndroidStudioを起動します。
![2021-10-20_083725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/c8de9c29-952a-186b-33f1-b43cd1a00c82.png)
起動画面が表示されます。
![2021-10-20_084948.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/f4486e86-18e6-cd04-2124-54f17fd3cd4a.png)
設定を読み込むかどうかの選択画面が表示されますので、今回は初めてインストールするので"Do not import setting"を選びます。
![2021-10-20_085002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/afc2fa0a-99d5-9d62-6b67-f09ca38a70d7.png)
Googleへの情報提供の確認画面が表示されます。どちらを選んでもOKです。
![2021-10-20_085057.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/36ffcffb-0eeb-d9e6-569b-fd946d306e66.png)
ウィザードが表示されます。
"Next"をクリックします。
![2021-10-20_085127.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/d23a497b-abf5-58c2-efdf-7d5a642487e7.png)
"Custom"を選択して"Next"をクリックします。
![2021-10-20_085315.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/3be5a83e-56e8-91a2-baef-59e09215b9f8.png)
"jre"の場所の指定をします。デフォルトでZIPに含まれていたものが設定されているので今回はデフォルトのまま"Next"をクリックします。
![2021-10-20_085333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/b536a92d-7c11-e8d4-7e57-a9e8196ea429.png)
スキンを選択します。私は"Darvula"が好きなのでそっちを選択しました。
![2021-10-20_085357.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/08ac653c-f16d-6d05-cd1b-7bdeceecf68e.png)
SDKを選択します。基本的に変えられないのでデフォルトのまま"Next"をクリックします。
![2021-10-20_085416.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/b5ee7725-4543-d515-3ce3-f49d48642b67.png)
メモリ設定はデフォルトのままとしました。
IMS開発では1GBぐらいあればよさそうです。
![2021-10-20_085448.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/d7b0ec73-679f-be92-1ed8-a7eed4216e7a.png)
最後に確認画面が表示されます。
"Finish"をクリックするとインストールが開始されます。
![2021-10-20_085504.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/1952e7fb-0431-9399-61a1-8bb9353cebe1.png)
しばらく待ちましょう
![2021-10-20_085521.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/8bc5ab3a-27d9-74f0-cc1c-b803bd3176b0.png)
完了したら"Finish"をクリックします。
![2021-10-20_091356.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/aaba07f3-3bac-024f-4e7a-5a30a96130a9.png)
AndroidStrudioが起動します。
ここから初期セットアップしていきます。
![2021-10-20_091427.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/22c72e27-d1c5-d4f0-d262-75a293de10c9.png)
画面一番下の"Configure"⇒"Setting"をクリックします。
![2021-10-20_091750.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/ea9a5475-0a41-757a-babf-8e335d29824a.png)
"Appearance & Behavior"⇒"System Settings"⇒"Android SDK"を開き、"Android API 31"をオフ、"Android 10.0"と"Android 9.0"を選択して"Apply"をクリックします。
![2021-10-20_091915.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/16bf7293-ff98-eb20-7621-9b31da5b8f82.png)
確認画面が表示されるので"OK"をクリックします。
![2021-10-20_092239.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/601e3550-9aaa-a3ca-3779-18c966701d75.png)
ライセンス確認も"Accept"を選択して"Next"をクリックします。
![2021-10-20_092344.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/19bb8017-3af9-1431-0370-b091ccb40bc8.png)
SDKのインストールが開始されますので終わるまでしばらく待ちましょう。
![2021-10-20_092433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/edbe2b55-aa4a-27fb-20ed-f26b58c95ebf.png)
インストールが終わったら"Finish"をクリックします。
![2021-10-20_103519.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/fa458592-07bf-3c79-e169-d7d2bede2d71.png)
続いて、ifLinkテンプレート機能のインストールを行います。
まずは、jarをダウンロードします。

jarは以下のサイトからダウンロードできます。

[ifLink Open Community 会員サイト](https://member.iflink.community/)


「技術情報」タブの「開発者向け」「マイクロサービス開発キット」の中の「ifLink テンプレート機能（Android Studio v4.0対応）」をダウンロードします。

![2021-10-25_183728.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/d951d2e0-9101-dbd8-90c6-7202fb31e0cd.png)

続いて、AndroidStrudioの設定画面から"Plugins"を選択します。
![2021-10-20_104359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/3f0ff822-4cc4-a27d-d601-e5f7b572de99.png)
最上部の歯車マークをクリックし、"Install Plugin from Disk..."をクリックします。
![2021-10-20_104436.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/63f8123e-f056-9e84-1a30-56950bb9ee76.png)
ダウンロードしたjarを選択して"OK"をクリックします。
![2021-10-20_104640.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/47815e0a-ba79-f41d-94d2-7b7e44d0e19a.png)
インストールが成功すると"ifLink CustomIMS Template Plugin"が表示されます。
![2021-10-20_104737.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/42b9f7a8-87cd-d2c1-4072-68a4d6b2d0de.png)
最後に"OK"をクリックして設定画面を終了します。
![2021-10-20_104915.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/bd6aaf59-9d17-2584-b77e-8b20a3b8bb6f.png)
再起動を要求されるので"Restart"をクリックしてAndroidStrudioを再起動しましょう。

#ざっくり、IMSを作ってみる
細かい設定や実際に作るときの実装の仕方などは次回で説明したいと思います。
まずは、ざっくり、IMSを作って手順を確認しましょう。

AndroidStudioの起動画面で"+Create New Project"をクリックします。
![2021-10-25_194508.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/838f39ae-d033-7eb3-90e6-5658b5b7fae8.png)
「No Activity」を選択して"Next"をクリックします。
![2021-10-25_194701.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/b4ad7642-153d-9cce-fdcb-8bf25bdbe24b.png)
以下のように設定して"Finish"をクリックします。
Name: IMS名 (今回は"MyFirstIms"としました)
Package name: パッケージ名(今回はデフォルトのまま)
Save location: プロジェクトの格納先フォルダ(今回はデフォルトのまま)
Language: "Java"を選択
Minimum SDK: "API 23: Android 6.0 (Marshmallow)"を選択
Use legacy android support libraries: チェックしない
![2021-10-25_194946.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/eec96e0c-d356-1048-cef4-16319ab90a6c.png)
AndroidStudioの画面が起動します。下のプロセスバーが落ち着くまで待ちましょう。（結構、時間がかかります。）
![2021-10-25_195535.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/91e4cd34-435a-bbb4-2944-306b635e9107.png)
Gradleのダウンロードやビルドも実施され、最終的にこんな感じの画面になります。
![2021-10-25_200630.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/2373ab26-83a6-4c08-de4b-32c2eb906ca1.png)
不要なWindowは以下のボタンで最小化しましょう。
![2021-10-25_200728.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/8cdc2bf0-ca19-508d-687e-83898b81fe2f.png)
"Build"をクリックして処理結果を確認します。
警告が出てますねぇ。
このままだとコンパイルできないと思うので修正します。
![2021-10-25_201040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/22bf5e72-86fd-2580-e91e-57df48eff064.png)
警告をダブルクリックすると警告箇所が表示されます。
"build.gradle(:app)"の7行目を以下のように修正し、最後に"Sync Now"をクリックします。
![2021-10-25_202209.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/ef0466de-5b02-eed8-4418-72cb2c719d95.png)
再度、ビルドが走り、警告が消えます。
![2021-10-25_202414.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/15716613-7e40-d997-82ce-4ed35f80d5d1.png)
次に、"app"を一度クリックし、そのあとで右クリックして、"New"⇒"Activity"⇒"ifLink CustomIMS Template(V2.0)"をクリックします。
![2021-10-25_202700.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/77ffd876-d193-7f48-09c0-32664980b171.png)
ifLinkテンプレート機能の画面が表示されます。
ifLinkテンプレート機能はIMSクラス、デバイスクラス、SettingActibityクラスの3つのクラスを生成します。
それぞれのクラスの設定は"クラス名"で切り替えます。
デフォルトでは"IMS Class"が選択されているので、IMSクラスから設定していきましょう。
![2021-10-25_203353.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/4487ba16-6a1d-a92c-f2cd-98e86a8d780a.png)
デバイス名にIMSの名前(今回は"MyFirstIms")を入力すると、パッケージ名、サービス表示名、CustomImsクラス名が自動的に入力されます。必要に応じて変更しましょう。
![2021-10-25_202919.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/dcfc3dd3-b62f-b46a-3593-fe2824de5e90.png)
次に"クラス選択"で、"Device Class"、"Setting Activity"を選択すると、画面項目が切り替わるのでそれぞれの設定を変更します。
今回はざっくりIMS作成が目的なので、全てデフォルトのままクラスを生成します。
![2021-10-25_203743.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/21e1d2b7-d999-7191-6795-652f629c1d85.png)
"Finish"をクリックするとクラスが生成されます。
![2021-10-25_203948.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/789c77f5-d84b-5a03-2c59-a044eb3b7eef.png)
クラスが出来たのでコンパイルしてAPKファイルを作成してみましょう。
画面上部の"Make Project"ボタンを押すとコンパイルが実行されます。
![2021-10-25_204041.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/47448dd7-5f38-6120-5531-352d0900ed03.png)
若干、警告が出ますが :sweat:  、何とかコンパイルが完了しました。
コンパイルが終わったら、"Android"をクリックして、"Project"に切り替えます。
![2021-10-25_205128.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/cfd42f84-54b7-7f21-416b-9092f7e2bcbd.png)
"MyFirstIms"⇒"app"⇒"buil"⇒"outputs"⇒"apk"⇒"debug"⇒"app-debug.apk"が生成されます。
![2021-10-25_205241.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2192487/d167c5f3-c81e-b118-c275-bbe0442cb4e7.png)


#まとめ
今回は、ifLinkテンプレート機能を使って自動生成したクラスをコンパイルしてAPKファイルを作成するところまでの手順を紹介しました。
次回はifLinkテンプレート機能の設定内容やIMSプログラムの実装などを紹介して実際にIMSを作っていきたいと思います。
VertualBox上でAndroidOSを動かしてデバックする方法なども紹介したいと思います。
お楽しみに～♪