
以前、ADAMANT AndroidアプリはPWABuilderを使用して構築されており、いくつかの制限がありました:ターゲットAPIレベルを制御できない、ネイティブコードにアクセスできない、自動化のサポートがないなどです。PWA v4.7のアップデートにより、アプリはCapacitor.jsに移行されました。これにより、ネイティブコードの完全な制御、Cordova APIを通じたプッシュ通知やカメラなどのネイティブ機能の実行、コードの最適化、カスタムプラグイン、CI/CDの自動化が可能になりました。

なぜCapacitor.jsを選んだのか?
ADAMANT Messengerは、パフォーマンス、セキュリティ、保守性を重視する分散型メッセージングプラットフォームです。Capacitor.jsは、Vue.jsのようなモダンなWebフレームワークとシームレスに統合でき、iOS、Android、Webで単一のコードベースを共有可能であり、Web体験を損なうことなくネイティブAPIにアクセスでき、活発な開発と充実したドキュメントが整っているため選ばれました。

比較:ネイティブAndroid、PWABuilder、Capacitor.js
ネイティブAndroid開発は、すべてのAndroid機能とAPIに完全にアクセスでき、高いパフォーマンスを発揮し、UIや機能に対して細かな制御が可能です。しかし、JavaまたはKotlinの専門知識が必要であり、プラットフォームごとに別々のコードベースを管理する必要があり、開発コストと時間が高くなるという課題があります。
PWABuilderは、最小限の設定でPWAをネイティブアプリに変換でき、簡単なアプリやネイティブ機能が限定的な用途に適しています。しかし、デバイスのネイティブ機能へのアクセスが制限され、完全なネイティブアプリほどのパフォーマンスが得られない可能性があり、サードパーティの変換サービスに依存するという欠点があります。
Capacitor.jsは、クロスプラットフォームで単一のコードベースを維持しつつ、ネイティブAPIやプラグインにアクセスでき、モダンなWeb開発ツールやフレームワークをサポートし、活発なコミュニティによる継続的な更新が特徴です。ただし、Webとネイティブの橋渡しに慣れていない場合の学習コストがわずかに発生し、一部のネイティブ機能は依然としてカスタムプラグインを必要とする場合があります。
技術的実装
Androidアプリは、Capacitor.jsとGitHub Actionsを使用してネイティブに構築されています。実装では、GitHub Actionsのワークフロー、Capacitorの設定、Androidのマニフェストファイル、スプラッシュスクリーン画像、アプリアイコン、ビルドスクリプトが追加されました。変更の詳細は、GitHubのプルリクエストで確認できます。
