訳者はじめに
FltuterとDartの3ヶ月ごとのバージョンアップに対してブログ記事がありますので、そちらの日本語訳をさせていたただいております。誤訳・改善点があればご連絡いただけると助かります。
こちらはMichael Thomsenさんの「Landing Flutter 3.22 and Dart 3.4 at Google I/O 2024」の記事を訳しました。
はじめに
DartとFlutterの航空管制はここ数ヶ月特に忙しかったのですが、Flutter 3.22とDart 3.4が今年のGoogle I/Oに間に合い、本日リリースされたことを発表できることを嬉しく思います!
私たちは、強力な言語とフレームワークのペアを提供し、単一の共有コードベースから美しく、リッチで、高速なアプリを構築できるようにすることに引き続きコミットしています。
Flutter 3.22とDart 3.4は、パフォーマンスの向上とプラットフォーム固有の改良を提供し、私たちをそのビジョンに近づけます。Impellerレンダリングエンジンの改良、iOSでのよりスムーズなビジュアルとCPU使用率の削減、Androidの予測戻るジェスチャーによるプラットフォームナビゲーションの強化、Google Mobile Ads SDKによる収益化オプションの拡大、DevToolsの新しい強力なディープリンクバリデータなどです。Dartの開発者は、IDEで直接Dart fixを使用してAPI移行を合理化し、高度なプロファイリングのための新しいDevTools機能を利用できます。さらに、Vertex AI for Firebase Dart SDKをプレビューできるようになり、AIを活用した機能と堅牢なセキュリティ対策が統合されました。
本日は、Flutterを使って生産性を向上させ、パフォーマンな体験を構築しているトップ企業にもスポットを当てます。また、生産性、開発者体験、ゲームへの投資に関する最新情報もお届けします。
リリースに含まれるすべての詳細については、専用のFlutterとDartの記事をご覧ください。Dashの時間だ!
Flutter in action
Flutterの開発者たちは、アプリストアに大規模で新しいアプリをローンチするのに忙しくしている。いくつか見てみよう。
大規模なエンタープライズ・スケールのアプリケーションのモバイルおよびウェブ配信を支援
- 英国では、金融機関のVirgin Money がモバイルバンキングとクレジットカードアプリのスイートでFlutter を使用し、アプリ開発プロセスの統一、変更の迅速化、業界をリードするユーザーエクスペリエンスを実現している。
- 米国の保険会社GEICOは最近共有、FlutterがiOS、Android、ウェブ全体でブランド化されたユーザー体験を向上させ、コードベースのサイズを縮小し、開発効率を向上させるのに役立ち、そのすべてがスケールした。
- Universal Studios Destinations & Experiencesはハリウッド、大阪、オーランドのパーク向けに新しいFlutterモバイルアプリをリリースした。彼らがなぜFlutterを選んだのか、そしてこれまでのパフォーマンスを見るには以下のビデオをご覧ください。
モバイルとウェブを超える
- Canonicalチームは、UbuntuでFlutter エコシステムをサポートできるようにするため、2021年からFlutterと協力してきました。この1年間で、CanonicalチームはUbuntuインストーラーをFlutterで一から作り直した。
- LGは、スマートTVオペレーティングシステムであるwebOSを強化するためにFlutterを選択した。Flutterのパフォーマンス、生産性、強力なエコシステムにより、LGはスムーズに動作するwebOSシステムアプリを迅速に開発し、展開することができる。2025年までに、Flutterは世界中で数千万台のLG TVのシステムアプリを動かすでしょう。
私たちはこれらのサクセスストーリーに触発され、Flutterをより良いものにすることに全力を注いでいます。さらに素晴らしいアプリ、ゲーム、体験を構築できるようにするために、私たちが何をしているのか、最新の製品アップデートを紹介しましょう。
WebAssembly: ウェブ上でネイティブのパフォーマンスを追い求める
今日、私たちは安定版リリースでFlutterウェブアプリをWebAssembly (Wasm)にコンパイルするためのサポートを発表します。これはウェブブラウザ向けのエキサイティングな新しい命令フォーマットで、ポータブルでプラットフォームニュートラルなバイナリコード形式を提供します。
私たちのWasmへのサポートは、複数年にわたる深い投資でした。最初に、我々はChromeチームと提携し、ガベージコレクションを一般的に使用するDartのような高水準のマネージド言語に対するWebAssemblyのサポートを定義しました。この結果、WasmGC proposalが完成し、Chrome (Chromium 119以降)とFirefox (120以降)でランタイム実装が利用できるようになり、他のブラウザベンダーもこれに続くことが期待されています。次に、WasmGCコードを生成するための全く新しいDartコンパイラーバックエンドを追加し、DartチームとFlutterチームが協力して、コンパイルされたアプリコードとFlutterレンダリングエンジンの両方をWasmモジュールとして実行し、効率的なWasm間相互接続を実現しました。
その結果どうなったか?パフォーマンスが大幅に向上し、マシンコードを実行しているモバイルデバイスやデスクトップデバイスに近づいています。社内ベンチマーク(M1 MacBook上のChrome)では、Wonderousのフレームレンダリング時間が、一般的なケースで2倍、99%のワーストケースで3倍改善されました。レンダリング性能の向上は、フレームバジェット(次のフレームのレンダリングに割り当てられる時間)を超えると非常に目に見えるジャンクが発生する、アニメーションやリッチなトランジションを特徴とする要求の厳しいアプリでは非常に重要です。Washmは、従来のJSコンパイルとWashmコンパイルを比較したWonderousアプリの並置によって示されるように、このような問題を解消する可能性を秘めています。
デモアプリケーションWonderousのJavascriptとWasmのレンダリング速度の比較。
Flutterウェブアプリ用のWasmコンパイルは今日から安定版で利用可能です。まずはDart Wasm documentationとFlutter Wasm documentationをご覧ください。
Dart macros: 開発抽象度の向上
私たちは、クラス最高の開発者体験を提供することをお約束します。それは、JSONデータのシリアライズのような、Dart開発者の長年の悩みの種に取り組むことを意味します。
これは、些細なことと面倒なことが同居している一般的なパターンです。現在の解決策は、エンコードとデコードの定型文を手作業で苦労してこなすか、JsonSerializableパッケージのようなコード生成ソリューションの形で余分なツールを重ねることを意味します。
今日、私たちはJSONのためのより良い選択肢のプレビューを発表する。JsonCodableマクロである。
マクロは、より多くのコードを生成するコードです。マクロシステムは Dart に組み込まれており、コードを編集して実行しているときにリアルタイムで実行されます。遅延のない統合されたエクスペリエンスであり、このスクリーンキャストで示されているように、ホットリロードなどの既存の開発者ワークフローを完全にサポートしています:
マクロの使用感を示すスクリーンキャスト: 最初はtoJsonコード補完は存在しませんが、@JsonCodableをクラスに追加すると、toJsonコード補完がすぐに表示されます。
私たちは、マクロが開発者のあらゆる問題を解決してくれることに興奮しています。例えば、highest votedDart言語の機能であるデータクラスです。特定のアプリケーションだけでなく、私たちの最終的な目標は、ユーザーが独自のマクロを作成し、Dartプログラミングの抽象度を上げることができるマクロシステムをDartに搭載することです。
このような強力なマクロシステムの設計と実装は大きなタスクであるため、現在のところ安定版リリースの時期は未定です。詳細は Dart 3.4 post をご覧ください。その間に JsonCodable
マクロのプレビューを試してみてください。詳細については、* macros documentation* を参照してください。
Flutterゲーム開発のための新しいリソース
ゲーム業界をリードするEtermaxやSupercellは、Flutterのパワーと柔軟性を活用して、楽しいユーザー体験を効率的に提供し、リーチを拡大しています。
本日、Flutterゲーム開発者向けの新しいリソースを提供し、この勢いをさらに加速させることができることを嬉しく思います:
-
SoLoudオーディオエンジンが利用可能になりました: 私たちはFlutterコミュニティ(@Marco Bavagnoli)と協力して、多くのゲームに不可欠な低レイテンシーで高性能なサウンドを提供する、フリーでポータブルなオーディオエンジンを開発しました。また、SoLoudを使用した新しいsound and music codelabも作成しました。
-
クロスワード風の広範なグリッド を生成し、ユーザーエクスペリエンスを損なうことなく交差する単語を作成する方法を学び、Box2Dに似たForge2Dと呼ばれる2D物理シミュレーションを使用してFlutterとFlameのゲームでゲームメカニクスを作成する方法を学びます。
-
Flutterのウェブベースのゲームのロード速度を最適化するための新しいガイド: ウェブベースのゲームにおいて、長いロード時間は大きな障害となります。このガイド(Cheng Linが執筆)に従ってロード速度を最適化すれば、ロードが遅いという理由でプレイヤーがゲームを放棄することはなくなります。
持続可能なゲーム開発に力を与える
2024年1月、Flutterを使用する背景にあるストーリーに触発され、私たちはGlobal Citizenと提携し、Flutterを使用した持続可能なゲームをデザイン、構築、公開することに私たちのコミュニティで挑戦しました。これらのゲームは、プレイヤーを鼓舞し、環境のために小さくても意義のある行動をとる力を与えることを目的としています。本日、私たちは10人の受賞者を発表します。
受賞者の皆さん、おめでとうございます!
まだまだ続きます
今日ご紹介したのは以上ですが、ご紹介しきれなかったエキサイティングな改良点はまだまだたくさんあります。以下はその一部である:
- Vertex AI for Firebase Dart SDKをプレビューして、DartまたはFlutterアプリでAI駆動機能のためのGemini APIを使用することができます。このSDKはFirebase App Checkと統合されており、APIコールを保護し、課金詐欺、フィッシング、アプリのなりすましなどの深刻な脅威からバックエンドインフラを保護します。詳しくはAIページをご覧ください。
- 当社の次世代レンダリングエンジンであるImpellerは、現在Android上で機能が完成しています。
- Androidのpredictive backジェスチャーがFlutterアプリ内でナビゲートするときと、他のアプリやホームスクリーンにナビゲートするときの両方でサポートされるようになりました。
- iOSのプラットフォームビューのパフォーマンスが最適化され、CPU使用率が最大50%削減されました。
- Google Mobile Ads SDK**が拡張され、より多くの広告パートナーと仲介オプションをサポートするようになりました。
- DevToolsに新しいdeep link validatorが追加され、Androidのディープリンク設定におけるエラーの特定とトラブルシューティングに役立ちます。
- APIマイグレーションツールであるDart fixは、IDEから直接呼び出せるようになりました。
- DevTools**がタイムラインでの高度なフィルタリングとCPUサンプルに対応しました。
それぞれの詳細やその他については、Flutter technical postとDart 3.4 postをご覧ください。
いつもながら、皆さんの継続的なサポート、情熱、熱意、フィードバックに大変感謝しています。このプロジェクトはみなさんのおかげで成り立っています。みなさんがFlutterをどのように前進させ続けてくれるのか、とても楽しみです。
Flutterは終わり、そして終わる。またすぐにお会いできることを楽しみにしています!