今、大きな注目を集めるアプリ開発プラットフォームFlutterとは

#エンジニアブログ

絶えず進化を続けるIT業界では、新しい技術や手法が次々と生まれていますが、その中でも昨今非常に大きな注目を集めているのが「Flutter(フラッター)」です。今回はFlutterとは何か、から需要や動向、今後の展開までをご紹介します。

 

 

■Flutterとは?

Flutterは、IT業界の巨人Googleにより開発されたオープンソースのフレームワークで、主にAndroidやiOSのクロスプラットフォーム(マルチプラットフォームとも言う)でのアプリケーションの開発に利用されています。
このクロスプラットフォームがFlutterの最大の特徴であり、AndroidとiOSのどちらのプラットフォームでも稼働するアプリケーションを1回の構築で対応することをコンセプトに作られています。これは、とても画期的なことであり、エンジニアにとっては、新たな時代の扉が開いた、と言っても過言ではないでしょう。

 

クロスプラットフォームの考え方が登場する前は、同じスマートフォンアプリでもAndroidアプリとiOSアプリでは、プラットフォーム(OS)が違うため、構築の方法やアプローチも全く異なるものでした。つまり、同じ機能を実装するアプリでも別の言語を用いて、それぞれに開発する必要があったのです。

 

《参考:Android/iOSアプリの開発方法の違い》

 -Androidアプリ:Android Studio、Kotlin(一部Java)を用いて開発
 -iOSアプリはXcode、Swiftを用いて開発

 

異なるプラットフォーム・開発方法で、同一的な機能のアプリを開発することの大変さを多くのエンジニアが体感していたことでしょう。

 

しかしいかに両プラットフォーム用の開発が大変であっても、マーケティング的な視点では、どちらかのプラットフォームを捨てることは避けたいところです。ビジネスとしてのサービス提供の観点でも、Flutterでの開発はメリットが大きいでしょう。

 

また、AndroidやiOSアプリだけでなく、デスクトップアプリやWebアプリにも対応しており、マルチに対応しているプラットフォームとなっています。

 

■Flutterの実態

未来のスタンダードとなりうるFlutterですが、現時点での需要や実績などの実態はどのようになっているのでしょうか。
Googleは米国時間2020年4月23日、Flutterを利用している開発者が200万人を超えたと発表しています。また、GoogleのTim Sneath氏によれば、Flutterを用いて開発されたAndroidアプリが約5万本公開されており、そのうちの1万本近くは過去1カ月間でアップロードされたものだということです(2020/4時点)。

さらに、Stack Overflowが2019年に実施した調査では、Flutterは、React Native、Xamarinに続いて多く利用されていることがわかっています(2020/4時点)。
主に海外での数値ですが、急速に使用率が高まっていることがわかります。日本でもこの流れは同様で、今後増えていくことが予想されるでしょう。

 

《参考:Flutterの開発事例》
Google Ads 、Xianyu(中国のフリマアプリ)、Hamilton Musical

 

日本ではなかなかFlutterでの事例が生まれていませんが、同じくクロスプラットフォームの考えで作られたReact NativeやXamarinでは、ポケモンGOやスーパーマリオラン、白猫プロジェクトといった有名なアプリがリリースされています。今後Flutterでも同様に有名なサービスプロジェクトで採用されてくるでしょう。

 

 

■Flutterのメリット・デメリット

ここまでのご紹介では、夢のようなフレームワークと思われるFlutterですが、メリットと合わせて、現時点でのデメリットも整理したいと思います。

 

《メリット》
=開発工数を抑えられる=
・Android/iOSのアプリ開発を1回の構築で行うことができるため、開発工数を抑えられる
・サードパーティ製のライブラリが不要で、Flutter内のライブラリで完結できるため、複数人のエンジニアが関わるチーム開発における効率化がはかれる(誰がどのライブラリを使っているのかが分散しない)
・ウィジェット、レンダリング、アニメーションやジェスチャーなどに幅広く対応しており、リッチで自由度の高いUIが求められるプロジェクトが比較的に容易に実装できる

 

=開発言語であるDartの習得難易度の低さ=
Flutterの開発言語であるDartはJavaScriptの代替として注目されていますが、後発ということもあり、JavaScriptより扱いやすくなっています。新たな言語を習得することのハードルがあることは確かですが、言語としての難易度はそれほど高くはなく、JavaScriptの知見が土台として活かせることもあり、学習のハードルが比較的低く習得しやすい、という側面があります。

 

=処理速度への期待=
Flutterと同じくクロスプラットフォームでのアプリケーションの開発に利用され、Flutterと比較されることもあるReact NativeはJavaScriptと連携するためにJavaScriptブリッジを使用していますが、Flutterはクロスプラットフォームに特化した独自のUIパーツを使用しておりJavaScriptブリッジが不要のため、処理速度の向上が期待できます。

 

《デメリット》
海外では多くの開発事例があるFlutterですが、日本のエンジニアが日本で習得する際のハードルはいくつかあるのが現状です。
・日本語の文献が少なく、最新のバグ情報を探すのが困難
・オープンソースのライブラリがまだ多くはなく、独自でライブラリを作らなければならないケースがある(今後は増えていくことが予想されます)
・カメラや通知機能などのOSに依存する機能を利用する場合にはiOS/Androidが提供しているネイティブの言語も併用して実装する必要がある
・現状では採用事例が少なく、アプリ開発での使用の提案が受け入れられづらいケースがある

 

 

■Flutterの今後(ロードマップ)

大注目でありつつも、2017年5月11日に初版がリリースされたFlutterはまだまだ進化の途中です。Android/iOSのアプリ開発に関してはある一定の完成度がある状況ですが、展開されている今後のロードマップを見ると、バグの修正やデスクトップアプリケーションへの対応の強化など、クロスプラットフォーム開発用のフレームワークとしてより強固なものになっていくでしょう。

 

《2020年のFlutter開発のロードマップ》

(https://github.com/flutter/flutter/wiki/Roadmap)

・四半期ごとの調査とGitHubの問題に関するフィードバックを行う予定
・「flutter create; flutter run」を実行できるようにすることを2020年の目標とする
・Web対応をAndroid/iOSと同等のレベルのサポートを目標とする
・Flutterをデスクトップアプリケーションを作成する最良の方法にする取り組みを続ける
・新しい機能を追加するのではなく主にバグの修正に焦点を当て、年間を通じて4つの安定板をリリースする予定

 

 

■まとめ

クロスプラットフォームの中では最後発のFlutterですが、GitHubのスター数は非常に多く、他にはないDart言語による開発についても注目に値することから、その人気は急上昇しています。
現に、先発であり一定の地位を築いたReact NativeからFlutterに移行する企業も少なくないようです。
まだまだ日本語による情報や採用事例は少ないですが、プロトタイプの開発や個人学習において、触れてみる価値は十分にあるのではないでしょうか。
特に、フロントエンドエンジニアの方々は、今後ともFlutterに関する最新の動向をキャッチアップすることをオススメします。

関連する記事