モバイルアプリをReact Nativeで作り直した話

こんにちは。KENTEMでエンジニアをしている工藤です。

今回は、私が所属する 遠隔臨場 SiteLive プロジェクトで、 モバイルアプリのフレームワークを変更せざるを得ない状況になりアプリを作り直した話を紹介します。
最後に、React Nativeを使ってみた感想も少し触れさせていただきました。

背景

当時、弊社のモバイルアプリはXamarinを使った開発が多く、共通化された処理を使うことで開発効率を高めることができるため、私たちのプロジェクトでもXamarin.Formsを採用していました。
しかし外部サービスのライブラリはXamarinを公式にサポートしておらず、ネイティブライブラリをバインディングして使用していました

事件

ある日、利用していた外部サービスのライブラリが大幅にバージョンアップされたことをきっかけに、Xamarinでのバインディングが困難になりました。
その原因は、外部サービスのライブラリが使用しているネームスペースが、バインディング時に衝突を引き起こす構造になったことです。

フレームワーク選び

そこで外部サービスのライブラリを使用できる新しいフレームワークとして、公式にサポートされているReact Nativeを検討しました。
Flutterやネイティブ開発も候補に挙がりましたが、下記の理由からReact Nativeを採用することになりました。

開発期間の短縮

クロスプラットフォーム開発により開発期間を短縮することを優先したい。

学習コストの低減

既にWebアプリの開発経験があるチームメンバーにとって、学習コストが比較的低いものを選びたい。

拡張性の確保

アプリの拡張性を考慮して必要に応じてネイティブコードを書くことができるものを採用したい。

React Nativeを使ってみて

Xamarin.Formsと比較して特に感じた不便さは下記の2点です。

デバッグ実行の問題

実機デバッグでアタッチがうまくできないなど原因が特定できない問題が多々発生しました。
また、ビルドの遅さも開発効率を大きく下げます。

OSSライブラリの多用問題

Xamarinでは.NETが使えましたが、React NativeではOSSライブラリを多用する必要があります。
特に安定性や信頼性を求めるとライブラリ選定には時間がかかります。

このプロジェクトで感じたこと

上記の問題は、開発を進めていかないとなかなか表立たない内容でした。
サンプルアプリを作った程度では気づくことができず、プラットフォームやフレームワーク選びの難しさを痛感させられたプロジェクトでした。

KENTEMでは、様々な拠点でエンジニアを大募集しています!
建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。
hrmos.co hrmos.co hrmos.co hrmos.co