この記事は Developer Programs Engineer の Christopher Arriola による Google Cloud Blog の記事 "Announcing version 6.0 of the Maps and Places SDKs for iOS" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

12 月 1 日(米国時間)、Maps SDK for iOS と Places SDK for iOS の新しいバージョンをリリースいたしました。バージョン 6.0 では、サポート対象の iOS のバージョンが iOS 12 からとなり、Apple M1 マシン上で iOS 14 以降のシミュレータを使用して開発する際に必要なバイナリを含む XCFramework のプレビュー サポートを提供し、デベロッパーの開発速度向上を実現します。また、このバージョンには、デベロッパーの皆様からのリクエストに基づいて、マーカーを地図に追加した際のアニメーション動作に関する新機能も追加しています。


この記事は Developer Programs Engineer の Christopher Arriola による Google Cloud Blog の記事 "Announcing version 6.0 of the Maps and Places SDKs for iOS" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

12 月 1 日(米国時間)、Maps SDK for iOS と Places SDK for iOS の新しいバージョンをリリースいたしました。バージョン 6.0 では、サポート対象の iOS のバージョンが iOS 12 からとなり、Apple M1 マシン上で iOS 14 以降のシミュレータを使用して開発する際に必要なバイナリを含む XCFramework のプレビュー サポートを提供し、デベロッパーの開発速度向上を実現します。また、このバージョンには、デベロッパーの皆様からのリクエストに基づいて、マーカーを地図に追加した際のアニメーション動作に関する新機能も追加しています。

マーカーのフェードイン アニメーション

バージョン 6.0 では、マーカーをマップに追加した際の表示をアニメーション化できるように、kGMSMarkerAnimationFadeIn という新しい GMSMarkerAnimation タイプが導入されました。


サンプルアプリで MarkersViewController をご覧ください

これを使用するには、マーカーをマップに追加する前に、マーカーの appearAnimation プロパティを設定します。
Swift

 let position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.2)

let marker = GMSMarker(position: position)

marker.appearAnimation = .fadeIn


Objective-C

 CLLocationCoordinate2D position = CLLocationCoordinate2DMake(-33.86, 151.2);

GMSMarker *marker = [GMSMarker markerwithPosition:position];

marker.appearAnimation = kGMSMarkerAnimationFadeIn;



XCFramework のサポート

従来、Maps SDK for iOS と Places SDK for iOS は、アプリの開発とリリースに必要なアーキテクチャを含む単一の .framework ファイルとして配布されていました。しかし、Apple M1 マシンを使用する場合、新しいバリアントである arm64 シミュレータに対応させるため、SDK を新しい XCFramework 形式に再パッケージ化する必要がありました。

Apple M1 マシンで以前のバージョンの SDK の使用を試みたことがある方は、以下のエラーに見覚えがあるはずです。

ld: building for iOS Simulator, but linking in object file built for iOS, file '[...]/GoogleMaps/Frameworks/GoogleMaps.framework/GoogleMaps for architecture arm64

Maps SDK for iOS と Places SDK for iOS のバージョン 6.0 のリリースでは、XCFramework のプレビュー サポートを提供し、Apple M1 マシンで発生していた上記のエラーを解消しています。プレビュー サポートの使用方法について詳しくは、Maps と Places のスタートガイドをご覧ください。

Maps SDK と Places SDK の XCFramework バージョンはベータ版のため、これらのバージョンは開発目的でのみ使用し、アプリをリリースする際には .framework バージョンを使用することをおすすめします。今後の SDK では、XCFramework のサポートを一般提供する予定です。

バージョン 6.0 をインストールしサンプルを確認する

CocoaPods や Carthage を使用して Maps SDK for iOSPlaces SDK for iOS のバージョン 6.0 をインストールできるようになりました。SDK の XCFramework プレビュー版をインストールする場合は、[Installing the XCFramework] タブをご覧ください。サポートする iOS バージョンは iOS 12 からとなるため、バージョン 6.0 を使用して開発するには Xcode 12 以降を使用する必要があります。iOS 11 のサポートは現在中止していますが、Maps SDK for iOS と Places SDK for iOS の古いバージョンを指定することで、引き続きご利用いただけます。

Google Maps Platform に関する詳しい情報はこちらをご覧ください。ご質問やフィードバックはページ右上の「お問い合わせ」より承っております。



Posted by 丸山 智康 (Tomoyasu Maruyama) - Developer Relations Team 

この記事は Chrome ソフトウェア エンジニア、Clark Duvall による Chromium Blog の記事 "Partitioning Chrome's Code for Faster Launch Times on Android" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


通常、モバイル デバイスは、ノートパソコンやデスクトップよりもリソースが限られています。モバイル ユーザーが Chrome を高速に使えるようにするには、Chrome のリソース使用の最適化が欠かせません。Android 版の Chrome に機能を追加するにつれて、アプリにパッケージ化される Java コードの量は増え続けています。今回の速さと好奇心の投稿では、Isolated Splits によって Android 版 Chrome のスピードとメモリ使用量をどのように改善したのかについて説明します。この改善により、Android 版 Chrome のメモリ使用量が 5-7% 減少し、起動とページ読み込みの速度もさらに向上しました。 ...
この記事は Chrome ソフトウェア エンジニア、Clark Duvall による Chromium Blog の記事 "Partitioning Chrome's Code for Faster Launch Times on Android" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。


通常、モバイル デバイスは、ノートパソコンやデスクトップよりもリソースが限られています。モバイル ユーザーが Chrome を高速に使えるようにするには、Chrome のリソース使用の最適化が欠かせません。Android 版の Chrome に機能を追加するにつれて、アプリにパッケージ化される Java コードの量は増え続けています。今回の速さと好奇心の投稿では、Isolated Splits によって Android 版 Chrome のスピードとメモリ使用量をどのように改善したのかについて説明します。この改善により、Android 版 Chrome のメモリ使用量が 5-7% 減少し、起動とページ読み込みの速度もさらに向上しました。

問題

Android アプリ(Android 版 Chrome も含む)では、コンパイルされた Java コードが .dex ファイルに格納されます。Android 版 Chrome にはマルチプロセス アーキテクチャが採用されているため、そのユーザー エクスペリエンスが .dex サイズの増加に特に影響されやすくなります。通常、Android の Chrome では、ブラウザ プロセス、GPU プロセス、1 つ以上のレンダラ プロセスという 3 つ以上のプロセスが常に実行されています。Chrome の Java コードの大半はブラウザ プロセスでのみ使われます。しかし、そのコードを読み込むためのパフォーマンスとメモリのコストは、すべてのプロセスが支払うことになります。
 

バンドルと機能モジュール

プロセスを実行するために必要な最小チャンクの Java を読み込むことができれば理想的です。Android App Bundle を使ってコードを機能モジュールに分割することで、それに近づくことができます。機能モジュールを使うと、コードやリソース、アセットを個別の APK に分割し、オンデマンドでもアプリのインストール時でも、ベース APK とともにインストールできます。

ということは、まさに必要としているものが手に入りそうです。つまり、ブラウザ プロセスのコード用機能モジュールを作り、必要なときにそれを読み込むことができるかもしれません。しかし、Android はそのようにして機能モジュールを読み込むわけではありません。デフォルトで、すべてのインストールされている機能モジュールは起動時に読み込まれます。ベース モジュールと 3 つの機能モジュール "a"、"b"、"c" があるアプリなら、Android の Context と、次のような ClassLoader が得られます。





状況によっては、インストールするモジュールを最低限にとどめ、起動時にこれらのモジュールすべてを即座に読み込むという方法が役立つこともあります。たとえば、一部のユーザーしか必要としない大きな機能がある場合、必要のないユーザーはそれをまったくインストールしないようにします。しかし、一般的に使われる機能の場合、実行時に機能をダウンロードしなければならないと、ユーザーは不便を感じる可能性があります。たとえば、動作が遅くなったり、モバイルデータが利用できないときに問題になったりします。理想的な方法は、標準モジュールをすべて事前にインストールしておいて、実際に必要になったときのみ読み込むことです。

解決策は Isolated Splits

数日間 Android ソースコードを探し続けた結果、android:isolatedSplits という属性が見つかりました。これを "true" に設定すると、インストールされた分割 APK が起動時に読み込まれなくなり、明示的な読み込みが必要になります。これこそ、プロセスのリソース使用量を減らすために必要としていたものです。これにより、先ほどの ClassLoader は次のようになります。





Chrome では、レンダラーや GPU プロセスに必要な少量のコードを引き続きベース モジュールに配置し、ブラウザなどの高価な機能のコードは機能モジュールに分割し、必要なときに読み込みます。この方法を使うことで、子プロセスに読み込まれる .dex サイズを 75% 減らし、最大 2.5 MB にすることができました。その結果、起動が速くなり、メモリ使用量も減りました。

このアーキテクチャによって、ブラウザ プロセスの最適化も可能になります。アプリケーションの初期化中にブラウザ プロセスのコードの大部分をバックグラウンド スレッドでプリロードした場合も起動時間を短縮でき、読み込み時間が 7.6% 高速になりました。ブラウザのコードが必要なアクティビティなどのコンポーネントが起動するときには、すでに読み込みが終わっています。機能モジュールへの機能の割り当てを最適化すると、オンデマンドで機能を読み込むことができます。これにより、機能が実際に使われるまで、メモリや読み込みのコストを節約できます。

結果

M89 で Chrome に Isolated Splits が搭載されて以来、数か月にわたる実際のデータが蓄積されており、Android Oreo 以降を実行しているすべての Android ユーザーの Chrome で、メモリ使用量、起動時間、ページ読み込みのスピード、安定性が大きく改善されたことがわかりました。
  • 合計メモリ使用量の中央値が 5.2% 改善
  • レンダラー プロセスのメモリ使用量の中央値が 7.9% 改善
  • GPU プロセスのメモリ使用量の中央値が 7.6% 改善
  • ブラウザ プロセスのメモリ使用量の中央値が 1.2% 改善
  • 起動時間の 95 パーセンタイルが 7.6% 改善
  • ページ読み込みスピードの 95 パーセンタイルが 2.3% 改善
  • ブラウザのクラッシュ率とレンダラーのハング率の両方が大幅に改善
すべての統計情報の出典 : Chrome クライアントから匿名で集計した実データ

Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Theodore Olsauskas-Warren による Chromium Blog の記事 "Simplified Storage Controls" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この記事は Theodore Olsauskas-Warren による Chromium Blog の記事 "Simplified Storage Controls" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Chrome チームでは、ユーザーがウェブのプライバシーについての理解を深め、その管理を改善することができる方法を常に探しています。直近の変更によって、サイトのストレージ設定の管理がわかりやすくなります。

今回(元記事投稿当時より)、この変更を M97 ベータ版にロールアウトし、サイトが格納できるデータ(Cookie など)に関連するプライバシーやセキュリティの設定を再構成します。ユーザーは、個々のサイトが保存したすべてのデータを削除できます。この操作は、[ 設定 ] > [ プライバシーとセキュリティ ] > [ サイトの設定 ] > [ すべてのサイトに保存されている権限とデータを表示 ] を開いて行います。この操作では、chrome://settings/content/all が表示されます。[ 設定 ] > [ プライバシーとセキュリティ ] > [ Cookie と他のサイトのデータ ] > [ すべての Cookie とサイトデータを表示 ] に移動したときに表示される詳細コントロールは、削除する予定です。これは、[ 設定 ] の chrome://settings/siteData からも参照できます。このレベルで詳細を確認する機能はデベロッパーを対象にしたものです。デベロッパーは、今後も DevTools からこの機能にアクセスできます。

旧 : このページは削除予定。ウェブ関連のストレージの管理は、chrome://settings/content/all から行う。


新 : こちらの chrome://settings/content/all で、ユーザーがウェブ関連のストレージを削除できる。


変更点

私たちは、[ 設定 ] での細かい管理を簡素化することで、ユーザーにわかりやすい操作を実現できると考えています。ユーザーが個々の Cookie を削除できる場合、サイトの実装の詳細を意図せずに変更することになり、サイトの動作がおかしくなる可能性があります。これは予測が難しい問題です。さらに能力の高いユーザーが、Cookie の目的を不正に推測して、いくつかのプライバシー保護を侵害するリスクがあります。

この機能を使うのは主にデベロッパーなので、必要な DevTools のツール群と合わせてデベロッパー向けに提供を続けます。デベロッパーは DevTools にアクセスすることで、今後も必要に応じて Cookie ごとやストレージごとのレベルで詳細情報にアクセスできます。

詳細な Cookie の管理は引き続き DevTools で実行可能


Google は Chrome をさらに便利なものにしたいと考えているので、いつものように皆さんのフィードバックをお待ちしています。私たちの次のステップは、すべての詳細な Cookie の管理機能を DevTools で維持しつつ、この機能をページ情報から削除することです。ストレージ管理についてその他の質問やコメントがある方は、こちらからお知らせください。


Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Chromium Blog の記事 "Chrome 97: WebTransport, New Array Static Methods and More" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。

3 桁のバージョン番号に対する準備

来年には、Chrome でバージョン 100 がリリースされます。つまり、Chrome のユーザー エージェント文字列で報告されるバージョン番号の桁が増えます。サイトオーナーが新しい文字列をテストしやすくするために、Chrome 96 では、Chrome のユーザー エージェント文字列として「100」が返されるようにするランタイム フラグが導入されています。chrome://flags/#force-major-version-to-100 と呼ばれるこの新しいフラグは、Chrome 96 以降で利用できます。詳細については、Chrome の User-Agent 文字列のメジャー バージョンを強制的に 100 にするをご覧ください。 

この記事は Chromium Blog の記事 "Chrome 97: WebTransport, New Array Static Methods and More" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

特に記載のない限り、下記の変更は Android、Chrome OS、Linux、macOS、Windows 向けの最新の Chrome ベータ版チャンネル リリースに適用されます。

3 桁のバージョン番号に対する準備

来年には、Chrome でバージョン 100 がリリースされます。つまり、Chrome のユーザー エージェント文字列で報告されるバージョン番号の桁が増えます。サイトオーナーが新しい文字列をテストしやすくするために、Chrome 96 では、Chrome のユーザー エージェント文字列として「100」が返されるようにするランタイム フラグが導入されています。chrome://flags/#force-major-version-to-100 と呼ばれるこの新しいフラグは、Chrome 96 以降で利用できます。詳細については、Chrome の User-Agent 文字列のメジャー バージョンを強制的に 100 にするをご覧ください。 

今回のリリースに追加された機能

details 要素の自動展開

閉じられた details 要素に対する検索やリンクができるようになります。また、こういった非表示の要素は、find-in-pageScrollToTextFragment のタイミング、あるいは要素のフラグメント ナビゲーションが使われたときに、自動的に展開されます。

レスポンス ヘッダーによる専用ワーカーへの Content-Security-Policy の提供

専用ワーカーが Content Security Policy の影響を受けるようになります。これまで、Chrome は、オーナーのドキュメントの Content Security Policy を誤って適用していました。

CSS

font-synthesis プロパティ

font-synthesis CSS プロパティは、フォント ファミリーに斜体、太字、小型英大文字のフェイスがない場合、ユーザー エージェントが斜体、太字、小型英大文字のフォント フェイスを合成できるようにするかどうかをコントロールします。font-synthesis プロパティがない場合、必要なバリエーションのフォント ファミリーがないウェブページで、不自然な形状のフォントになる可能性があります。

transform: perspective(none)

perspective() 関数の引数として、値 'none' がサポートされます。その場合、関数は無限大の引数を渡された場合のように動作します。これにより、perspective() 関数が関係しているアニメーションのエンドポイントの片方が単位行列であるアニメーションが簡単になります(場合によっては、実現可能になります)。

Keyboard API の Feature Policy

Chrome は、Feature Policy の許可リストで新しく keyboard-mapをサポートします。Keyboard.getLayoutMap() を使うと、英語やフランス語など、異なるキーボード レイアウトで押されたキーを特定できます。このメソッドは、iframe 要素では利用できません。また、Keyboard API を利用できなかった一部のウェブアプリ(Excel、Word、PowerPoint)のアーキテクチャで、このメソッドが利用できるようになります。

HTMLScriptElement.supports() メソッド

HTMLScriptElement.supports() メソッドは、script 要素を利用する新機能を統一的な方法で検出します。現在のところ、HTMLScriptElement の type 属性で利用できる種類を簡単に判定する方法はありません。

フォーム送信時の遅い段階での改行正規化

フォーム エントリの改行が Gecko や WebKit と同じように正規化されるようになります。これにより、Gecko と WebKit は改行を遅い段階で正規化するにもかかわらず、Chrome は早い段階で正規化するという、長期にわたって存在していた相互運用性の問題が解決します。Chrome 97 以降では、早い段階での正規化が削除され、遅い段階での正規化がすべてのエンコーディング タイプに拡張されます。

既存の Client Hint 名の標準化

Chrome 97 は、Sec-CH- プレフィックスを付けて Client Hint 名を標準化します。影響を受ける Client Hint は、dprwidthviewport-widthdevice-memoryrttdownlinkect です。Chrome では、以上のヒントの既存バージョンのサポートも継続されます。しかし、ウェブ デベロッパーは、今後のサポートの終了や削除に向けた準備をする必要があります。

WebTransport

WebTransport は、ウェブのセキュリティ モデルの制約を受けるクライアントがリモート サーバーと通信する際に、安全な多重化転送を可能にするプロトコル フレームワークです。

現在、ウェブ アプリケーション デベロッパーがリモート サーバーと双方向通信をする場合、WebSocketsRTCDataChannel という 2 つの API を使うことができます。WebSockets は TCP ベースなので、すべての TCP の欠点(ヘッドオブライン ブロッキング、信頼できないデータ転送の未サポート)を引き継ぐことになり、レイテンシが重要なアプリケーションには適しません。RTCDataChannel は Stream Control Transmission Protocol(SCTP)ベースなので、そのような欠点はありません。しかし、ピアツーピアで使うことを念頭に置いて設計されているので、クライアントサーバー設定で使われることはほとんどありません。WebTransport は、信頼できないデータと信頼できるデータの両方の双方向通信をサポートするクライアントサーバー API で、UDP 的なデータグラムによるキャンセル可能なストリームを利用します。WebTransport の呼び出しは DevTools の [Network] パネルで確認できます。[Type] 列を見ると、このプロトコルが使われていることがわかります。

詳しくは、WebTransport の試験運用をご覧ください。

JavaScript

このバージョンの Chrome には、V8 JavaScript エンジンのバージョン x.x が組み込まれます。具体的には、以下の変更点が含まれます。最新の機能リストをすべて確認したい方は、V8 リリースノートをご覧ください。

Array と TypedArray の findLast() と findLastIndex()

ArrayTypedArrayfindLast() と fileLastIndex() 静的メソッドをサポートします。この 2 つの関数は find() と findIndex() と同じですが、配列の最初からではなく最後から検索します。

サポートの終了と機能の削除

このバージョンの Chrome では、以下のサポートの終了と機能の削除が行われます。現在サポートが終了している機能以前に削除された機能のリストは、ChromeStatus.com をご覧ください。

WebRTC での SDES 鍵交換の削除

2013 年以降、WebRTC の SDES 鍵交換メカニズムは、関連する IETF 標準で使用禁止と宣言されています。IETF は、SDES 仕様を過去のものと宣言しています。近年では、Chrome での使用も大幅に減少しました。そのため、Chrome 97 で削除されます

サードパーティ コンテキストでの WebSQL の削除

サードパーティ コンテキストでの WebSQL が削除されます。Web SQL Database 標準が最初に提案されたのは 2009 年 4 月で、2010 年 11 月に検討が中止されました。Gecko はこの機能を実装しておらず、WebKit では 2019 年に非推奨となりました。W3C は、代替手段として Web StorageIndexed Database を推奨しています。

SDP Plan B の削除

WebRTC でセッションを確立するために使われる Session Description Protocol(SDP)は、Chromium では 2 種類の方言 Unified Plan と Plan B によって実装されています。Plan B はクロスブラウザの互換性がないため、削除されます


Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Kristen Richards による The Firebase Blog の記事 " What’s new at Firebase Summit 2021 "を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

この記事は Kristen Richards による The Firebase Blog の記事 " What’s new at Firebase Summit 2021 "を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。



私たち Firebase チームは、人々が学び、生活を向上させ、行くべき場所に行き、ビジネスを成長させるうえで、デベロッパーの皆さんが重要な役割を果たしていると考えています。私たちが、使いやすく拡張可能な統合ツールを提供しようと懸命になっているのは、そのためです。そうすることによって、たくさんの人々が必要不可欠と感じ、かつ気に入ってもらえるエクスペリエンスを、継続的に皆さんが作成できるようにしたいと考えています。
 
スタートアップ企業からグローバル企業まで、あらゆる規模の企業が作った数百万個のアプリが、毎月 Firebase を積極的に活用しています。皆さんの信頼こそが、私たちが Firebase をさらによいものにしたいと考える動機です。 先日、Firebase Summit がバーチャル イベントとして復活しました。このプラットフォームのアップデートをお披露目できて光栄です。いずれのアップデートも、アプリ開発を加速させ、自信をもってアプリを運営し、簡単にスケールアップを実現するうえで役立ちます。ここでは、それぞれの新機能を詳しく紹介しますので、ぜひお読みください。イベントのウェブサイト (英語) には、Summit で紹介したたくさんのすばらしいコンテンツ(テクニカル セッション、デモ、Pathway など)がありますので、そちらも忘れずにチェックしておきましょう!
 
お時間がない方は、特定のセクションにジャンプできます。お時間のある方は、ぜひ記事全体をお読みください。
 

新しいビルディング ブロックでアプリ開発を加速



自信をもってアプリを運営するために実用的な知見を獲得



強力なエンゲージメント ツールによる容易なスケーリング



新しいビルディング ブロックでアプリ開発を加速

Firebase は効率的に操作できるフルマネージドなインフラストラクチャを提供するので、皆さんは一番重要なことに集中してアプリを開発、運営できます。
 

重要な e コマース機能を短時間で追加する新しい拡張機能

Firebase Extensions は、あらかじめパッケージ化されたコードバンドルにより一般的な開発タスクを自動化する仕組みです。これを使うと、わずかな手順でアプリに機能を追加できます。私たちは、皆さんが信頼するおなじみの企業と連携し、新しい API を学ぶことなくさまざまなサービスを組み込めるようにしています。先日、Stripe の仲間たちが、Run Payments with Stripe (英語) 拡張機能にワンタイム支払い機能と SDK (英語) を追加してくれました。ウォレット、銀行へのリダイレクト、後払い決済など、アプリで 15 種類以上の支払い方法に対応できる新機能もリリースしたばかりです。
 
さらに、アプリに短時間で重要な e コマース機能を追加できる新しい拡張機能も複数発表しました。これらの拡張機能を使うと、ShipEngine で商品の出荷や追跡を行ったり、SendGrid のメールや Twilio の SMS メッセージを使ってショッピング カートを放置しているユーザーに働きかけたり、Elastic による Cloud Firestore 検索を実装したりできます。Google Pay を通じて、1 つのインターフェースで複数のプロバイダからの支払いを受け付けることもできます。複数の国でアプリをリリースする場合、この仕組みは特に便利です。詳しくは、Firebase Extensions のページにアクセスし、早速インストールしてみてください。始めるにあたってアイデアがほしいという方は、17 種類以上の拡張機能を使っている GitHub のサンプルアプリのコードをご覧ください。デプロイされたバージョンは、https://karas-coffee.web.app/ (英語) でご覧いただけます。

私たちのパートナーが Firebase とコラボレーションして作り上げた、これらの新しい拡張機能を活用すると、短時間でアプリに e コマース機能を追加できます
 

Apple プラットフォーム、ゲームエンジン、Flutter のサポート強化

うれしいお知らせです。Firebase が tvOS と macOS に対してベータ版レベルのサポートを提供するようになりました!つまり、お気に入りの Firebase プロダクトを使って Apple TV や Macbook 互換のアプリを開発し、運営することができます。コードベースは 1 つなので、手間を減らしつつ、優れたクロスデバイス エクスペリエンスをユーザーに提供できます。たとえば Crashlytics SDK を追加すれば、致命的なクラッシュを特定したり、Firebase Crashlytics コンソールで Apple デバイスの種類やオペレーティング システムでクラッシュを絞り込んだりできます。


Apple プラットフォームのサポート強化により、スムーズなクロスデバイス エクスペリエンスの提供が可能になります
 
ゲーム デベロッパーの皆さんは、Google の C++ SDK の多くが Apple TV をサポートしたと聞けば喜ぶことでしょう。あの Apple Arcade ゲームを、Firebase を使って開発できるからです。また、その機能をベースに、Cloud Firestore を Unity と C++ に対応させることで、ゲーム フレームワークとゲームエンジンのサポートを強化します。これによって強力な Cloud Firestore をすぐにゲームで利用できるようになり、ゲームのデータをほぼリアルタイムに格納したり同期したりできます。さらに、オフラインをサポートすることも、数千人以上のプレーヤーをサポートするようにゲームをスケールアップすることもできます。


Cloud Firestore が Unity と C++ に対応し、リアルタイム データ同期機能やオフライン サポートを提供します
 
また、Crashlytics の Unity SDK と NDK SDK に多数の大幅な改善を加え、ゲームのコードベースを簡単にデバッグできるようにしました。現在、Crashlytics により、ネイティブ コードでのクラッシュをより広範囲に追跡できるようになっています。Unity ゲームの IL2CPP もサポートされ、C# コードにマッピングできるシンボル化した C++ フレームが増えています。
 
最後に、Flutter のオンライン エディタである Dartpad の最新リリースにより、Flutter (英語) と Firebase を併用することで、お使いのブラウザだけでプラットフォームを超えてユーザーを獲得するアプリを開発できるようになっています。Flutter は Google のオープンソース フレームワークであり、1 つのコードベースから、ネイティブ コンパイルが可能な美しいマルチプラットフォーム アプリを構築できます。これは、Firebase のクロスプラットフォーム バックエンド サービスを自然に補完するものです。また Dartpad が Cloud Firestore と Firebase Authentication をサポートしました。これ以外の Firebase プロダクトも、近日中にサポートする予定です。dartpad.dev を開き、Firebase パッケージをインポートすると、実際に試してみることができます。サンプルアプリもご覧ください。


Flutter のオンライン エディタである Dartpad が、細かい設定なしに Firebase をサポートするようになりました
 

App Check によるアプリのセキュリティ強化

App Check を皆さんに紹介したのは数か月前のことでした。App Check は、バックエンド インフラストラクチャに強力なセキュリティ レイヤーを提供します。これは、着信するトラフィックが正規のデバイスにインストールされたアプリから来ていることを証明し、有効な認証情報を持たないトラフィックをブロックすることで実現しています。今回の 3 つの大きなアップデートによって、App Check で行えることがさらに増えました。
 
1 つ目は、App Check を使って、以前お知らせした Cloud Storage for Firebase、Realtime Database、Cloud Functions for Firebase に加えて、Cloud Firestore へのアクセスを保護できるようになったことです(Firestore Web SDK も近日中にサポートします)。2 つ目は、App Check を任意のカスタム バックエンド リソースで使えるようにするために、カスタム サーバー保護を追加したことです。この機能には、Apigee などの API 管理プラットフォームや、CloudFlare などの CDN とも統合されています。3 つ目は、App Check がサポートする証明書プロバイダの数を追加し、Apple のアプリ証明書プロバイダである App Attest や reCAPTCHA Enterprise をサポートしたことです。早速 App Check にアプリを登録し、Firebase コンソールから保護を適用してみましょう。App Check の詳細については、ドキュメントをご覧ください。

App Check がアプリとユーザーデータを保護します
 

導入予定の Google Play のセーフティ ポリシーについての詳細ドキュメント

各 Firebase プロダクトが収集および共有するデータを明示した詳細ドキュメントを公開しました。これは、Google Play に導入予定のセーフティ ポリシー (英語) に準拠するうえで役立ちます。私たちの目標は、プライバシーと透過性に対する Google の取り組みを土台として、Google Play の新しいデータ セーフティ セクションの準備をいち早く行ってもらえるようにすることです。このセクションは、来年にはアプリのユーザーに公開される予定です。

これらの画像は方向性を示すものであり、変更される場合があります。
 

自信をもってアプリを運営するために実用的な知見を獲得

Firebase を使うと、アプリのパフォーマンスや安定性を監視したり、変更点をテストしたり、問題を解決する方法についての知見を得たりできるので、可能な限り最高のエクスペリエンスを提供できます。
 

Performance Monitoring の新しいリアルタイム アラート

Firebase Performance Monitoring はアプリのパフォーマンスについてのデータを収集して提示してくれるので、アプリで厳密に何が起きているのかや、アプリが遅いとユーザーが感じたタイミングをユーザー視点で把握することができます。しかし、ローカルマシンでどれほど徹底的にアプリをテストしたとしても、ユーザーは異なるデバイス、異なる国、異なるネットワーク スピードでアクセスしているため、アプリに遅延の問題が発生する可能性が残ります。そこで、皆さんに情報を提供し続けることができるように、パフォーマンス アラートという新機能をベータ版としてリリースします。この新しいパフォーマンス アラートは、遅延の問題が発生したときに即座に調査や修正ができるように、アプリの起動時間が一定のしきい値を超えるとメールを送信してくれます。パフォーマンス アラートはコンソールから設定できます。その他のパフォーマンス指標のアラートも、近日中に追加する予定です。

Performance Monitoring の新しいリアルタイム アラートを使うと、アプリの起動時間が遅くなったときに通知を受け取ることができます
 

Crashlytics に ANR(応答しないアプリ)レポートとシグナルを追加

Firebase Crashlytics を使うと、アプリの安定性を完全に把握することができるので、バグによりたくさんのユーザーに影響がでる前に、バグの追跡や優先順位付け、解消を行うことができます。また、Crashlytics で Apple のプラットフォームやゲームのレポートのサポートが強化された結果、Crashlytics が ANR(応答しないアプリ)エラーを報告できるようになりました。私たちの調査によると、ANR は Android のすべての意図しないアプリ終了のほぼ 50% を占めています。つまり、アプリの品質にとって、クラッシュよりも ANR の方が有害である可能性があります。そこで、アプリの安定性の問題を完全に把握できるように、Crashlytics は ANR と影響を受けたスレッドのコンテキスト情報を報告するようになります。そのため、ANR が起きる理由をピンポイントで特定できます。

Crashlytics が応答しないアプリによるエラーを報告するようになったため、アプリの安定性を包括的に把握できます
 
また、Crashlytics の新しいコンセプトであるシグナルも導入しました。このシグナルは、クラッシュを分析してトラブルシューティングに役立ちそうな共通点や特徴を見つけます。今回、早期クラッシュ、新しい問題、繰り返しの問題を表す 3 つのシグナルをリリースしました。早期クラッシュは、ユーザーがアプリを起動してすぐに発生したクラッシュを指します。新しい問題は直近 7 日以内の新しい問題を、繰り返しの問題はユーザーが何度も繰り返し遭遇している問題を指します。シグナルは、Apple と Android の両方のアプリ デベロッパーが利用できます。次にアプリをリリースするときに、ぜひ確認してみてください!

Crashlytics のシグナルは、トラブルシューティングに役立つ可能性があるクラッシュの共通点や特徴を明らかにします
 

強力なエンゲージメント ツールによる容易なスケーリング

Firebase は、エンゲージメントや収益の増加など、皆さんが望むビジネスの成果を実現するために必要な制御や自動化、柔軟性を、アプリの拡大に合わせて提供します。
 

Cloud Messaging と In-App Messaging のキャンペーン管理機能の統合

Firebase Cloud Messaging を使うと、異なるプラットフォームのユーザーを対象に、ターゲットを絞ってカスタマイズしたプッシュ通知を自動で簡単に送信できます。そのため、 積極的にアプリを使っていないユーザーにアプローチできます。Firebase In-App Messaging を使うと、コンテキストに合わせたメッセージを 積極的にアプリを使っているユーザーに送れます。そのため、重要なアプリ内アクションを行ってもらうように促すことができます。この 2 つのプロダクトは、連動してユーザーのエンゲージメントを維持します。今回、コンソールによる操作を再設計し、この 2 つの機能を統合しました。この統合ダッシュボードを使うと、メッセージング キャンペーン全体を包括的に確認できるので、異なるユーザーを対象に洗練されたマルチタッチ キャンペーンを行い、その反応を 1 か所で確認できます。たとえば、Cloud Messaging と In-App Messaging の両方が Google アナリティクスの新しい予測オーディエンスとシームレスに連携するので、離脱しそうなユーザーにクーポンコードを送信してつなぎ止めることができます。新しい統合ダッシュボードを使ってみるには、コンソールを開いて [Preview now] ボタンをクリックしてください。



Cloud Messaging と In-App Messaging の統合ダッシュボードでは、1 か所でキャンペーンの確認と管理が行えます
 

Remote Config コアの改善とパーソナライゼーション機能のベータ版リリース

ユーザーを維持して喜ばせるためのもう 1 つの方法は、ユーザーのニーズや嗜好に合わせてアプリをパーソナライズすることです。Firebase Remote Config を使うと、新しいバージョンをリリースすることなく、アプリの外観や動作を動的に制御して変更できます。今回、パーソナライゼーションと呼ばれる新しい Remote Config の機能がベータ版としてリリースされたことをお知らせします。パーソナライゼーション機能は、皆さんが重視する目標を最大化できるように、機械学習の力を利用して個々のユーザー エクスペリエンスを 自動的に 最適化してくれます。最初にシンプルな設定さえしておけば、それぞれのユーザーの成果が最高になるようなアプリの設定を継続的に見つけて適用してくれるので、皆さんの負担を軽減できます。
 
ジェットパック・ジョイライド、ダン・ザ・マン、そして人気作 Fruit Ninja などのタイトルを手がけているゲームスタジオ Halfbrick は、既にパーソナライゼーションを使って収益を 16% (英語)、アプリストアでの肯定的な評価を 15% アップさせています。別の早期ユーザーである Ahoy Games は、たくさんのゲームでパーソナライゼーションを試し、チームの作業をほとんど、あるいはまったく行うことなく、アプリ内購入を 12~13% 増加 (英語) させています。

Remote Config のパーソナライゼーションは、目標を達成するために機械学習を使ってユーザー エクスペリエンスを最適化します
 
Remote Config のコア機能にも、いくつかの改善を加えました。たとえば、パラメータの編集フローをアップデートしてターゲッティング条件やデフォルト値の変更を簡単にしたことや、データタイプのサポートの追加によってデータの検証を強化し、不適切な値をユーザーに配信してしまうリスクを軽減したことなどです。さらに、変更履歴を刷新し、最後のパラメータの変更がいつどのように行われたのかがはっきりわかるようにしました。これにより、主な指標の変化と相関性があるのはどの設定の変更なのかが理解しやすくなります。Remote Config のコンソールを開くと、これらのアップデートを確認できます。早速パーソナライゼーションをお試しください。

Remote Config のターゲッティングとデータ検証の改善
 

皆さんのアプリ体験をサポートするパートナー

私たちは、アプリの開発から最適化まで、すべての行程をサポートするパートナーです。私たちが目指すのは、アプリ開発を簡単かつ高速にし、皆さんが効率的に成功を収められるようにすることです。ユーザーやビジネスにとって最適なアプリにするため、ぜひ Firebase をご活用ください。今回お知らせした内容についてさらに詳しく知りたい方は、Firebase Summit のテクニカル セッションや Codelab、デモをご覧ください (英語)。2022 年にリリースされる予定の機能を一足先に見てみたい方は、アルファ版プログラムにご参加ください (英語)。


Reviewed by Tamao Imura - Developer Marketing Manager, Google Play

この記事は Pratyush Sinha による Chromium Blog の記事 "Run on OS Login" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

ユーザーは、デバイスにログインするときに、メールやチャット、その他のよく使う生産性向上アプリケーションを自動起動したいと考えています。ログイン時にそのようなアプリを自動起動すれば、デバイスにログインしてから手動でアプリを起動する必要がなくなるので、ユーザー エクスペリエンスを効率化できます。

Windows、Mac、Linux のデバイスでは、スタートアップ時に自動起動するようにネイティブ アプリを設定できます。Run on OS Login(OS ログイン時に実行)機能は、Chrome 91 で導入されました。この機能がリリースされたことで、ユーザーが Windows、Mac、Linux のデバイスにログインしたときに、デスクトップ ウェブアプリを自動起動する設定が可能になっています。 インストール済みのアプリは、自身の自動実行を自動的に有効化することはできません。常にユーザーによる手動操作が必要です。
OS ログイン時にアプリを実行するよう設定するには、Chrome ブラウザを開き、chrome://apps に移動するか、ブックマーク バーの [ アプリ ] アイコン(下の例)をクリックします。

この記事は Pratyush Sinha による Chromium Blog の記事 "Run on OS Login" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

ユーザーは、デバイスにログインするときに、メールやチャット、その他のよく使う生産性向上アプリケーションを自動起動したいと考えています。ログイン時にそのようなアプリを自動起動すれば、デバイスにログインしてから手動でアプリを起動する必要がなくなるので、ユーザー エクスペリエンスを効率化できます。

Windows、Mac、Linux のデバイスでは、スタートアップ時に自動起動するようにネイティブ アプリを設定できます。Run on OS Login(OS ログイン時に実行)機能は、Chrome 91 で導入されました。この機能がリリースされたことで、ユーザーが Windows、Mac、Linux のデバイスにログインしたときに、デスクトップ ウェブアプリを自動起動する設定が可能になっています。 インストール済みのアプリは、自身の自動実行を自動的に有効化することはできません。常にユーザーによる手動操作が必要です。
OS ログイン時にアプリを実行するよう設定するには、Chrome ブラウザを開き、chrome://apps に移動するか、ブックマーク バーの [ アプリ ] アイコン(下の例)をクリックします。


ログイン時にアプリを起動するように設定したい場合は、まずそのアプリを右クリックし、コンテキスト メニューから [ ログイン時にアプリを開く ] を選択します。以上で設定は完了で、次にデバイスにログインするとアプリが自動的に起動します。アプリでこの機能を無効にするには、chrome://apps に移動します。アプリを右クリックしてコンテキスト メニューを表示し、[ ログイン時にアプリを開く ] 項目の選択を解除します。

Run on OS Login で起動するアプリは、デバイスが実行されてから起動します。Run on OS Login はブラウザのみの機能であり、アプリ デベロッパーに起動元に関する情報が開示されることはありません。

Google はウェブ プラットフォームを継続的に改善し、日々のタスクを手間をかけずに安全に行える方法をユーザーに提供します。インストール済みのウェブアプリを OS ログイン時に実行できるようにすることは、コンピュータをオンにしたときにチャット、メール、カレンダーなどのクライアント アプリをすぐに使いたいユーザーにとって、スタートアップ ルーチンを簡素化するための小さいながらも重要な一歩です。いつものように、皆さんのフィードバックをお待ちしています。皆さんからのフィードバックは、私たちが今後のステップに優先順位を付けることに役立ちます。

Reviewed by Eiji Kitamura - Developer Relations Team

この記事は Chrome ブラウザ、プロダクト マネージャー、Yana Yushkina による Chromium Blog の記事 "Searching, browsing, and shutdown Chrome performance improvements" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
この記事は Chrome ブラウザ、プロダクト マネージャー、Yana Yushkina による Chromium Blog の記事 "Searching, browsing, and shutdown Chrome performance improvements" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。

Chrome では、さまざまなプロジェクトを通じて、パフォーマンスを改善するための長期的な取り組みが行われています。今回の速さと好奇心シリーズの投稿では、スピード、メモリ、意図しないハングに関する改善について紹介します。現在、検索の 6 回に 1 回は一瞬で終わり、PartitionAlloc に関する作業によって Chrome OS でのブラウジングで最大 20% のメモリが削減され、Chrome OS と Windows のシャットダウン操作に関する厄介な問題も解消されています。

アドレスバー

Chrome のアドレスバーを使ってウェブを検索すると、文字を入力するのに合わせて検索語句の候補が表示されることに気づくはずです(Chrome の設定で [ 検索語句や URL をオートコンプリートする ] 機能をオンにしている場合)。これにより、検索語句すべてを入力する必要がなくなるので、情報の検索が迅速かつ簡単になります。求めている検索語句が提案されるまでテキストを入力すれば、すぐにそれを選択できます。




Chrome で検索すれば、さらに高速になります。提案された検索語句が選ばれる可能性が高い場合、検索結果がプリフェッチされるようになったからです。つまり、皆さんが検索語句を選択する前にウェブサーバーから結果を取得するので、検索結果が表示されるまでの時間がさらに短縮されます。実際に実験を行ったところ、検索結果が 500 ミリ秒以内に表示される可能性が 4 倍になったことがわかりました。

現在、この処理が行われるのは、Google 検索がデフォルトの検索エンジンになっている場合だけです。しかし、こちらの記事で説明しているように、提案する検索語句をサーバーから Chrome に送信する際に情報を追加することで、他の検索プロバイダもこの機能をトリガーできます。

Chrome OS の PartitionAlloc

Chrome の新しいメモリ アロケータである PartitionAlloc は、M89 で Android と Windows にロールアウトされました。その結果、メモリ使用量を「最大 22% 節約」でき、パフォーマンスについては「応答性が最大 9% 向上」しました。それ以降も、Linux には M92 で、Chrome OS には M93 で PartitionAlloc を導入しました。うれしいことに、Chrome OS の M93 のフィールド データから、合計メモリ フットプリントが 15%、ブラウザ プロセスのメモリが 20% 減少し、単一タブ、複数タブの両方で Chromebook のブラウジング体験が向上したことがわかりました。

シャットダウン時に最も頻繁に発生するハングを解消

パフォーマンスを改善するため、ソフトウェア エンジニアがシステムにキャッシュを追加するのはよくあることです。しかし、キャッシュの副作用として他の問題(コードの複雑化、安定性、メモリ消費、データの整合性)が発生することも多く、逆にパフォーマンスが悪化する可能性すらあります。今回の事例では、起動時間を短縮するため、数年前に Chrome の履歴システムにローカル キャッシュを追加していました。当時の前提は、Chrome の内部メモリに履歴インデックスをキャッシュする方が、起動のたびに履歴のインデックスを再作成するよりも速いというもので、ラボ環境でのテストでもそれが実証されていたようです。

しかし、クラッシュ データと匿名のパフォーマンス指標から実世界でのパフォーマンスを体系的に調査し続けた結果、このキャッシュによってコードが複雑になり、メモリ使用量が不必要に増加しているだけでなく、シャットダウン時にブラウザがハングする問題の一番の要因にもなっていることがわかりました。その原因は、システムの別の場所で他の I/O が起こり続けている間、バックグラウンド優先スレッドの I/O 枯渇状態が延々と続く OS があることです。さらに、フィールド データの解析結果によれば、パフォーマンス面でユーザーが受けるメリットはほとんどありませんでした。現在は、このキャッシュを削除することで、シャットダウン時に最も頻繁に発生していたハングを解消しています。これは、キャッシュは必ずしも正解ではないという原則を示す好例となりました。

今後もさまざまなパフォーマンスの改善についてお知らせしますので、ご期待ください。

すべての統計情報の出典 : Chrome クライアントから匿名で集計した実データ 


Reviewed by Eiji Kitamura - Developer Relations Team