Flutterは,Dartの単一コードベースによるiOSとAndroidのクラスプラットフォーム開発を実現するためにGoogleが開発した,オープンソースの新フレームワークだ。両方のプラットフォームで,ハイパフォーマンスと60fsでジッタフリーなエクスペリエンスを提供することを目的とする。
クロスプラットフォーム言語としてDartを選択した理由について,開発チームは,フル機能のアプリにも簡単なスクリプトにも使用可能なスケーラブルな言語であり,JavaScriptやJava,C#といった言語との共通点が多いため,と説明している。その他にも,Dart VMのパフォーマンス,ObservatoryやリアルタイムVMプロファイラ,デバッガ,イントロスペクションツールなどのDartツール,スナップショット,ロードの速いアプリケーションバイナリフォームなどが,選択の理由としてあげられている。
Flutter自体はCおよびC++で開発されていて,2Dレンダリングエンジン,Reactにインスパイアされた関数型リアクティブ(functional-reactive)フレームワーク,一連のMaterial Designウィジェットなどを提供する。Android上では,C/C++コードはAndroid NDKでコンパイルされるが,Dartで記述されたアプリケーションコードの大部分はDart VM上で動作し,JITコンパイルされた最適化ネイティブコードを生成する。一方iOSでは,FlutterのC/C++コードはLLVMでコンパイルされ,Dartコードはアヘッド・オン・タイムでネイティブコードにコンパイルされる。
Android上のFlutterはPlay Storeを経由しないネットワーク(HTTP)アップデートをサポートしているが,iOSとApp Storeではこのオプションがないことに注意が必要だ。
Flutterの重要な機能のひとつとして,MojoのIPCシステムとのインテグレーションがある。これによって,ネイティブサービスやセンサ用API,ローカルストレージなどへのライトウェイトなアクセスが可能になると同時に,デバイスプラットフォームの既定のプログラム言語との相互運用が,バインディングや大規模なラッピングクラスライブラリなしでサポートされている。
FlutterはさらにAtomプラグインも提供している。ただし現在はまだ開発中で,構文の強調表示やコード補完,リファクタリング,テンプレートなどがサポートされている。
FlutterアプリはAndroid 4.1.x以降およびiOS8以降で動作するが,現在はまだ正式版ではない。入手はGitHubから可能だ。