GoogleのFlutterは、クロスプラットフォーム開発に対応した UIツールキット。登場してからまだ2年しか経っていないが、あっという間に多くのデベロッパーがこぞって採用するフレームワークとなった。ただし、これまでは「クロスプラットフォーム」の意味は、AndroidとiOSにのみ限定されていた。昨年末になってGoogleは、Flutterをモバイル用だけでなくウェブにも拡張すると発表した。そして米国時間5月7日に開催されたGoogle I/Oで、その言葉通り、ウェブ用Flutterのテクニカルプレビュー版を発表した。
さらにGoogleは、Flutterを利用して、macOS、Windows、Linuxをターゲットにした開発がもうすぐ可能になることも明らかにした。すでにGoogle自身も、Flutterを利用してGoogle Home Hub(Nest Hubに改名)のユーザー体験を設計し始めているという。それ以外に、さまざまな組み込みデバイス用に活用することも視野に入れている。
「Flutterは、カスタマイズされたユーザー体験を開発するための、美しく、速く、生産的なオープンソースのツールキットです。もともとはモバイル向けとして、基礎的な部分から構築したものです」と、Flutter担当のグループプロダクトマネージャ、Tim Sneath氏は語った。「今回のニュースは、Flutterをモバイル専用という枠から開放し、モバイル、組み込み、さらにデスクトップを含む汎用のポータブルなUIツールキットに昇華させるという、大きな意味を持つものです」。
デフォルトでは、Flutterを利用するアプリはGoogleのDart言語で記述し、そこからJavaScriptにコンパイルすることができる。その点では、Flutterをブラウザ上で利用するのは単純なことのように思われる。しかし、Flutterのエンジンをブラウザ上で製品レベルの品質で動作させるには、それなりの開発作業が必要だった。Sneath氏によれば、Flutterチームは、ブラウザ上でもモバイルとまったく同様に動くようにするため、特に熱心に取り組んだという。それはデベロッパーからも、ユーザーからも、同じように見え、使えるものでなければならなかった。
「大きな課題は、標準的なウェブの機能を利用して、Flutterベースのリッチなユーザー体験を実現し、それをどうやってクライアントに届けるのか、ということでした」と、Sneath氏は説明した。ウェブ上で動かすということは、ユーザーによるウィンドウのサイズ変更のような基本的なことから、キーボードやマウスとのやりとりといったことまでサポートしなければならないことを意味する。
このような要件は、もちろんデスクトップにも当てはまる。ただし、デスクトップ用のコードは、まだ製品レベルには達していない。とはいえ、すでにデベロッパーはデスクトップ版での開発も試せるようになっている。Flutterチームによれば、現状ではmacOS版の完成度が最も高いが、それなりの覚悟があれば、Windows版やLinux版での開発も可能だという。
チームは、Flutterのコードベースを1つに統一したいと考えている。そうすれば、デベロッパーがさまざまに異なるプラットフォームをサポートする際にも、Flutterのフレームワークや、その上で動作するアプリのコードをフォークし直す必要がなくなる。「私たちは、1つのフレームワークですべての環境に対応できるようにしたいと考えています」と、Sneath氏は言う。しかも、一見するとデスクトップアプリに見えるウェブアプリではなく、ネイティブ動作するデスクトップアプリも含めての話だと強調した。
Sneath氏は、New York Timesのパズルアプリのデモを見せてくれた。モバイルとウェブで、見た目も操作感覚も、まったく同じだった。これはFlutterのデベロッパーにとって、理想的なシナリオに違いない。
今回のアップデートで、GoogleはFlutterのコアに、さらにいくつかの新機能を追加した。その中には、iOS用の新しいウィジェット、Googleならではマテリアルデザイン、Dart 2.3のui-as-codeのサポート、といったものが含まれている。さらにFlutterチームは、ML Kit Custom Image Classifier for Flutterも発表した。これを利用すれば、デベロッパーは自分のアプリに画像認識のワークフローを組み込むことができる。「スマホのカメラを使用してトレーニング用のデータを収集することができます。他の人にデータ収集に協力してもらうことも可能です。1つのアプリでモデルのトレーニングをすることも、トレーニング済のモデルを利用することもできます」と、チームは発表した。
今後の展望としては、テキストの選択やコピー、ペーストのサポート強化、プラグインのサポート、PWA(プログレッシブウェブアプリ)といった新技術を標準サポートすることも計画している。
画像クレジット:TechCrunch
[原文へ]
(翻訳:Fumihiko Shibata)