開発コストが半分に?iOSもAndroidも同時に開発できるクロスプラットフォームとは?
クロスプラットフォームとは、異なるプラットフォーム(iOS、Android、Windows、macOS、Linuxなど)間で動作するソフトウェアやアプリケーションのことを指します。
クロスプラットフォーム技術を利用することで、1つのコードベースで複数のプラットフォーム向けにアプリケーションを開発し、メンテナンスすることが可能になります。
「ネイティブアプリ」とも呼ばれるスマートフォンのアプリは、各OSで開発環境やプログラミング言語が異なります。Androidアプリの場合、プログラミング言語は「Kotlin」や「Java」、iPhoneアプリは「Objective-C」や「Swift」などが言語として用いられ、AndroidとiOSで同じアプリを開発したい場合でも別々で開発を行う必要がありました。
クロスプラットフォーム技術は、この常識を覆しました。
クロスプラットフォームを使えばOSが異なる環境でもアプリの一部、または全部を1つのプログラミング言語で開発することが可能になります。そのためAndroidとiOSで単独開発するよりも開発工数が削減され、開発コストの削減にも繋がります。
主要のクロスプラットフォーム技術
Flutter
Googleが開発したフレームワークで、Dart言語を使用し、UIと高性能なアプリを構築できます。
Googleがオープンソースで開発したクロスプラットフォーム用フレームワーク。
美しいUIと高性能なアプリを構築が可能です。今後もGoogleが力を入れていくフレームワークと考えられる。
React Native
Facebookが開発したフレームワーク。JavaScriptを使用してネイティブアプリケーションを構築できます。
Xamarin
Microsoftが提供するフレームワークで、C#を使用してクロスプラットフォームアプリケーションを構築できます。
KMP(Kotlin Multiplatform)/KMM(Kotlin multiplatform mobile)
KMPは、JetBrains社が作成したオープンソースのプログラミング言語であるKotlinを利用して、複数プラットフォームに対応したアプリケーションを開発する技術です。
そしてKMMは、KMPの機能や技術を活用し、iOSやAndroid向けのモバイルアプリケーション開発に特化したフレームワークです。
2023年には、KMM(Kotlin Multiplatform Mobile)という名称を廃止し、すべてのマルチプラットフォーム関連技術を「Kotlin Multiplatform(KMP)」という名称に統一しました。
※本記事のインタビュー内では、一部KMMの名称を使用しています
クロスプラットフォームのメリットは何ですか?
最大のメリットはやはり開発工数の削減です。
クロスプラットフォームを使用することで、異なるOS向けに別々で開発する必要がなくなり、一つのコードベースで複数のプラットフォームに対応できます。
これにより、開発時間とコストが大幅に削減されます。
また、一つのコードベースで管理できるため、バグ修正や機能追加も効率的に行えます。
さらに、クロスプラットフォーム開発では、一貫したユーザーエクスペリエンス(UX)を提供できる点も大きなメリットです。
異なるプラットフォームで同じデザインと操作感を実現することができ、ユーザーにとって使いやすいアプリを提供できます。
その他にも、複数のプラットフォームに同時にリリースできるため、製品を迅速に市場に投入できます。また、開発チームが一つの技術スタックを使うため、リソースを効率的に利用することができるのも大きなメリットです。
クロスプラットフォームの注意点はありますか?
クロスプラットフォーム技術を持ったエンジニアはまだ少数のため、在籍がない場合に学習コストが発生する点です。
クロスプラットフォームは長期的に見れば開発工数の削減に繋がりますが、学習コストとのトレードオフで考える必要があります。対応するエンジニアの技術力などを鑑みて、予測を立ててから導入するか否かを決断した方が良いと思います。
また、デバイスに依存しやすい処理をクロスプラットフォームでお客様の要求仕様通りに書けるかどうかについても、事前に検証・調査が必要です。
カメラ機能を例にとると、クロスプラットフォームフレームワークにもカメラプラグインは存在しますが、AndroidやiOSのネイティブ実装並みに「オート/マニュアルフォーカス」「シャッタースピードの調整」「連写」などの機能が使えない場合があります。
そのような場合はどのように対策するか、という点は事前に調査しておく必要があります。
調査が不十分だと、使えない機能があるたびに仕様調整を行い、最終的にはクロスプラットフォームのカメラプラグインを諦めてAndroidとiOSそれぞれでカメラ機能を実装し直すことになります。
これでは開発工数が大幅に増加してしまうため、要件定義のフェーズなど、開発の早い段階で問題を解決しておくことが大切です。見積もり段階からエンジニアが営業と密にコミュニケーションを取り、詳細な検討を行うと良いでしょう。
クロスプラットフォームの技術を身に付けようと思ったきっかけを教えてください
個人でアプリを開発しているのですが、そのアプリをiOSとAndroidの両方で出したいと思ったことがきっかけです。約2年前に当時もっとも話題性が高かったFlutterというフレームワークを採用しました。
AndroidやiOSのネイティブの実装をある程度問題なくできるくらい基礎知識があるエンジニアであれば比較的短期間で使えるようになります。
Flutter はAndroid、iOS、Windows、Webなど様々なプラットフォームに対応していて、ブラウザの画面もアプリと全く同じコードで書くことができる可能性を秘めたフレームワークなので、これはやっておかないと!という気持ちで勉強しました。
開発言語を統一できるということは、例えるなら世界で日本語や英語などをすべて共通の言語に統一できるくらいの革命です。
今後、Flutter以外で学んでみたいフレームワークはありますか?
KMP(Kotlin Multiplatform)です。
これはまさに先ほどお話に出たFlutterのデメリットを埋めるクロスプラットフォームだと考えています。
KMPは、現時点ではUIを共通化できないものの、AndroidやiOSのネイティブで書かれた既存のアプリのビジネスロジックを少しずつKMPに移していく、という現実的なシナリオを描きやすいフレームワークだからです。
アジャイル開発を導入すれば、1週間~2週間のスプリント単位で少しずつ既存のコードをKMP化していくことができます。
既存のスパゲッティコード(*2)をリファクタリングしたいという目標もある場合、ビジネスロジックをKMP側に移していくことでリファクタリングとクロスプラットフォーム化を同時に行うことができるため一石二鳥になります。
KotlinはAndroid言語のため、iOSエンジニアの場合は初めて触ることになると思いますが、学習コストは正直そんなに高くないです。
*2 実行順序や構造が複雑に入り組んでいて、整理されていないプログラムのことで、スパゲッティが絡まる様子に例えられたものである。
クロスプラットフォーム技術の将来性についてどう思いますか?
すべてのOSが一つのコードで動作する時代が来るかもしれないと思っています。
しかし、現時点ではまだそこまで発展していません。
近い将来、クロスプラットフォーム技術は目的に応じて使い分けられるようになるでしょう。
現状のプロジェクトでは、既存のアプリがある場合が多いため、KMP(Kotlin Multiplatform)のほうが適していることが多いですが、今後新規アプリ開発ではFlutterが最有力候補になると思います。
Flutterは、Googleが開発したオープンソースのクロスプラットフォームフレームワークで、UIとビジネスロジックを共通化できる点が最大の特徴です。これにより、開発の効率化が図れるだけでなく、美しいデザインとスムーズな操作感を実現できます。
Google Payなどの主要アプリもFlutterで開発されており、その信頼性と性能の高さが証明されています。
一方、KMPは既存のネイティブアプリのビジネスロジックを共通化することができ、徐々にクロスプラットフォーム化を進めるのに適しています。アジャイル開発を採用することで、段階的にクロスプラットフォーム化を進めることが可能です。
クロスプラットフォーム技術は、スマホアプリ開発の工数とコストを大幅に削減する可能性を秘めています。ただし、導入にあたっては注意点や事前の検証は必要不可欠です。
クロスプラットフォーム技術をうまく活用することで、効率的なアプリ開発が可能になります。
受託開発実績450本以上のCLINKSでは、無料で開発のご相談が可能です。
アプリ開発の外注を検討している方や、クロスプラットフォーム開発に興味がある方は、ぜひ下記のお問い合わせよりご連絡ください。
開発関連ページ
スマートフォンアプリ開発
受託開発実績450本以上!スマートフォンアプリ開発についてご紹介しています。
WEBシステム開発
契約企業600社以上。CLINKSのWEBシステム開発について紹介しています。
採用関連ページ
在宅エンジニアリクルートサイト
在宅勤務をメインで求人をお探しのエンジニア経験者採用を行っております。詳細は、在宅エンジニアリクルートサイトをご確認ください。
CLINKSリクルートサイト
エンジニア未経験者の積極採用を行っております。詳細はリクルートサイトをご確認ください。
CLINKSの採用担当者紹介記事
CLINKSの面接担当者を記事でご紹介しています。
CLINKS公式SNSアカウント紹介
【公式X(旧:Twitter)】
CLINKS広報担当のX(@clinks_pr)では、ブログ新着記事のお知らせや、CLINKSの取り組み、メディア掲載情報などをほぼ毎日ご紹介しています。
【公式TikTok】
CLINKSの公式TikTok(テレワークと言えばCLINKS(株)) では、CLINKSの取り組みやIT業界の魅力を発信しています。