Ionic Vue のアプリをスマホ(Android)で実行する(Windows 10)

Ionic（知らないのでさっき調べた）、Vue.js（ﾁｮｯﾄｻﾜｯﾀｺﾄｱﾙ）、TypeScript（Java とかみたいなものでしょ？）レベルの人が Ionic Vue で作成した適当なアプリをスマホ（Android）で動かすまでの流れです。

Ionic は今までWebアプリを作成してたような感じでデスクトップアプリやモバイルアプリを作成することができるフレームワークです。例えば Vue.js でWebアプリもデスクトップアプリもモバイルアプリも作成できます。

2020年10月に Ionic Framework の Vue.js 版である Ionic Vue がリリースされました。

[Ionic Vue](https://ionicframework.com/jp/docs/vue/overview)

#1. 開発環境
Windows 10
Node.js 12.16.1
Android Studio 4.1.1
実機のスマホ：Android 10

#2. 手順

##2.1. Node.js をインストール
Node.js のサイトからダウンロードしてインストールします。

##2.2. Ionic CLI をインストール
コマンドプロンプトで以下のコマンドを実行します。

```
>npm install -g @ionic/cli
```

##2.3. Ionic Vue のプロジェクトを作成

コマンドプロンプトで Ionic Vue プロジェクトを作成したい場所へ移動して、以下のコマンドを実行します。

```
>ionic start <プロジェクト名> tabs --type vue --capacitor
```

途中、アカウントを作成するか聞かれますが、私は作成しませんでした。

##2.4. デフォルトで作成されたWebアプリの動作確認

コマンドプロンプトで、先ほど作成した Ionic Vue プロジェクトの場所まで移動して、以下のコマンドを実行します。

```
>ionic serve
```

デフォルトで `http://localhost:8100` が立ち上がります。

![a.デフォルト.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/685bd405-0648-cc4e-c052-cbf85b22a76e.png)


##2.5. 簡単なアプリの作成

グラフ描画ライブラリ chart.js を使って適当なグラフを表示するだけのアプリを作成します。まず、chart.js をインストールします。
※Vue.js 版もありますが、現在 Vue 3 に対応していないようなので JavaScript 版を使います。

コマンドプロンプトで Ionic Vue プロジェクトの場所まで移動して、以下のコマンドを実行します。

```
>npm install chart.js
```

`src\views\Tab1.vue`の中身を書き換えます。


```src\views\Tab1.vue
<template>
  <ion-page>
    <ion-header>
      <ion-toolbar>
        <ion-title>Tab 1</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content :fullscreen="true">
      <ion-header collapse="condense">
        <ion-toolbar>
          <ion-title size="large">Tab 1</ion-title>
        </ion-toolbar>
      </ion-header>
      <canvas id="chart"></canvas>
    </ion-content>
  </ion-page>
</template>

<script lang="ts">
import { defineComponent } from "vue"
import { IonPage, IonHeader, IonToolbar, IonTitle, IonContent } from "@ionic/vue"
import { Chart } from "chart.js"

export default defineComponent({
  name: "Tab1",
  components: { IonHeader, IonToolbar, IonTitle, IonContent, IonPage },
  mounted() {
    new Chart("chart", {
      type: "line",
        data: {
          labels: ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"],
          datasets: [
            {
              label: "サンプル1",
              backgroundColor: "teal",
              borderWidth: 1,
              pointBackgroundColor: "white",
              pointBorderColor: "darkgreen",
              data: [10, 9, 8, 7, 6, 1, 1, 6, 7, 8, 9, 10]
            },
            {
              label: "サンプル2",
              backgroundColor: "mediumvioletred",
              borderWidth: 1,
              data: [1, 2, 3, 4, 5, 6, 7, 6, 8, 9, 10, 8]
            }
          ]
        }
    })
  }
})
</script>
```

※グラフにするデータは適当です。

このままビルドすると`Could not find a declaration file for module 'chart.js'`というエラーが出るので、`src`配下に`@types`フォルダを作成し、そこに`chart.d.ts`ファイルを作成します。内容は以下のようにします。

```src\@types\chart.d.ts
declare module 'chart.js'
```

ここまで終わったらビルドします。

```
>ionic build
```

`dist`フォルダ配下にモジュールが作成されます。

##2.6. Android 用プロジェクトを作成

コマンドプロンプトで Ionic Vue プロジェクトの場所まで移動して、以下のコマンドを実行します。

```
>ionic cap add android
```

android フォルダが作成され、Android 用プロジェクトが作成されます。

##2.7. Android Studio をインストール

Android での実行用に、Android Studio をインストールします。

サイトから zip 版をインストールして、展開して任意のフォルダに置きます。

capacitor.config.json にそのパスを追記します。

```capacitor.config.json
{
  "他の設定1": "XXX"
  "他の設定2": "XXX"
  …
  "windowsAndroidStudioPath": "<Android Studio のフォルダ>\\bin\\studio64.exe"
}
```

コマンドプロンプトで Ionic Vue プロジェクトの場所まで移動して、以下のコマンドを実行します。

```
>ionic cap sync
```

##2.8. Android用 SDK のインストール

コマンドプロンプトで Ionic Vue プロジェクトの場所まで移動して、以下のコマンドを実行します。

```
>ionic cap open android
```

Android Studio が開きます。
しかし、次の選択画面が出て、何も選べずにそのまま進むとエラーになります。
![d.cの次に出たもの.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/028dad2d-47a9-7a16-c2c1-88ad1cd79003.png)
・「Cancel」を選択。

![e.dの次に出たもの.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/ec870100-28e6-a18e-100a-3e197af237af.png)
・「No」を選択。

![f.a.開いた Android Studio_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/5ade82d3-bd87-c822-c59d-1766b09713cb.png)

SDK がインストールされていないのが原因なので、インストールします。

![f.b.開いた Android Studio_color_2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/55029280-d9d9-5494-dcc1-9b9edd8280af.png)
・画面右上の SDK Manager ボタン（立方体のようなもの）をクリック。

![g.a_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/c950333d-228d-0265-71f7-4aced104bfd9.png)

・「Android SDK Location:」の「Edit」リンクをクリック。

![h.a_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/c1d882d9-1aa1-3df8-b6bb-26a00c666472.png)
・インストールするフォルダを選択して、右下の「Next」ボタンをクリック。

![l.a_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/58b99508-2131-67ad-f633-77f4462736df.png)
・Android 11.0 のインストール完了。

今回、Android 10.0 もインストールします。

![zb.a_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/aad39760-9707-41e7-b0e0-c70ad474930e.png)
a. Android 10.0 を選択。
b. 画面右下の「Apply」をクリック。
c. 画面右下の「OK」をクリック。
d. 先ほどと同様に Android 10.0 をインストール。

次に以下を実行します。

![m.a_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/bf446768-9ca9-5b34-7ab5-a317d6646db5.png)
・画面右上の Sync Project With Gradle Files ボタンをクリック。

![q.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/56b5257b-d576-cd8b-dfb9-7932283f5b4a.png)
・同期完了。

##2.9. Android での実行

https://developer.android.com/training/basics/firstapp/running-app?hl=ja#RealDevice
を参考にして、開発したアプリをスマホで実行できるようにスマホの設定を変更します。

まず、開発しているPCとスマホ（Android）を USB で接続します。

a. 「設定」アプリを開きます。
b. Android 8.0 以降のスマホでは「システム」を選択し、それ以外の場合は次の手順に進みます。
c. 「デバイス情報」を選択します。
d. 「Build number」を7回タップします。
e. 前の画面に戻り、「Developer options」をタップします。
f. 「Developer options」ウィンドウで「USB debugging」を有効にします。

スマホの設定が終わったらコマンドプロンプトで`<SDK をインストールしたフォルダ>\platform-tools`に移動して、以下のコマンドを実行します。

```
>adb devices
```

結果に`<数字の列> unauthorized`と表示された場合、スマホの画面を見ると「スマホに USB デバッグを許可しますか？」的なメッセージが出ています。
ここで「許可」を選択します。

もう一度以下のコマンドを実行します。

```
>adb devices
```

結果が`<数字の列> device`となれば、スマホ側でアプリを実行できる準備が整っています。

ここで一旦 Android Studio を閉じて、コマンドプロンプトで Ionic Vue プロジェクトの場所まで移動して、以下のコマンドを実行して開き直します。

```
>ionic cap open android
```

開いたら画面上に接続したスマホの機種が表示されます。

![zc.a_color.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/61946b9c-1b57-766c-386d-27854a7be0ea.png)
・「実行」ボタンをクリック。

スマホ側でアプリが実行されます。

以下はスマホのスクリーンショットです。

![Screenshot_20201229-093050_color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666395/b962f86f-eb17-4314-1898-45a8d3e4ba4a.png)

スマホ側には場合によってその他設定が必要な可能性があるので、その場合は他にも色々参考にしてみてください。