Flutterってなに?
Flutterとは?
Googleによって開発されたオープンソースのモバイルアプリケーションフレームワークです。FlutterではAndroidとiOS両方の開発ができます。それだけではなく、PCやWebページも単一のコードで表示できます。つまり、モバイル(Android/iOS)、PC(Windows/MacOS)、Webページを単一に記述することができるということになります。
FlutterのエンジンはC++で書かれていますが、コーディングをしていく上では、Dartという言語を使用します。
Dartとは?
JavaScriptの代替言語として2011年にGoogleからリリースされたオブジェクト指向言語です。 JavaScript言語における言語上の問題を解決を目的に設計されたため、書き方もJavaScriptと類似しています。 そのため、JavaScriptの経験がある人はなじみやすいでしょう。 また、オブジェクト指向のため、同じオブジェクト指向言語のJavaの経験がある人もなじみやすいと言えます。 Dartは複数種類のIDEがサポートしており、パフォーマンスも高いです。比較的習熟しやすい言語のため、学習するにはおすすめの言語です。
開発環境はどうなるの?
AndroidではAndroid Studio,iOSではXCodeが主流ですが、FlutterではAndroid Studioを使って開発している方が多いです。Android StudioはFlutterのプラグインを用意しており、インストールすることで簡単にFlutter開発をすることができるからです。
Flutterを使用している企業
GoogleやSquare、Alibaba Group、ebayといった大企業が、Flutterを用いて世界的なアプリを開発しています。 Googleは音声等でAIを操って、任意の機能を呼び出すことができる、GoogleアシスタントをFlutterで記述しています。 Squareはアプリ内決済用FlutterプラグインSDKを開発し、決済システムをFlutterアプリに統合することが可能となりました。
Flutterでどんなことができるの?
冒頭でも記載した通り、AndroidとiOSを同じプログラミング記述で動作させることができます。
一部、AndroidとiOSで違う方法で記述しないと動作しないものもありますが、基本的には同様に記述できます。
そのため、開発効率が高いということになります。(AndroidとiOSを別々で作るとしたら単純計算で2倍の時間がかかります。)
Flutterのデメリット
少し記載した通り、基本的な動作はAndroidとiOSでも単一コードで動作しますが、一部できないこともあります。
Flutterの特徴として、各プラットフォームのコードを呼び出さずに、Flutter独自のレンダリングエンジンで描画をします。そのため、各プラットフォームのコードを呼び出して描画するReactNative等でできていたことが、Flutterではできないという可能性はあります。具体的な例を挙げると、ネイティブの機能を使用したい場合、ネイティブコードを書く必要があります。そのため、Flutterだけ学習していても開発できない機能はどうしても存在します。
また、Flutterだけではなくリリースされてまもない新技術に共通するデメリットとして、ライブラリが不十分である可能性があります。今後の公式の動きに注目しましょう。
Flutterと他フレームワークとの比較
ReactNativeやXamarin等のフレームワークもコードベースの統合は可能です。しかしそれらは理解するのが難しく、抵抗感がある人が多いのが現状です。しかし、FlutterはJavaScriptになじみがあれば理解しやすく、なじみがない人でもDart言語は比較的理解しやすいもののため、Flutterを導入する企業が多いです。
Flutterの学習方法
「公式は英語だし新技術を独学で学習するのはちょっと...」と躊躇われている人も多いかもしれません。しかしながら、その公式サイトを翻訳して、日本語サイトとして運用している有志サイトもありますし、YoutubeでHow To動画がアップロードされているため、学習しやすい環境であると言えます。ぜひ学習を進めてみてはいかがでしょうか。