【初心者向け】クロスプラットフォーム開発のメリット・デメリット
現在、システムを開発する際には、非常に多くの事を気にかける必要があります。 セキュリティ面や実行速度など、確認するべきポイントは年々増えている様に感じます。 そんな中で、開発者を困らせる大きなポイントが 「OSやデバイスの違い」 です。 これらを解決するための1つの方法としてクロスプラットフォーム開発というものがあります。 今回はこの、クロスプラットフォーム開発についてお話しましょう。
クロスプラットフォームとは
クロスプラットフォームとは クロスプラットフォームは、冒頭でお話した 「OSやデバイスの違いによるプログラミングへの影響」 を考慮するための方法です。 特にスマホアプリ市場においてiPhoneとAndroidの両方に対応したアプリを作ることは非常に重要です。 しかし、一方でそれぞれプログラミング言語が違いますので、それぞれの言語を使えるプログラマーを雇う必要などがありました。 しかし、このクロスプラットフォーム開発が普及してからは、最小限の人員でアプリ開発が出来るようになったのです。 クロスプラットフォーム開発には、大きく分けて3つの種類があります。
ネイティブ型
ネイティブ型とは、それぞれのOSプラットフォームの描画エンジンを使用するもので、ネイティブアプリで利用することが出来るUIは基本的に利用できるため、操作性が高いです。 実行速度も他の方法よりも速く、オフライン環境でも利用できるようなアプリ開発に利用するのが向いている方法になります。 代表的なサービスとしては『Xamarin』や『React Native』があります。
独自レンダラ型
独自レンダラ型とは、独自のシステム(レンダリングエンジン)によって画面の描画を行う方法で、ネイティブ型に比べるとOSに依存せずに利用できるという特徴があります。 代表的なサービスとしては『Unity』や『Flutter』があります。
ハイブリッド型
ハイブリッド型は、HTML5/JavaScriptといったWEBベースで動作をするツールです。 ChromeやSafariなどのブラウザのレンダリングエンジンを利用するもので、代表的なサービスとしては『Cordova』や『Electron』があります。
クロスプラットフォームを利用するメリット
クロスプラットフォームを利用するメリット では、クロスプラットフォーム開発を行うことにはどのようなメリットが有るのでしょうか。
開発工数を安く抑えられる
最も大きなメリットは、開発工数の削減が挙げられます。
1つのコードでAndroid/iOS両アプリ作成
現在のアプリ市場において、iPhoneのみ・Androidのみのアプリ影響では、利用ユーザーが限られてしまいます。 現在のOSシェアは、 海外が Android:7割/iOS:3割 に対して国内シェアは Android:3割/iOS:7割 というデータがあります。 ということは、iOSのみの開発をしてしまうと約3割のユーザーを逃してしまう可能性があります。 そのため、クロスプラットフォーム開発が人気を集めているのです。
コーディングが1回で済むため、仕様変更も工数を削れる
システムの開発において、仕様の変更は多々あります。 クライアントからの要望が変わるケースや、要件定義の際には想定していなかった仕様の追加など。 時代の変化や新技術の登場による仕様変更も多い現代では、しっかりと仕様を練ってから作るような開発方法よりも、アジャイル開発でどんどんと開発を進めながら詳細な仕様を詰める・・・というのが一般的になりつつあります。 そんな中で、仕様変更に対応しやすいのもクロスプラットフォーム開発のメリットでしょう。 1つの仕様変更に対してiOS/Androidの2回の修正を行う必要がないため、修正時間の短縮が可能になります。
開発人員の確保も容易に
エンジニアの業界において、人材不足が非常に大きな問題になりつつあります。 そんな中で、クロスプラットフォーム開発は人材の確保にも役立ちます。 複数の言語をクロスプラットフォーム開発によって一括管理が出来るということは、それぞれのプログラミング言語に詳しくなくても開発が可能になります。 余談になりますが、先日IT人材派遣の会社の方とお会いしたときの話ですが、 現在コボルなどの非常に古い言語を専門でやってきたエンジニアを積極的に雇っているという話でした。 コボルは、現在案件が枯渇しており、エンジニアの人数に対して需要が非常に少ない言語となっています。 しかし、コボルを何十年と専門でやってきたエンジニアからすると、新しい技術を覚えると言うのが非常に困難になっているということです。 年齢層も高く、記憶力も低下しているのでしょう。 そういった人材をどの様に活用していくのか。 これがその企業の大きな課題だという話でした。 この様に、言語に流行り廃りがあるため、一度覚えた技術でも、時間が経てば新しい言語の再習得が必要になります。 一方で、クロスプラットフォーム開発であれば、複数言語を一元的に管理することが出来るため、クロスプラットフォーム自体がきちんと発展していけば、新たに言語習得を必要としない開発が可能になるかもしれません。 つまり、エンジニアの寿命を長くすることが出来るのです。 エンジニア不足の日本としては、このメリットは非常に大きいのではないでしょうか。
クロスプラットフォームを利用するデメリット
クロスプラットフォームを利用するデメリット では、クロスプラットフォーム開発を行うことにデメリットはあるのでしょうか。
OS個別の不具合対応が困難
クロスプラットフォーム開発では、各OSごとの不具合対応が難しくなります。 例えば、OSの仕様として一部不具合があり、別の手法を必要とする場合。 その場合はその部分だけは個別で各言語で作る・・・などの対応が必要になります。 そうなると、結局そのOSに対応するプログラミング言語の習得が必要になりますし、管理が煩雑になります。 そのため、きちんとマイクロサービス化して、各機能を切り離せるように作るなどの設計が必要になります。
日本での開発事例が少ない
現在、まだまだ日本ではこのクロスプラットフォーム開発が進んでいません。 よくプログラミング言語を選択する際の基準の一つに 「日本語のドキュメントの多さ」 が挙げられます。 ある程度の技術や経験があるエンジニアは、新しくプログラミング言語を習得したり、エラー内容を調べる際に、ネットで検索することが多いでしょう。 その際に、日本語のドキュメントが少なければ、どうしても開発のハードルが高くなります。 これは、学習コストの低さにも繋がってくる訳ですが、現状日本ではクロスプラットフォーム開発による実績がそれほど多くはありません。 「クロスプラットフォーム開発の実績がある」 ということ自体を売りにしている企業もあるくらいですから、しっかりと日本語ドキュメント化されるのはまだ少し先になるかもしれません。
各OS・デバイスごとの最新機能の実装
各OS・デバイス特有の機能というものがあります。 例えば、カメラ機能やプッシュ通知などですが、仮にこれらの特有の機能として新しいものが出てきた場合。 クロスプラットフォーム開発サービスがそれらの機能に即座に対応できる様になるかはわかりません。 そのため、最新機能を利用することが困難になる可能性があるでしょう。
開発の相談から、IT人材派遣までAMELAにご相談を
開発の相談から、IT人材派遣までAMELAにご相談を 今回は、クロスプラットフォーム開発について見てきました。 デバイスやOSの多様化は、開発者にとって非常に大きな問題です。 テスト工数も多くなり、気にかけるべきポイントも多くなることでしょう。 そのため、今後はクロスプラットフォーム開発も視野に入れた開発や、マイクロサービス化して開発する事の重要性が高まる可能性があります。 これは、IT業界の人間だけの問題ではありません。 製造業や小売店、接客業においても、システムの導入が必須になりつつありますが、システムを外注する際にこういった知識がなければ、開発費用以外に、プログラミング言語の移行に多くの費用が発生したり、反対に費用を下げるためにセキュリティリスクが高くなってしまうという危険性もあります。 AMELAでは、常に技術を磨いているエンジニアを育てています。 IT人材の派遣から開発までを幅広く行い、問題解決に最も適切なアプローチをしていきます。 是非、ご相談頂ければと思います。