開発コストが半分に?iOSもAndroidも同時に開発できるクロスプラットフォームとは?

2024.07.31
突然ですが、皆さんは「クロスプラットフォーム」をご存知ですか?

アプリ開発の常識を覆したとも言われる開発技術ですが、今回はそんなクロスプラットフォームとはなにか、そしてCLINKSでクロスプラットフォーム技術を持つエンジニアのY.Sさんにお話をうかがい、そのメリットや注意点、将来性について詳しく伺いました。

クロスプラットフォームとは?

クロスプラットフォーム技術を利用することで、1つのコードベースで複数のプラットフォーム向けにアプリケーションを開発し、メンテナンスすることが可能になります。

「ネイティブアプリ」とも呼ばれるスマートフォンのアプリは、各OSで開発環境やプログラミング言語が異なります。Androidアプリの場合、プログラミング言語は「Kotlin」や「Java」、iPhoneアプリは「Objective-C」や「Swift」などが言語として用いられ、AndroidとiOSで同じアプリを開発したい場合でも別々で開発を行う必要がありました。

クロスプラットフォーム技術は、この常識を覆しました。
クロスプラットフォームを使えばOSが異なる環境でもアプリの一部、または全部を1つのプログラミング言語で開発することが可能になります。そのためAndroidとiOSで単独開発するよりも開発工数が削減され、開発コストの削減にも繋がります。

主要のクロスプラットフォーム技術

Googleが開発したフレームワークで、Dart言語を使用し、UIと高性能なアプリを構築できます。
Googleがオープンソースで開発したクロスプラットフォーム用フレームワーク。
美しいUIと高性能なアプリを構築が可能です。今後もGoogleが力を入れていくフレームワークと考えられる。

Facebookが開発したフレームワーク。JavaScriptを使用してネイティブアプリケーションを構築できます。

Microsoftが提供するフレームワークで、C#を使用してクロスプラットフォームアプリケーションを構築できます。

KMPは、JetBrains社が作成したオープンソースのプログラミング言語であるKotlinを利用して、複数プラットフォームに対応したアプリケーションを開発する技術です。
そしてKMMは、KMPの機能や技術を活用し、iOSやAndroid向けのモバイルアプリケーション開発に特化したフレームワークです。

2023年には、KMM(Kotlin Multiplatform Mobile)という名称を廃止し、すべてのマルチプラットフォーム関連技術を「Kotlin Multiplatform(KMP)」という名称に統一しました。

※本記事のインタビュー内では、一部KMMの名称を使用しています

クロスプラットフォーム技術を持つエンジニア Y.Sさんインタビュー

クロスプラットフォームのメリットは何ですか?

クロスプラットフォームを使用することで、異なるOS向けに別々で開発する必要がなくなり、一つのコードベースで複数のプラットフォームに対応できます。

これにより、開発時間とコストが大幅に削減されます。
また、一つのコードベースで管理できるため、バグ修正や機能追加も効率的に行えます。

異なるプラットフォームで同じデザインと操作感を実現することができ、ユーザーにとって使いやすいアプリを提供できます。

クロスプラットフォームの注意点はありますか?

クロスプラットフォームは長期的に見れば開発工数の削減に繋がりますが、学習コストとのトレードオフで考える必要があります。対応するエンジニアの技術力などを鑑みて、予測を立ててから導入するか否かを決断した方が良いと思います。

また、デバイスに依存しやすい処理をクロスプラットフォームでお客様の要求仕様通りに書けるかどうかについても、事前に検証・調査が必要です。

カメラ機能を例にとると、クロスプラットフォームフレームワークにもカメラプラグインは存在しますが、AndroidやiOSのネイティブ実装並みに「オート/マニュアルフォーカス」「シャッタースピードの調整」「連写」などの機能が使えない場合があります。

そのような場合はどのように対策するか、という点は事前に調査しておく必要があります。
調査が不十分だと、使えない機能があるたびに仕様調整を行い、最終的にはクロスプラットフォームのカメラプラグインを諦めてAndroidとiOSそれぞれでカメラ機能を実装し直すことになります。

これでは開発工数が大幅に増加してしまうため、要件定義のフェーズなど、開発の早い段階で問題を解決しておくことが大切です。見積もり段階からエンジニアが営業と密にコミュニケーションを取り、詳細な検討を行うと良いでしょう。

クロスプラットフォームの技術を身に付けようと思ったきっかけを教えてください

個人でアプリを開発しているのですが、そのアプリをiOSとAndroidの両方で出したいと思ったことがきっかけです。約2年前に当時もっとも話題性が高かったFlutterというフレームワークを採用しました。

AndroidやiOSのネイティブの実装をある程度問題なくできるくらい基礎知識があるエンジニアであれば比較的短期間で使えるようになります。

Flutter はAndroid、iOS、Windows、Webなど様々なプラットフォームに対応していて、ブラウザの画面もアプリと全く同じコードで書くことができる可能性を秘めたフレームワークなので、これはやっておかないと!という気持ちで勉強しました。

今後、Flutter以外で学んでみたいフレームワークはありますか?

KMPは、現時点ではUIを共通化できないものの、AndroidやiOSのネイティブで書かれた既存のアプリのビジネスロジックを少しずつKMPに移していく、という現実的なシナリオを描きやすいフレームワークだからです。
アジャイル開発を導入すれば、1週間~2週間のスプリント単位で少しずつ既存のコードをKMP化していくことができます。

既存のスパゲッティコード(*2)をリファクタリングしたいという目標もある場合、ビジネスロジックをKMP側に移していくことでリファクタリングとクロスプラットフォーム化を同時に行うことができるため一石二鳥になります。

KotlinはAndroid言語のため、iOSエンジニアの場合は初めて触ることになると思いますが、学習コストは正直そんなに高くないです。

*2 実行順序や構造が複雑に入り組んでいて、整理されていないプログラムのことで、スパゲッティが絡まる様子に例えられたものである。

クロスプラットフォーム技術の将来性についてどう思いますか?

すべてのOSが一つのコードで動作する時代が来るかもしれないと思っています。
しかし、現時点ではまだそこまで発展していません。

Flutterは、Googleが開発したオープンソースのクロスプラットフォームフレームワークで、UIとビジネスロジックを共通化できる点が最大の特徴です。これにより、開発の効率化が図れるだけでなく、美しいデザインとスムーズな操作感を実現できます。
Google Payなどの主要アプリもFlutterで開発されており、その信頼性と性能の高さが証明されています。

一方、KMPは既存のネイティブアプリのビジネスロジックを共通化することができ、徐々にクロスプラットフォーム化を進めるのに適しています。アジャイル開発を採用することで、段階的にクロスプラットフォーム化を進めることが可能です。

まとめ

クロスプラットフォーム技術は、スマホアプリ開発の工数とコストを大幅に削減する可能性を秘めています。ただし、導入にあたっては注意点や事前の検証は必要不可欠です。

クロスプラットフォーム技術をうまく活用することで、効率的なアプリ開発が可能になります。
受託開発実績450本以上のCLINKSでは、無料で開発のご相談が可能です。

アプリ開発のお問い合わせはこちら

アプリ開発の資料請求はこちら

スマートフォンアプリ開発
受託開発実績450本以上!スマートフォンアプリ開発についてご紹介しています。

WEBシステム開発
契約企業600社以上。CLINKSのWEBシステム開発について紹介しています。

在宅エンジニアリクルートサイト
在宅勤務をメインで求人をお探しのエンジニア経験者採用を行っております。詳細は、在宅エンジニアリクルートサイトをご確認ください。

CLINKSリクルートサイト
エンジニア未経験者の積極採用を行っております。詳細はリクルートサイトをご確認ください。

CLINKSの採用担当者紹介記事
CLINKSの面接担当者を記事でご紹介しています。

【公式X(旧:Twitter)】
CLINKS広報担当のX(@clinks_pr)では、ブログ新着記事のお知らせや、CLINKSの取り組み、メディア掲載情報などをほぼ毎日ご紹介しています。

【公式TikTok】
CLINKSの公式TikTok(テレワークと言えばCLINKS(株)) では、CLINKSの取り組みやIT業界の魅力を発信しています。

一覧へ戻る

TOP