Ionic 5 でモバイル&デスクトップアプリを試してみたpost

モバイルでもウェブでもデスクトップでも動くサービスを作る方法を調べて、とりあえず React で実装できそうな Ionic 5 を試してみることにしました。

準備

まず、 ionic のコンソールツールをインストールします。

$ npm install -g @ionic/cli

ios 向けを開発する場合はさらに

$ npm install -g ios-sim
$ brew install ios-deploy

プロジェクトの作成

コンソールツールがインストールできたら、プロジェクトを作成します。

引数は次のような感じで指定します。

$ ionic start <アプリ名> <テンプレート名> --type=react --capacitor
$ cd <アプリ名>

<アプリ名>

myApp など、プロジェクトの名前を指定

<テンプレート名>

--type=react で指定可能なテンプレート名の種類

テンプレート名説明
blank空白のスタータープロジェクト
listリスト付きの開始プロジェクト
my-first-appギャラリー付きのカメラを構築するサンプルアプリケーション
sidemenuコンテンツ領域にナビゲーションを備えたサイドメニューを備えた開始プロジェクト
tabsシンプルなタブ付きインターフェースを備えた開始プロジェクト
conferenceIonicが提供するすべてを披露するキッチンシンク(ライブラリが提供する機能を網羅するサンプル)アプリケーション

その他

パラメータ説明
--capacitorCapacitor(クロスプラットフォームなネイティブランタイム)を利用するため

Capacitor を利用するための追加設定

Capacitor の初期化

$ npx cap init <アプリ名> <アプリId> --web-dir=build --npm-client=yarn

<アプリ名>

ionic start で指定した値と同じものを指定。

<アプリId>

com.example.app みたいな値。

その他

パラメータ説明
--web-dir=buildプロジェクトで作成したウェブアセットのディレクトリ
--npm-client=yarnnpm or yarn ※ npm 7 以降で互換性の問題が発生している模様なので Yarn を選択

Native プラットフォームの追加

$ ionic build
$ npx cap add <プラットフォーム>

プラットフォームの追加前に ionic build が必要。

実行しない場合、

$ npx cap add electron
[error] Capacitor could not find the web assets directory "~/test1/build".
    Please create it, and make sure it has an index.html file. You can change
    the path of this directory in capacitor.config.json.
    More info: https://capacitor.ionicframework.com/docs/basics/configuring-your-app

とメッセージが出ます。

<プラットフォーム>

指定可能な値

プラットフォーム説明
androidAndroid 向けの構成
iosiOS 向けの構成
electron(Electronで実装される)デスクトップ向けの構成

Native プラットフォームの実行

$ ionic build
$ npx cap copy
$ npx cap open <プラットフォーム>

<プラットフォーム>

npx cap add で指定可能な値と同じ

リリースビルド

electron

事前に electron-packager をインストール

$ npm install -g electron-packager

パラメータを指定して実行

$ electron-packager ./electron <アプリ名> --platform=<プラットフォーム> --arch=<アーキテクチャ> [オプションフラグ...]

<アプリ名>

ionic start で指定した値と同じものを指定。

<プラットフォーム>と<アーキテクチャ>

プラットフォームアーキテクチャ概要
darwinx64macOS
win32x64Windows 64ビット向け

[オプションフラグ]

オプションフラグ概要
--arch=...all 、または1つ以上:ia32x64armv7larm64mips64el(複数の場合はカンマ区切り)。 デフォルトはホストのアーチです
--icon=...アプリのアイコンとして使用するアイコンファイルへのローカルパス。注:形式はプラットフォームによって異なります。
--overwriteプラットフォームの出力ディレクトリがすでに存在する場合は、スキップするのではなく置き換えます
--platform=...all 、または1つ以上:darwinlinuxmaswin32(複数の場合はカンマ区切り)。デフォルトはホストのプラットフォームです

その他、かなり多いので usage.txt を参考に。

まとめ

ざっと試したところ、テンプレートの保守がされてないのか、色々躓く所があった。

特に、 Electron サポートは散々で、blankmy-first-apptabs ぐらいしかまともに試せない感じ。 my-first-app もだいたい動くけどカメラは動作していないと思う...

プラットフォーム起動ビルド
iosnpx cap open iosXCodeで作業 Deploying Capacitor Applications to iOS (Development & Distribution) を参考
androidnpx cap open androidDeploying Capacitor Applications to Android (Development & Distribution) を参考
electronnpx cap open electronelectron-packager ./electron <アプリ名>

参考


   /   変更履歴  /   Permalink  /  このエントリーをはてなブックマークに追加 
 カテゴリ: ブログ  /   タグ: Ionic, Javascript, React, Electron