マルチプラットフォームCompose、ハイブリッドアプリの分野でFlutterを代替できるか!
2024-09-09

現在の経済不況の状況を踏まえると、MVP(最小限の実用的な製品)プロジェクトが、テクノロジー顧客市場のトップ要件となっています。低コストでリソースの多くを必要とせず、顧客企業が求める主要な機能を備えた最小限の製品を提供できることが重要です。

この要件を満たすために、Googleが開発したフレームワーク「Flutter」は有力候補と見なされています。Flutterには以下のような利点があります。

  • 1つのコードベースで、異なるOS(モバイル、Web、デスクトップ)に対応できる
  • ホットリロード機能:コードを保存するだけで新しい変更がすぐに適用され、アプリの再ビルドは不要
  • 大規模なサポートコミュニティ:F言語には活発なコミュニティがあり、開発者は「issue」に直面しても孤立する心配がない
  • 古いデバイスとの互換性が高い

Flutterがこの分野の王座を長く保つかと思われた矢先、JetBrainsは密かにKotlin Multiplatform(KMP)を発表しました(2017年に発表)。特に2024年5月に開催されたGoogle I/Oイベントでは、GoogleがKotlin Compose Multiplatform(CMP)を公式にサポートすることを発表しました。

KMP/CMPは、F言語に似た利点を提供しており、ホットリロード機能こそないものの、JetBrainsはAndroidネイティブに似たプレビュー機能を提供しています(現在、この機能はIDE Fleetでのみ利用可能)。KotlinとAndroid Jetpack Composeの基礎を持つ開発者は、このフレームワークに迅速に適応できるでしょう。

現時点では、KMP/CMPはFlutterの最大のライバルとされており、将来的にKotlin Compose Multiplatform(KMP)がFlutterを超えるかどうかは予測が難しいです。両方のフレームワークにはそれぞれの強みがあり、JetBrainsとGoogle(KMP)、Google(Flutter)という大手企業がサポートしています。しかし、今後KMPがFlutterに競り勝つ可能性に影響を与えるいくつかの要素があるかもしれません。

1. 互換性とエコシステムの統合

  • KMP (Kotlin Multiplatform):
    Kotlinは既存のAndroidアプリと強力に統合されており、KMPを使用することで、この統合がiOS、デスクトップ、Webにも拡張されます。特にAndroid開発者にとって、Kotlinエコシステムとの深い統合は、既にKotlinを使用している人々にとってKMPを受け入れやすくします。複数のプラットフォーム間でロジックコードを共有できることは大きな利点です。
  • Flutter:
    Flutterの「一度書けば、どこでも動く」というアプローチも非常に強力ですが、Dart言語はKotlinに比べて普及していません。しかし、Flutterのウィジェットシステムは成熟しており、複数のプラットフォームで高いパフォーマンスを発揮するように最適化されています。

2. パフォーマンス

  • KMP (Kotlin Multiplatform):
    KMPのアプローチは、各プラットフォームの「ネイティブ」コンポーネントを活用しており、これにより「ネイティブ」アプリとほぼ同等のパフォーマンスを実現できます。このため、各プラットフォームに最適化されたアプリを必要とする開発者にとって魅力的です。
  • Flutter:
    Flutterは複数のプラットフォームで高いパフォーマンスを提供するように最適化されていますが、独自のレンダリングエンジンを使用するため、必ずしも「ネイティブ」アプリと同等のパフォーマンスを発揮できるわけではありません。特に、ハードウェアリソースが制限されている環境ではその差が顕著になることがあります。

3. コミュニティと受容性

  • KMP (Kotlin Multiplatform):
    KMPはマルチプラットフォーム開発の新しい候補であり、まだコミュニティやツールのサポートを拡大中です。しかし、既存のKotlinコミュニティから恩恵を受けており、このコミュニティは特にAndroidエコシステムで既に大きく、活発に活動しています。
  • Flutter:
    Flutterは大規模で成長中のコミュニティを持ち、豊富なドキュメント、パッケージ、Pub、プラグインが提供されています。また、さまざまな業界で実際のアプリケーションに広く採用されています。

4. Googleからのサポート

  • KMP (Kotlin Multiplatform):
    GoogleはAndroid上でのComposeを強力にサポートしており、さらにKMPにもサポートを提供しています。これにより、特にAndroidを中心とした開発環境やKotlinを重視するプロジェクトにおいて、KMPが広く受け入れられる可能性があります。
  • Flutter:
    FlutterはGoogleによって全面的にサポートおよび開発されており、積極的なアップデートが提供されています。さらに、将来に向けた明確な開発ロードマップが提示されており、安定した成長が期待されています。

5. 将来の可能性

  • KMPは、さらに成長し、シームレスなマルチプラットフォーム開発に対する開発者のニーズに応えることができれば、Flutterの強力な競争相手となる可能性があります。ソースコードの活用と急成長中のKotlinエコシステムが、KMPに堅実な基盤を提供しています。
  • 一方、Flutterは既に成熟したフレームワークであり、強力なマルチプラットフォーム対応を備えています。先行者としての利点が、受容性と「オープン性」において優位性を与えています。

より直感的にするために、私は小さなテストを行います。APIを呼び出して天気情報を取得するアプリケーションを作成してみます。

https://api.openweathermap.org/data/2.5/weather?lat=20.998852&lon=105.7966716&appid=b005bb5402fb60c2b25bd40efec54d1a
私のこのシンプルな画面のコードスニペットは、AndroidとiOSの両方のためにJetpack Composeフレームワークを完全に使用しています。この実装方法により、ネイティブアプリと比較して開発時間を大幅に節約できます。
CMP AndroidCMP iOS
私たちは、両方のオペレーティングシステムがこのタスクを約0.5秒で実行していることが確認できます(仮想マシンを使用)。

6. 総括

まとめると、KMPとFlutterはどちらも強力なマルチプラットフォーム開発フレームワークであり、KMPがFlutterを「凌駕する」と予測するのは難しいです。しかし、KMPは特にKotlinが広く使用されている環境において、マルチプラットフォーム開発の主要な選択肢となる可能性が高いことは否定できません。KMPの利点は、Kotlinのエコシステムを活用し、ネイティブアプリに近いパフォーマンスを提供できる点にあります。

PIRAGOでは、KMPとFlutterの選択はプロジェクトごとの具体的な要件に基づいて判断する必要があることを明確に認識しています。高いパフォーマンスの最適化が必要であり、複数のプラットフォーム間でコードベースを共有しつつ、ネイティブの特性を維持するプロジェクトにおいては、KMPが有力な選択肢となります。一方、Flutterは多くの場合、豊富なユーザーインターフェースを備えたアプリを迅速に開発し、様々なデバイスで統一された体験を提供する際に選ばれます。これら二つのフレームワークを慎重に比較し、活用することで、当社ではお客様のニーズにより的確に応え、リソースを最適化し、実際のプロジェクトでの開発時間を短縮することができました。

Đăng ký nhận bản tin
Có lỗi nhập

Email này của bạn đã được đăng ký rồi.

x