firebase 2023年4月のリリースまとめ firestoreのOR/IN句の拡張・認証にTOTPの追加など

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[@mogmet](https://twitter.com/mogmet)です。

最近韓国にいってきました。LINEフレンズよりもカカオフレンズのほうが人気があるようでした。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/7924ea1d-897d-abab-1212-b68eabcd6062.jpeg)


本日は2023/4のリリースノートをまとめました。

https://www.youtube.com/watch?v=3o4vRTw5Ti4

それでは早速見てみましょう！

## firestore
### OR/INクエリーの拡張
ORとIN句がflutter sdkでも使えるようになりました。

```dart
var q = db.collection("76012251").where(
  Filter.or(
    Filter("public", isEqualTo: true),
    Filter.and(
      Filter("author", isEqualTo: user.uid),
      Filter("public", isEqualTo: false)
    )
  )
);
```

OR句に関しては下記を参照。

https://cloud.google.com/firestore/docs/query-data/queries?hl=ja#or_queries


さらにIN句に使える条件の数制限が10→ **30**に引き上げになりました。


### 大規模なリアルタイム クエリを理解する記事の作成

下記記事を作りました。

https://firebase.google.com/docs/firestore/real-time_queries_at_scale?hl=ja

### region endpointの構成

コードでリージョンエンドポイントを構成できるようになりました。

```java
FirestoreOptions firestoreOptions =
    FirestoreOptions.newBuilder()
        .setProjectId(projectId)
        .setCredentials(GoogleCredentials.getApplicationDefault())
        // set endpoint like nam5-firestore.googleapis.com:443
        .setHost(endpoint)
        .build();
Firestore dbWithEndpoint = firestoreOptions.getService();
```

https://cloud.google.com/firestore/docs/regional-endpoints?hl=ja

## Realtime Database

### CLIにdatabase:importコマンドを追加

JSONファイルをdatabase:importコマンドをつかって書き込めるようになりました。
既存のimportツールと同様に動くが、遥かに大きなファイルを処理できます。

https://github.com/firebase/firebase-tools/pull/5396

## Authentication
### 電話番号認証の拡張

Androidで電話番号認証をしている際に6月末までにセーフティネットが廃止されることになったが、Play Integrityを構成証明プロバイダーとして使用してアプリが変更されてないことを確認できるようになりました。
Firebase Android BoMを31.4.0にアップデートすることで機能します。

※Play Integrityを使うにはPlayのSHA-256署名キーをFirebaseコンソールに入力しておく必要があります。
※Firebaseのデータ開示において、[Playストアでのアプリのプライバシーの詳細が正確かつ完全であること](https://firebase.google.com/docs/android/play-data-disclosure?hl=ja#authentication)を確認しておいてください

### 多要素認証にTime-based One-Time Password （TOTP）を追加

ワンタイムコードを発行して認証する多要素認証（MFA）を追加しました。

![CleanShot 2023-04-27 at 08.02.59@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/42cbf90d-5768-9561-1908-48baee51171b.png)

傍受ができないためTOTPの方がSMSベースのMFAよりも安全です。

プロジェクト レベルでMFAの2つ目の要素としてTOTPを有効にするには、次のコマンドを実行します。

```js
import { getAuth } from 'firebase-admin/auth';

getAuth().projectConfigManager().updateProjectConfig(
{
      multiFactorConfig: {
          providerConfigs: [{
              state: "ENABLED",
              totpProviderConfig: {
                  adjacentIntervals: {
                      NUM_ADJ_INTERVALS
                  },
              }
          }]
      }
})
```

REST APIを使用してTOTP MFAを有効にするには、次のコマンドを実行します。

```shell
curl -X PATCH "https://identitytoolkit.googleapis.com/admin/v2/projects/PROJECT_ID/config?updateMask=mfa" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -d \
    '{
        "multiFactorConfig": {
          "providerConfigs": {
            "state": "ENABLED",
            "totpProviderConfig": {
              "adjacentIntervals": "NUM_ADJ_INTERVALS"
            }
          }
       }
    }'
```

https://cloud.google.com/identity-platform/docs/admin/enabling-totp-mfa?hl=ja


## App Distribution

### テスターグループの拡張

初期リリースをテスターに送信するときにプロジェクト、または、Firebaseコンソールのグループでテスターを検索できるようになりました。

![CleanShot 2023-04-27 at 08.01.03@2x.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/feee7f10-600f-d8bd-f578-ffa82f837b9c.png)

また、ユーザが存在しない場合は直接Testerを追加できます。

## Google I/O 2023

2023/5/10にGoogle I/Oを実施します！

https://io.google/2023/intl/ja/


## まとめ

まとめると、

- firestoreのIN/OR句を拡張（IN制限の数も30個に引き上げ）
- 電話番号認証の最新対応
- MFAにTOTPの追加
- Realtime DatabaseのCLIにdatabase:importコマンドを追加
- App Distributionのテスター管理の拡張
- Google I/O 2023の開催

になります。

もぐめっと的にはIN/OR句の拡張がとても大きいリリースでした！
より検索機能が使いやすくなってきているので幅が広がっているのを感じます。



最後に、スノボの楽しく滑るコツを掴める [cotsume](https://cotsume.page.link/blog) というアプリを作ってます！よかったらDLしてみてね！

https://cotsume.page.link/blog

また、[ワンナイト人狼オンライン](https://online.1nite-jinro.com/link/blog)というゲームを作ってます！よかったら遊んでね！

https://online.1nite-jinro.com/link/blog

他にも[Camecon](https://camecon.me/)や[Offcha](https://offcha.com/)、問い合わせ対応が簡単にできる[CSmart](https://csmart.jp/lp)、フリーランスのコミュニティの[NextFreelance](https://next-freelance.net/)といったサービスも作ってるのでよかったら使ってね！

https://camecon.me/

https://offcha.com/

https://csmart.jp/lp

https://next-freelance.net/

また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。

https://virapture.com/

ラグナロクでもエンジニアやデザイナーのメンバーを募集しています！！楽しくぶち上げたい人はぜひお話ししましょう！！

https://ragna-rock.com