
「アプリ開発」と一言で言っても、その対象OSは大きく分けるとAndroidとiOSがあります。これまで、AndroidとiOSそれぞれのOSに対応するプログラミング言語を使い、それぞれでアプリを開発する必要がありました。
しかし、近年では「クロスプラットフォーム」というフレームワークを活用し、1つのコードでAndroidとiOSの両OSに対応したアプリを開発することができます。
本記事では、クロスプラットフォームの中でも人気を集める「Flutter」について、その概要や特徴、またFlutter開発のメリット・デメリットをまとめて紹介します。
<目次>
Flutter開発のメリット
・開発期間の短縮と開発コスト削減
・保守運用コストの削減
・ホットリロードによる変更への対応能力
・マテリアルデザインによるUIの統一と豊富なデザイン
デメリット
・端末固有機能との連携
・最新機能や最新OSへの対応
Flutterとは?
FlutterとはGoogleが提供するモバイルアプリフレームワーク1つで、クロスプラットフォームとして注目されています。クロスプラットフォームとは、先述したようにAndroid、iOS、Windows、macOSなど異なるプラットフォーム上で動かすプログラムのことです。
クロスプラットフォーム開発に対して、OSごとに用意されている環境で開発を行うことをネイティブ開発と言います。一般的に、Androidアプリを開発する際には主に「Kotlin」、iOSのアプリ開発では「Swift」を使用し、それぞれ別の言語を利用してアプリ開発を行う必要がありました。
しかし、クロスプラットフォームを利用することで、1つの言語、すなわちFlutterの場合は「Dart」言語でソースコードを書くことによって、AndroidとiOSの両OSに対応したアプリを開発することができるのです。厳密には100%同じソースコードですべて対応できるわけではありませんが、基本的な機能に留まるアプリであれば、AndroidとiOSの両方に対応したアプリが完成します。
また、2021年3月4日には、Flutter2がリリースされ、Android、iOSだけではなくWeb、Windows、macOS、Linuxにも対応が広がっています。
Flutterが注目されるワケ
クロスプラットフォーム開発はその利便性、コストのメリットなどから注目されています。クロスプラットフォームツールの中でもFlutterは注目度が高いと思われます。
Flutterと同じくクロスプラットフォームの代表と言えるのがReact Nativeです。React Nativeは、Facebookが開発を手がけているフレームワークで、Flutterと同様に1つのコードでAndroid、iOSのアプリを作ることができます。
FlutterとReact Nativeの違いは主に以下3点あります。
- 使用している言語
FlutterはDartを採用しているのに対し、React NativeではJavaScriptもしくはTypeScriptを使用します。 - 対応しているOSの種類
Flutterの対応しているOSは、Android/iOS/ Web/ macOS/Windows/Linux に対して、React Nativeは、Android/iOS/ Web(Windows)に留まっています。 - UI
Flutterは独自描画エンジンでUIを構築します。そのためOSやそのバージョンの違いに影響されず、iOSとAndroid共通のUIデザインで開発を行うことが容易です。対して、React NativeはOSごとのネイティブUIを利用します。
上記からもわかるように、Flutterは、より多くのプラットフォーム開発に対応している点や、プラットフォームに依存しない共通のUIデザインを作ることが容易である点から、開発の利便性やコストにおいても優位性があると言えるでしょう。
また、Google トレンドで、FlutterとReact Nativeの検索キーワードボリュームを比較しても、Flutterが日本のみならずアメリカでも注目されていることがわかります。
Flutter開発のメリット
本章では、Flutter開発のメリットを4つのポイントに絞って紹介していきます。
開発期間の短縮と開発コスト削減
ネイティブ開発との特に大きな違いとして、1つのコードでiOS/Androidの開発が可能なため、開発の期間の短縮に繋がります。コード量、作業工数の削減に繋がることで結果的に開発の期間・コストの削減に繋がるということです。
保守運用コストの削減
ネイティブアプリでは、Android開発エンジニア、iOSアプリ開発エンジニア、それぞれのエンジニアが保守運用に関わる必要があります。しかし、クロスプラットフォームであれば、1つの言語で対応するため、単純に一人でも対応できる事になるため、人員リソースの確保が容易であり、保守運用コストの削減も期待できます。
バグの発生リスクも抑えられることで、バグの対応自体が減ることや、機能追加や仕様変更もOSごとに別々に開発を行う必要がないため、開発段階だけでなく長期的な目で見てもクロスプラットフォーム開発にはメリットがあります。
ホットリロードによる変更への対応能力
ホットリロードとは、プログラムを書き変えた後、即時にUIに反映させる機能です。ホットリロード機能の最大のメリットは、プログラムを変更した時に、変更箇所を実機ですぐに確認することができることで、変更箇所の確認に時間を要しないことです。通常であれば、変更箇所を確認するには多くの時間を要しますが、ホットリロード機能があれば、開発効率が高まるでしょう。
ネイティブアプリでも開発ツールによってはホットリロードの機能が搭載されているケースもありますが、当然AndroidとiOSでそれぞれ変更を行うことになるため、変更に時間を要することになります。
マテリアルデザインによるUIの統一と豊富なデザイン
Flutterでは、Googleが推奨するマテリアルデザインを採用しています。マテリアルデザインとは、ユーザーが直感的に理解し、操作できるデザインのことを指し、プラットフォームに依存しない共通のUIデザインを可能にします。
例えば、ユーザーがアプリ上で、「どのボタンが押すことができるのか?」が直感でわかるように、立体的なデザインにしたり、カーソルをボタンに合わせると色が変わる等のアニメーションを加えることもできます。アイコンやアニメーションのデザインも豊富に用意されており、視覚的に訴えかけるデザインにすることが容易です。
デメリット
メリットに続いて、Flutter開発を行う際には、あらかじめ注意しておきたいデメリットポイントを紹介します。サービスによっては、Flutter開発が向かないケースもあるため、事前によく検討する必要があります。
端末固有機能との連携
一般的にスマートフォンに搭載されているカメラ、GPS、プッシュ通知などの基本機能についてはFlutterでも連携可能です。
しかしながら、Android/iOSの特有の機能を利用する場合や、複雑な仕様で細かなカスタマイズが必要な場合には、各OSで個別に開発をする必要があります。
最新機能や最新OSへの対応
AndroidやiOSでも日々、最新機能が搭載されたり、最新OSへの更新が発生します。Flutterはこれらの最新機能・OSへの対応は基本的にリリース後となるので、早急な対応は難しいのが現状です。
ネイティブであれば、beta版がリリースされるので、最新機能やOSへ素早く対応することが可能になります。
国内Flutter開発事例4選
本章では、国内で実際にFlutterを使い開発されているサービスを紹介します。
じゃらん
旅先での宿やホテルを予約する際によく利用されているアプリの「じゃらん」。宿やホテル予約のみならず、旅先でのアクティビティや、レンタカー予約など幅広いサービスを提供しています。その中の一部サービスでFlutterが採用されました。
もともと10年以上前からAndroid、iOSのアプリをリリースしていましたが、この先の改修をFlutterで行うことにより、保守運用の利便性を高めています。
新規開発だけでなく、既存のアプリがじゃらんのように後からFlutterに乗り換えるケースも少なくありません。
参考資料:Flutter移行の苦労と、乗り越えた先に得られたもの
Green
Greenは株式会社アトラエが開発・運用しているIT系人材に強みを持つ成功報酬型求人メディアです。GreenはAndroidのアプリをFlutterでリリースしています。
モバイルアプリエンジニアのリソースを確保することが難しく感じていた際に、Flutterでのアプリ開発を決め成功をさせています。将来的には、すでにリリースされているiOSアプリもFlutterへ切り替えていくことが計画されています。
参考資料:求人メディア Green の Android アプリを Flutter で開発した裏話
せいえいNAVI
せいえいNAVIは日本能率協会総合研究所が開発、リリースしたアプリです。全国の生活衛生関係営業者に役に立つ情報を提供し、融資・補助金、イベント・セミナー、その他経営に関わる最新情報を検索できるほか、ユーザーの属性に合わせプッシュ通知機能により有益な情報を受け取れる仕組みを作っています。
迅速な開発とコスト削減に対応するためFlutterが採用され、Android、iOSの両方に対応しています。リリース後のメンテナンスコスト抑制に繋がることも期待されています。
参考資料:日本能率協会総合研究所様 「せいえいNAVI」管理システムとアプリ開発
トヨタコネクティッド
トヨタの系列会社であるトヨタコネクティッドは、IT分野に強みを持つ会社で、車載システムなどを手掛けています。Flutter 2では組み込み機器の開発にも対応できることもあり、トヨタコネクティッドでは、次世代のインフォテイメントのシステム構築にFlutterを採用する計画が発表され注目を集めました。
また、Flutterは、複数企業とパートナーシップを進めている中で、重要なパートナーシップとしてトヨタとの連携もあげています。
参考資料:Flutter/Dartで取り組むフロントエンド開発。グローバルトップシェアのシステムのUIを開発するというシゴト
FlutterのTwitter投稿より
まとめ
Flutter開発は、Android、iOSの両方に対応したアプリを開発できるという大きなメリットがあります。OSごとに対応しなければならない面があるなどのデメリットも挙げられますが、多くの場合メリットの方が大きいでしょう。
有名企業が実際にFlutterを使って開発したアプリをリリースしている事例もあり、今後より普及していくことが想定されます。