見出し画像

もう怖くない!クロスプラットフォーム開発のススメ

はじめまして。PIVOTスマホアプリ開発チームの遠藤です。
今回は昨今よく話題に上がる"クロスプラットフォーム開発"について
エンジニア以外の方でもできる限りわかりやすく書ければと思います。

"クロスプラットフォーム開発"とは

画像1

アプリ開発において"クロスプラットフォーム開発"とは、
「Android / iOSの2つのアプリをまとめて作る」を指すことが一般的です。
この「まとめて作る」ということによる恩恵がたくさんあるので、近年アプリ開発の強力な選択肢として"クロスプラットフォーム開発"が上がってきています。

最近の例だとコロナウイルス対策用のアプリでXamarin(ザマリン)というクロスプラットフォーム開発用のフレームワークが採用されていることで話題になりました。
他にもさまざまな企業でReact NativeやFlutterなどのフレームワークを採用する事例が増えています。

しかしながら、手放しでメリットを享受できるわけではなくメリット・デメリットが存在します。

"クロスプラットフォーム開発"のメリット4つ

1. コードが統一できる
まず挙げられるメリットとしては、コードを統一できるということです。
単純計算ですがコードベースが半分になるので工数も半分程になります。
「Google Play」ではFlutterというクロスプラットフォーム開発用フレームワークを用いて50万行以上のコードを削減したというデータもあります。

2. チームが統一できる
また、コードを統一するということは開発チームが統一できるということです。
従来AndroidチームとiOSチームが相互で開発していたものが1チームで開発できます。
これによってコミュニケーションエラーが減らせますし、開発の進捗も揃います。

3. Web版の開発が容易
さらに、アプリのWeb版を作りたい際にも効果を発揮します。
現在クロスプラットフォーム開発用フレームワークの主力である
React Native, FlutterではWeb版開発用の手法があるのでリソースをあまり割くことなくWeb版の開発が可能です。(残念ながら問題点もある)

4. 学習コストが低い
学習コストが低いことも大きなメリットです。
React NativeではJavaScriptを扱っているエンジニアであれば比較的苦労せずに学習できますし、FlutterであればJavaやTypeScriptあたりに毛色が似ているので経験している方であれば学習しやすいと思います。

"クロスプラットフォーム開発"のデメリット2つ

1. ネイティブ固有の機能開発に手間がかかる
デメリットとしては、ネイティブ固有の機能(通知、カメラ、カレンダー、マップなど)を実装したい際に手間がかかることが挙げられます。
Android / iOSでは仕様が異なるのでそれぞれで対応してあげないとうまく動作しないことがあります。(それでもネイティブコード開発よりは早く開発できる)

そのため、チームにAndroid / iOSのネイティブコードに明るい人がいなければこの対応が厳しくなってきます。(PIVOTではネイティブコード開発・クロスプラットフォーム開発のどちらも対応可能)

2. フレームワークとしての懸念点
他にも、アプリのファイルサイズが大きいことやパフォーマンスが少し劣るという問題も挙げられます。フレームワークであるので当然といえば当然ですが、ネイティブコードで実装されたものよりは劣ります。
しかし改善されつつある箇所なので心配するほどではないと考えます。

まとめ

まずはクロスプラットフォーム開発でスピード感を持ってアプリを開発し、
アプリが軌道に乗ってからネイティブコードに置き換えるという事例や、

アプリのリニューアルに伴い、クロスプラットフォーム開発を採用して作りなおす事例もあります。(最近のGoogleのアプリなど)

どのようなケースも、デメリットを理解したうえでクロスプラットフォーム開発を採用する、ということが重要だと思います。
今回でクロスプラットフォーム開発について少しでも理解が進み、今後の選択肢に入って頂けると嬉しいです。

この記事が気に入ったらサポートをしてみませんか?