MacでCordovaのインストール・実行・ビルドまで (iOS, Android, Web)

Apache Cordova

Apache Cordova は HTML5 + CSS3 + JavaScript を用いてiOS, Androidのクロスプラットフォーム開発が行える便利なフレームワークです。表示には各プラットフォームの WebView が利用されますが、ネイティブアプリと同様にカメラやセンサなどプラットフォーム固有の機能を利用することもできます。
Cordova を手っ取り早く始めるには、Monaca を利用する方法もありますが、 Cordova はオープンソースで開発されており、全て無料で始めることができますので、ここでは Cordova のインストールから実行・ビルドまでの方法を紹介します。

Cordova のインストール

ここでは、次の手順でCordovaをインストールします。ほかの手順でもインストールできますが、私の場合、結局 homebrew が必要になり Node.js から再インストールしたこともあるので、次の手順で行っています。

  • Homebrew インストール
  • nodebrew インストール
  • Node.js インストール
  • Cordova インストール

Homebrew インストール

Homebrewは次のコマンドでインストールします。ターミナルを起動し、次のコマンドを実行してください。基本的にメッセージに沿って実行すれば問題ありません。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

インストール完了後、次のコマンドで正常に動作可能であることを確認します。

$ brew doctor
Your system is ready to brew.

nodebrew インストール

Nodeをインストールするために、nodebrewを用います。インストールコマンドは次の通りです。

$ brew install nodebrew

Node.js インストール

ここでは推奨版である LTS の Node.js をインストールします。

$ nodebrew install-binary stable

またインストール後は設定が必要です。

$ nodebrew ls
$ nodebrew use v12.16.0

インストールした nodebrew のバージョンを確認し、利用する nodebrew のバージョンを指定します。

Cordova インストール

ようやく Cordova をインストールすることができます。 npm コマンドでインストールします。

$ npm install -g cordova

これで完了です。私が実際にインストールしたバージョンは次の通りです。

$ brew -v
Homebrew 2.2.5
$ nodebrew -v
nodebrew 1.0.1
$ node -v
node v12.16.0
$ cordova -v
9.0.0 (cordova-lib@9.0.1)

Cordova プロジェクト作成

Cordova でプロジェクトを作成するには次のコマンドを用います。また以後はプロジェクトフォルダ内で作業します。

$ cordova create CordovaProject
$ cd CordovaProject

私は普段から iOS, Android, Web 向けに開発を行っているため、次のようにしてプラットフォームを追加します。

$ cordova platform add ios android browser

iOS, Android 向けの実行

iOS 用のアプリを実行・ビルドするには Xcode が必要です。 App Storeよりインストールを行ってください。

また Android 用のアプリを実行・ビルドするには Android Studio が必要です。

Android Studio
https://developer.android.com/studio/?hl=ja

もし実行中に JDK のバージョンが違うと怒られたら、OpenJDK 8 をインストールしましょう。

OpenJDK 8
https://adoptopenjdk.net/archive.html

Cordova の実行

それぞれのプラットフォームで実行するには、次のコマンドを叩きます。

$ cordova build ios
$ cordova build android
$ cordova build browser

正常に実行できると次のような画面が表示されます。

Cordova のビルド

それぞれのプラットフォームでビルドするには、次のコマンドを叩きます。

$ cordova build ios
$ cordova build android

Androidでリリースビルドを行う場合は、鍵を用意した上で次のコマンドを叩きます。

$ cordova build android --release

変更をリアルタイムに反映するプラグイン

実行できるようになりましたが、これではソースコードを修正するたびに実行しなおす必要があります。ソースコードを修正したらすぐに画面に反映された方が、より開発がはかどります。
そこで「 cordova-plugin-browsersync-gen2 」のプラグインをインストールするといいでしょう。プロジェクトのフォルダ上で次のコマンドを実行してください。

$ cordova plugin add cordova-plugin-browsersync-gen2

そして実行は次のようにオプションを追加します。

$ cordova run ios --live-reload
$ cordova run android --live-reload
$ cordova run browser --live-reload

実行すると次のような画面が表示されますが、上下のいずれかを選択するとおなじみの画面が表示されます。これでソースコードを修正・保存すれば、リアルタイムに修正が反映されます。

Androidの場合は、注意が必要です。API 29だと次のような表示が永遠と続き、実行することができませんでした。

$ cordova run android --live-reload
Waiting for emulator to boot (this may take a while)...............

そこでエミュレータの API を 24 に変更すると正常に動作しました。

iOS 向けに WKWebView を利用するプラグイン

Cordova ではiOSにおいて UIWebView が利用されています。しかし、Apple は 2020年4月より UIWebView を利用するアプリの申請を行うことができません。Cordova は UIWebView を用いず WKWebView を利用する修正を行っています。とりあえず、iOS 向けに WKWebView を利用するには次の3つのプラグインを利用します。

$ cordova plugin add cordova-plugin-wkwebview-engine
$ cordova plugin add https://github.com/TheMattRay/cordova-plugin-wkwebviewxhrfix
$ cordova plugin add cordova-plugin-inappbrowser

Xcodeのログを確認すると、次のように表示されていることが確認できます。

Using WKWebView

まとめ

Cordova は HTML5 + CSS3 + JavaScript を用いてiOS, Androidのクロスプラットフォーム開発が行える便利なフレームワークです。しかし、iOS向けには 2020年4月より UIWebView が利用できなくなる問題が残っており、少々不安ではあります。
弊社ではこれまで Cordova を多く利用してきました。しかし、ちょうど2020年4月にリリースする予定のアプリがあり、2020年2月現在 Cordova の状況が見えないため、今回の開発では Cordova の利用を見送りました。非常に便利なツールですので、ぜひこの問題を早急に解決してもらいたいものです。