Google I/O 基調講演の一環として、Flutter 3 のリリースについて発表いたします。Flutter 3 では、macOS と Linux デスクトップ アプリのサポート提供、Firebase インテグレーションへの改善、生産性とパフォーマンスの新たな特長、Apple Silicon サポートなど、モバイル中心からマルチプラットフォームのフレームワークへのロードマップが継続しています。
Flutter は、ウェブの開発手法と、これまでは主にゲームに使われていたハードウェア アクセラレーションによるグラフィック レンダリングとピクセルレベルのコントロールを組み合わせることで、アプリ開発を向上する目的で作られました。Flutter 1.0 ベータ版以降からのこの 4 年間でこれらの基盤上への構築を徐々に進め、新しいフレームワーク機能やウィジェット、基盤となるプラットフォームとの緊密なインテグレーション、パッケージの豊富なライブラリや、さまざまなパフォーマンス、ツールの改善を追加してきました。
Flutter の成長に伴い、多数のアプリ開発者が Flutter でアプリを構築するようになりました。現時点で、Flutter を使用して公開されたアプリは 500,000 を超えています。data.ai などの調査会社による分析や一般の評価では、Flutter はさまざまな分野で幅広いお客様に利用されており、その用途は WeChat のようなソーシャル アプリから Betterment や Nubank などの金融・バンキング アプリ、SHEIN や trip.com などの商用アプリから Fastic や Tabcorp などのライフスタイル アプリ、My BMW などのコンパニオン アプリからブラジル政府などの公的機関に及びます。
開発者の皆様からは、Flutter は多数のプラットフォームで優れたアプリの迅速な構築に役立つとのフィードバックをいただいています。最新のユーザーの調査によると、
Sonos による最新のブログ投稿では、Sonos がこの 2 つ目で強調している、セットアップ エクスペリエンスの刷新について述べています。
「これまで当社のチームが提供してきたものとは違い、Flutter が「プレミアム」のレベルを大幅に高めたといっても過言ではありません。デザイナーにとって最も重要なことは、新しい UI を簡単に構築できることです。それにより、ダメな仕様を却下することに時間を取られることなく、取り組みの繰り返しに時間をかけられます。それに価値があると認められたので、Flutter を試してみたのです。」
この度、Flutter のサポート対象のプラットフォームを拡充した Flutter 3 を紹介します。Flutter 3 では 1 つのコードベースから 6 つのプラットフォームに対応したアプリが構築きるので、開発リソースが少ないスタートアップ企業であってもアイデアをより多くのユーザーに届けることができます。
前回のリリースでは、iOS と Android にウェブと Windows サポートを追加しましたが、Flutter 3 では macOS と Linux アプリの安定サポートを追加します。プラットフォーム サポートの追加には、ピクセルのレンダリング以上のものが必要です。例えば、入力とインタラクションの新しいモデル、コンパイルとビルドのサポート、ユーザービリティと国際化、プラットフォーム特有のインテグレーションなどがあります。今回のリリースの目標は、基盤となるオペレーティング システムを最大限活用しつつ柔軟性をもたらすこと、またできる限り多数の UI とロジックを共有することです。
macOS に関しては、Google は Universal Binary を利用し、Intel と Apple シリコンの両方のサポートに投資しています。Universal Binary サポートにより、アプリを両方のアーキテクチャでネイティブに実行される実行可能ファイルにパッケージ化できます。Linux では、Canonical と Google が協力して、高度に統合された、最善の開発オプションを提供しています。
Flutter が優れたデスクトップ エクスペリエンスを実現する例として、今回、ベータ版としてリリースする Superlist があります。Superlist は、新しいタスク一覧と個人の計画にリスト、タスク、フリーフォームのコンテンツを組み込んだ新しいアプリによってコラボレーションを加速します。Superlist チームは、迅速かつ信頼できるデスクトップ エクスペリエンスを実現できる点から Flutter を選択しました。そして、チームの今日までの実績から、この選択が有意義であったことが証明されています。
Flutter 3 は、パフォーマンスの向上、Material You のサポート、生産性の向上など、基盤にもさまざまな改善が行われています。
このバージョンの Flutter では前述の取り組みに加え、開発用として Apple シリコンに完全にネイティブ対応しています。Flutter は M1 対応の Apple デバイスのリリース時点から互換性がありますが、現在では、Dart の Apple シリコン サポートを活用して、M1 対応のデバイスでのコンパイルのスピードをアップし、macOS アプリの Universal Binary をサポートしています。
このリリースでは、マテリアル デザイン 3 対応もほぼ完成しており、デベロッパーは適応性の高いクロスプラットフォームのデザイン システムによってダイナミックなカラーパターンや最新のビジュアル コンポーネントを活用できます。
詳細な技術情報のブログ投稿では、この他にも Flutter 3 のさまざまな新しい特長について触れています。
Flutter は、生産性が高く、移植可能なマルチプラットフォーム開発向けの言語である Dart を利用しています。今回の Dart での作業には、ボイラープレートを減少して可読性を高める新しい言語機能、試験運用版 RISC-V のサポート、アップグレード版の linter、および新しいドキュメントが含まれます。Dart 2.17 での新たな改善点について詳しくは、詳細に関するブログをご覧ください。
もちろん、アプリの構築には UI フレームワーク以上のことが含まれます。アプリのパブリッシャーは、認証、データ ストレージ、クラウド機能、デバイステストなどのサービスをはじめとする、アプリの構築、リリース、運用に役立つさまざまなツールを必要としています。Flutter をサポートするサービスは Sentry、AppWrite、AWS Amplify など多数あります。
Google のアプリサービス用には Firebase があり、SlashData によるデベロッパー ベンチマーク調査によると、Flutter デベロッパーの 63% がアプリに Firebase を使用しているとのことです。そのため、最近の数リリースでは Firebase を利用して、最大級のインテグレーションとして Flutter を拡張および統合しています。たとえば、Flutter の Firebase プラグインの 1.0 までには、ドキュメントやツールを改善し、FlutterFire UI など認証やプロファイル画面で再利用できる UI を備えた新しいウィジェットを追加しました。
また、Firebase でよく利用されるリアルタイムの障害レポート サービス Crashlytics による Flutter アプリのサポートも大幅に改善しました。Flutter Crashlytics プラグインが更新されたことにより、重大なエラーをリアルタイムで追跡し、他の iOS や Android デベロッパーが利用しているものと同じ機能を活用できます。これには重要なアラートや「クラッシュしていないユーザー」などの指標があり、アプリの安定性を常に把握できます。Crashlytics の分析パイプラインがアップグレードされ、Flutter クラッシュのクラスタ化が改善され、問題のトリアージ、優先順位付け、解決の速度が向上しました。また、プラグインのセットアップ プロセスもスムーズになったため、Crashlytics を Dart コードから直接、わずか数ステップで起動して実行できるようになりました。
ほとんどのデベロッパーにとって、Flutter はアプリのフレームワークです。しかし、現在はカジュアル ゲーム開発のコミュニティも拡大しつつあり、Flutter のハードウェア アクセラレーションによるグラフィックのサポートや、Flame などのオープンソースのゲームエンジンが活用されています。カジュアル ゲーム デベロッパーの皆様に簡単に始めていただくため、今年の I/O では、テンプレートのスターター キットとベスト プラクティスに広告のクレジットとクラウド サービスを加えたカジュアル ゲーム ツールキットを発表します。
Flutter は高負荷の 3D アクション ゲーム向けに設計されているわけではありませんが、数億ものユーザーが利用している PUBG Mobile などの人気のあるゲームでは、ゲーム以外の UI には Flutter を利用しています。そして I/O では、Firebase と Flutter のウェブサポートを利用するピンボール ゲームを制作し、技術の進歩を紹介します。I/O ピンボールでは、カスタム デザインしたテーブルの周りを人気の Google のマスコットである Flutter の Dash、Firebase の Sparky、Android ロボット、Chrome の恐竜が囲んでおり、他の人と競って高いスコアを目指します。Flutter の多様性を紹介するには最適なゲームでしょう。
Flutter が優れている点の 1 つは、単なる Google の製品ではなく、「みんなにとっての」製品であることです。オープンソースとは、誰もが参加し、貢献できることを意味します。新しいコードやドキュメントの提供、コアのフレームワークに新たな能力をプラスするパッケージの作成、お互いに学ぶための本の執筆やトレーニング コースの設定、あるいはイベントの企画やユーザー グループの設立など、さまざまなことができます。
コミュニティを最もよく表すものとして、近頃 DevPost との提携によって Puzzle Hack チャレンジを開催し、デベロッパーの皆様に伝統的なスライドパズルを Flutter で再現してもらい、そのスキルを証明する場を設けました。ここではウェブ、デスクトップ、そしてモバイルがどのように結びつくかがわかりやすく紹介されました。ゲームはオンラインでも、店頭でもプレイできるようになったのです。
優れた作品と優勝者の紹介を動画にまとめました。ご覧ください。
Flutter をご支援いただきありがとうございました。引き続き Flutter 3 をご利用ください。
以前お知らせしたとおり、2022 年 5 月 31 日より、AdWords API にリクエストした際のエラー率が 100% に向けて上昇し始めます。現在 AdWords API を使っている方は、すぐに Google Ads API にアップグレードする必要があります。アップグレードを行うまで、次のスケジュールに従ってアプリケーションのエラー率が上昇します。
2022 年 7 月 31 日以降は、AdWords API のすべてのリクエストが失敗します。
移行を開始するには
サポートを受けるには
ユーザーは 2022 年 4 月より、UI を通してセルフ アップグレードできるようになりました。デベロッパーは、6 月末までに API からセルフ アップグレードできるようになります。API で管理されているアカウントの大部分は、6 月に API でツールが利用できるようになるのを待ってからセルフ アップグレードを行うものと予想されます。しかし、4 月以降、広告主が UI から手動でキャンペーンのアップグレードをする可能性もあります。新規またはアップグレードされた P-MAX キャンペーンを確実にサポートできるように、アプリケーションで今のうちに P-MAX を実装することをお勧めします。
アップグレードされた SSC は REMOVED 状態になります(指標は、過去の履歴として以前のキャンペーンでそのまま取得できます)。以前のキャンペーン ID から新しい P-MAX キャンペーン ID へのマッピングも行われます。既存の SSC の予算、アセット、設定は保存されます。
REMOVED
UI または API からキャンペーンをアップグレードすると、アップグレードを取り消すことはできない点に注意してください。
ご質問やさらにサポートが必要なことがありましたら、フォーラムからご連絡ください。
特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。ここに記載されている機能の詳細については、リンクまたは ChromeStatus.com の一覧でご確認ください。
Chrome でナビゲーション時の 103 Early Hints HTTP レスポンス コードがサポートされます(注 : Chrome のリリース番号が同じなのは偶然です)。<link rel=preload> などの link ヘッダーを含む 103 レスポンスを受け取ると、Chromium は最終的なレスポンスを受け取る前に、指定されたリソースのプリロード(またはプリコネクトやプリフェッチ、あるいはそのすべて)を試みます。これにより、ウェブ デベロッパーが Largest Contentful Paint(LCP)などの Core Web Vitals を最適化する余地が生まれます。
<link rel=preload>
HTTP/2 では、サーバーが先回りしてクライアントにデータを送信するサーバー プッシュという仕組みが生み出されました。サーバー プッシュは、サイトのパフォーマンス向上を目的として導入されました。それ以来、デベロッパーは一般的に、クライアント側のウェブ操作からプリロードをすることを好むようになっています。ナビゲーションの 103 Early Hints は、そのプリロードをする新たな方法を提供します。
ウェブでこれを実現するために行われている作業の詳細については、サーバープッシュを超える解決策 : 103 Early Hints ステータス コードを使った実験をご覧ください。
オリジン トライアルとして新機能を試して、ユーザビリティ、実用性、有効性についてのフィードバックをウェブ標準コミュニティに提供することができます。以下の項目を含め、現在 Chrome でサポートされているオリジン トライアルに登録するには、Chrome オリジン トライアル ダッシュボードをご覧ください。Chrome のオリジン トライアルの詳細については、ウェブ デベロッパーのためのオリジン トライアル ガイドをご覧ください。Microsoft Edge は、Chrome とは別に独自のオリジン トライアルを行っています。詳細については、Microsoft Edge オリジン トライアル デベロッパー コンソールをご覧ください。
Federated Credential Management API を使うと、ユーザーはフェデレーション アカウントを使ってプライバシーが保護された方法でウェブサイトにログインできます。これにより、ブラウザはリライング パーティと ID プロバイダが情報を交換するコンテキストを理解し、共有される情報や権限レベルについてユーザーに伝えることができるので、意図しない不正利用の防止につながります。
Chrome で以前にオリジン トライアルが行われていた以下の機能は、現在デフォルトで有効化されています。
ウェブ アプリケーションで、ローカル フォントとそれぞれのメタデータをエミュレーションできるようになります。この新しい API を使うと、ウェブ アプリケーションからローカル フォント内に格納されているテーブルデータにアクセスすることもできるので、カスタム テキスト スタックを使ってアプリケーション内でフォントをレンダリングできます。
注 : Chrome 102 ベータ版の投稿でこの機能が 102 ベータ版に搭載されると記載していましたが、それは誤りでした。
プリレンダリングとは、必要になる前にウェブページを読み込み、実際にそのページへのナビゲーションが発生したときに即座に表示できるようにすることを指します。これはページの読み込みを速くする技術です。以前の Chrome のプリレンダリングの仕組みは、No State Prefetch に置き換わっています。通常、No State Prefetch は即座にページが読み込まれることにはつながりませんが、この新機能はそれが可能です。この機能は Android のみでサポートされます。
User Agent Client Hints の GREASE 実装が現在の仕様に一致するようになります。この仕様には、現在のセミコロンとスペースに加えて追加の GREASE 文字が含まれており、バージョンを任意の数に変更することが推奨されています。これにより、User-Agent 文字列から好ましくない推定が行われることを防止できます。
GREASE
指定されたミリ秒単位の時間後に自動的に中断される新しい AbortSignal オブジェクトを返します。このメソッドを使うと、fetch() などのシグナルを受け取れる非同期 API で簡単にタイムアウトを実装できます。たとえば、次のようなことが可能です。 fetch(url, { signal: AbortSignal.timeout(10_000) });
fetch()
fetch(url, { signal: AbortSignal.timeout(10_000) });
Element インターフェースと ElementInternal インターフェースに ariaRoleDescription と呼ばれる ARIA プロパティが含まれるようになります。ここから、ARIA の role 属性を直接返却または変更できます。この機能はパソコン版でのみサポートされます。
Element
ElementInternal
ARIA
avif 画像ファイル形式がウェブ共有で共有できるようになります。許可される画像ファイル形式に avif が加わることで、avif の利用が広がります。ウェブサイトから、写真やその他のファイルをソーシャル メディア、メール、チャットなどに共有したい場合があります。Web Share API はすでに ChromeOS や Windows などのプラットフォームに搭載されていますが、まだ avif はサポートされていません。
Chrome が新しい圧縮形式 deflate-raw をサポートします。ウェブ デベロッパーは、ヘッダーやフッターなしに未加工の deflate ストリームにアクセスできます。これは、zip ファイルの読み取りや書き込みをする場合などに必要になります。
deflate-raw
form 要素に 'rel' 属性が追加されました。これにより、rel=noopener を持つ form 要素から移動したウェブサイトで window.opener の提供を防げることができるようになります。また、rel=noreferrer を指定すると、referer ヘッダーが送られなくなります。
'rel'
rel=noopener
window.opener
rel=noreferrer
referer
Chromium で URL の変更直後に popstate が発行されます。これにより、Firefox の挙動と一致するようになり、両方のプラットフォームで popstate の後に hashchange という順番でイベントが発行されます。この変更前の Chromium では、タスク後に hashchange が非同期で発行され、popstate は読み込みイベント後に発行されていました。つまり、ドキュメントの読み込み時間によって、イベントの順番が hashchange の後に popstate となる場合も、popstate の後に hashchange となる場合もありました。
popstate
hashchange
Gampepad API に安全なコンテキストが必要になります。また、'gamepad' という新しい機能ポリシーが、デフォルトの許可リスト 'self' で追加されています。
'gamepad'
'self'
ウェブ デベロッパーは、SerialPort forget() メソッドを使うことで、ユーザーが許可したシリアルポートへのパーミッションを自発的に取り消すことができます。シリアルポートにアクセスする長期パーミッションを保持する必要がないサイトもあります。たとえば、多くのデバイスがある共用コンピュータで使われる教育用ウェブ アプリケーションでは、ユーザー生成パーミッションが大量に蓄積されると、ユーザー エクスペリエンスの悪化につながります。 この問題を避けるには、最初のリクエストのパーミッションをデフォルトでセッション スコープにしたり、あまり使われないパーミッションに有効期限を設けたりといったユーザー エージェント側の対策と合わせて、サイト自体が不要になったユーザー生成パーミッションをクリーンアップできるようにする必要があります。
SerialPort forget()
これは、HIDDevice インターフェースと USBDevice インターフェースに forget() メソッドが最近追加されたことに続く対応です。
HIDDevice
USBDevice
forget()
overflow-clip-margin CSS プロパティが visual-box をサポートします。これは、オーバーフローをクリップするエッジのソースとしてボックスのエッジを使うことを指定します。有効な値は、content-box、padding-box(デフォルト)、border-box です。overflow-clip-margin プロパティは、要素のコンテンツがクリッピングされずに描画できる範囲を指定します。
overflow-clip-margin
visual-box
content-box
padding-box
border-box
クロスオリジン iframe での Secure Payment Confirmation のクレデンシャル登録にユーザー アクティベーション要件が追加されました。これは、プライバシーの問題への緩和策として実施されています。
このバージョンの Chrome では、以下のサポートの終了と機能の削除が行われます。現在サポートが終了している機能と以前に削除された機能のリストは、ChromeStatus.com をご覧ください。
サンドボックス化された iframe では、外部アプリケーションの起動はブロックされません。現在、デベロッパーは信頼できないコンテンツをサンドボックス化してユーザーのナビゲーションをブロックしています。そのため、外部アプリや Play ストアへのリンクもブロックするべきでした。現在、この点が修正されています。
ナビゲーションが必要なサイトでは、<iframe> 要素のプロパティに次の値を追加できます。
<iframe>
allow-popups
allow-top-navigation
allow-top-navigation-with-user-activation
Battery Status API が安全でないコンテキストでサポートされなくなります。具体的には、HTTP ページと HTTP ページに埋め込まれた HTTPS iframe が対象になります。この機能は、安全でないオリジンで機能を非推奨にするというポリシーに従って削除されます。また、仕様の変更にも従っています。
ウェブ プラットフォームからプラグインが削除され、<param> の使用がかなり少なくなっているため、この要素がウェブ プラットフォームから削除されます。
<param>
昨年の Google I/O において、Google Maps Platform のチームは、Maps JavaScript API の新しい WebGL による機能のプレビュー版を発表しました。クラウドベースのマップのスタイル設定で利用可能なカスタマイズとスタイル設定オプションの一部として、この一連の機能はこれまでにないベクター ベースマップの制御を実現しています。機能の例として、以下のものが挙げられます。なお、機能の詳細についてはデモをご覧ください。
WebGL を利用したマップ機能は、最新のすべてのブラウザでサポートされているネイティブ WebGL API によって実現します。これは、デバイス内の GPU のレンダリング性能を利用可能にするもので、これまで Maps JavaScript API では不可能だったパフォーマンスの高い素晴らしいマップ体験を実現できます。
WebGL を利用したマップ機能をプレビューの段階でお試しいただいたすべてのデベロッパーの皆様に感謝致します。皆様からのフィードバック、バグレポート、テストは、これらの機能のプレビューから今日の一般提供に至る過程において大きな影響を与えました。
WebGL Overlay View を一般提供するにあたり、Google は API を進化させ、内部レンダラに改善を加えました。これには、WebGL 2.0 レンダリング コンテキストを使用するためのベクターマップのアップグレード、コアライブラリの一部としての追加の拡張機能の提供、リアルタイム レンダリングの高速化、新しいグラフィック機能、ビデオメモリ消費の低減などが含まれます。
昨年、これらの機能のプレビュー版をリリースして以来、お客様は以下のようなユースケースを実現されています。
deck.gl と WebGL Overlay View を使用した大規模な地理空間データセットの 2D と 3D ビジュアリゼーションの作成 :
BigQuery から取得した大規模な地理空間データセットの統合を容易にする CARTO Builder などのエンタープライズ グレードのデータ 可視化 ソフトウェア ツールでのマップ作成 :
デジタル分析の実行におけるデジタルツインの利用方法や、実空間での各種シミュレーションの試行 :
これは、WebGL を利用したマップ機能によって実現される充実したユースケースのほんの一部です。これらを含むデモにご興味がある場合は、デモ ギャラリーをご確認ください。
一般提供に向けた変更点の一覧、および WebGL を利用したマップ機能を deck.gl や threejs.org などのオープンソース ライブラリで使用する方法の詳細については、ドキュメントと WebGL の Codelab をご参照ください。
この機会に、先進的な 3D マッピングの世界をぜひお楽しみください。
Google Maps Platform に関する詳しい情報はこちらをご覧ください。ご質問やフィードバックはページ右上の「お問い合わせ」より承っております。
この度、Google Ads API の v10.1 リリースをお知らせします。V10.1 の一部の機能を使うには、クライアント ライブラリとクライアントのコードをアップグレードする必要があります。更新版のクライアント ライブラリとコードサンプルは、来週公開されます。このバージョンには、互換性を破る変更はありません。
V10.1 の主な機能は以下のとおりです。
CampaignService
GoogleAdsService.Search
GoogleAdsService.SearchStream
CampaignGroupService
PENDING
ConversionTrackingSetting.google_ads_conversion_customer
以下のリソースが役立ちます。