Open6
Webアプリをクロスプラットフォーム展開したい
前提
- React.jsでアプリケーションを作成している
- 開発PCはWindows 10 Pro
- WSL2のUbuntu20.04内で開発
- WebアプリケーションをiOS、Androidアプリケーション向けに展開したい
- JSをネイティブ言語に書き換えるのに億劫
- KotlinやSwiftへの書き換え労力が……
目次
React Native
- Facebook製
- 各プラットフォーム向けに、ほとんど同一プログラムでコーディングが可能
- TypeScriptで書ける
- TSX記法が使える
実績
- CookPad
- メルカリ
開発環境
- Node.js
- Android Studio (Androidビルド)
- Xcode (iOSビルド)
- react-native-cli もしくは Expo(プロジェクト作成や起動)
- react-native-cli: Xcodeの知識が必要
- Expo: ネイティブ機能が使えないことあり
- cocoapods (iOSライブラリ管理)
感想
- 自分がExpoコードは書いたことある
- UIはさておき、ロジック周りは既存プロジェクトから流用できる
- 環境構築の選択肢が多くて迷う
- Dockerに任せちゃえば、複数人でもまあ何とかなるか……? (個人開発ですが)
参考
Flutter
- Google製
- iOS, Android, Win, Mac, Linuxといったクロスプラットフォーム開発が可能
- Dart言語
- Flutter for web で Web 向けにも開発可能
- ホットリロード機能がよく紹介される
実績
- Google Ads
- Google Assistant
- JTBアプリ
開発環境
- Flutter SDK
- Android Studio (Androidビルド)
- Xcode (iOSビルド)
感想
- for Web の方はまだまだ開発中なのかな?
- Win, Mac, Linux向けにも開発可能で凄い
- が、これらのプラットフォーム向けにリリース予定なし
- ネイティブ版のみ Flutter にするのはそれはそれでありなのか?
- iOSとAndroidを別々の言語で作るよりはって感じ
- Dartに入門する学習コストはある
- React-Native ならそれがない
- 先輩が個人開発で使っていたので、気になってはいる
- Dockerで環境作れそうなので敷居は下がる
参考
Capacitor
- WebアプリケーションをiOS, Android向けにビルドできる
- クロスプラットフォーム開発用のライブラリ
- 調査中…
実績
- 調査中…
開発環境
- Node.js
- Android Studio (Androidビルド)
- Xcode (iOSビルド)
感想
- なんか凄そう
- Node.jsってことはReactもそのまま行けるか?
- 文献少ない
- 色々と要調査
参考
PWA
- 現状のアプリをそのまま使える
- アプリっぽい見た目でブラウザ機能を使える
- プッシュ通知も可能
- プリキャッシュでオフライン動作も可能
- 検索バー分レイアウトの乱れが生じる可能性あり
- ページリロードがブラウザのようにはできない
実績
- Qiita
感想
- 1番導入コストが低い
- 設定ファイルの追加など
- ブラウザを開いて検索する手間が無くなる
- 自身が少しやったことがある
- 色々とネイティブアプリに比べて融通の効かない部分もあったりなかったり
参考
FlutterとReact Nativeどっちも触ってみたけど、個人的にはReact Nativeの方が好き
というよりTSが好きなので、こちらを選択する確率が高い。
あと、Dartの書き心地があまり得意ではない…