Amazon Web Services ブログ

Amplify Flutter の一般提供が開始されました。美しいクロスプラットフォームアプリを構築しましょう

AWS Amplify は、セキュアでスケーラブルなモバイルアプリケーションとウェブアプリケーションを構築するためのツールとサービスのセットです。現在 iOS、Android、JavaScript (ウェブおよび React Native) をサポートしている Amplify は、アマゾン ウェブ サービス (AWS) を活用するアプリケーションを構築するための最も高速で簡単な方法です。

Flutter は、ネイティブにコンパイルされたモバイル、ウェブ、およびデスクトップアプリケーションを単一のコードベースから構築するための Google の UI ツールキットで、最も急速に成長しているモバイルフレームワークの 1 つです。

AWS Amplify と Flutter を一体化する Amplify Flutter は、Flutter エコシステムに投資したものの、今は AWS の力も利用したいといったお客様のために設計されました。

2020 年 8 月、AWS は Amplify Flutter のデベロッパープレビューをローンチし、そのフィードバックを募集したところ、とても嬉しい反応をいただきました。このサービスの数か月におよぶ微調整の後、今日ようやく Amplify Flutter の一般提供を発表したいと思います。

一般提供での新しい Amplify Flutter 機能
一般提供リリースは、追加された次の 3 つの新機能によって、強力な Flutter アプリを簡単に構築できるようにします。

まず、AWS では最近、AWS AppSync によってサポートされる GraphQL API、および Amazon API GatewayAWS Lambda を使用した REST API とハンドラを追加しました。

次に、Amplify DataStore が、オフラインシナリオとオンラインシナリオ用の追加コードを記述することなく、共有データと分散データを活用するためのプログラミングモデルを提供します。これにより、分散されたクロスユーザーデータの使用が、ローカルのみのデータの使用と同じくらい簡単になります。

最後に、認証を実装するための優れた方法であり、Amazon Cognito、および Facebook、Google、Amazon などのその他のソーシャル ID プロバイダーと連動する Hosted UI が追加されています。Hosted UI は、Cognito 用の SDK やソーシャルプロバイダーをアプリケーションに埋め込むことなく、ログイン画面を起動できるようにするカスタマイズ可能な OAuth 2.0 フローです。

Amplify DataStore をより深く掘り下げる
この 2 週間、私は Amplify Flutter を使ってアプリを構築していているのですが、お気に入りの機能は Amplify DataStore です。主な理由は、この機能によってかなりの時間を節約することができたということです。

Amplify は、REST API と GraphQL API での作業に適していますが、モバイルアプリを作成するときは、モバイルデバイスの接続が断続的で、API エンドポイントに接続できないときに何が起こるかについて考えることがよくあります。データをローカルに保存し、クラウドに同期し直すことは非常に複雑になり得ます。Amplify DataStore は、オフラインまたはオンラインのシナリオに対応する永続的なオンデバイスデータストアを提供することによって、この問題を解決します。

アプリを開発し始めたとき、私は DataStore をスタンドアロンのローカルデータベースとして使用しました。しかし、その力は、DataStore をクラウドバックエンドに接続したときに明らかになりました。DataStore は、AWS AppSync API を使用して、ネットワーク接続が使用可能なときにデータを同期します。アプリがオフラインの場合は、DataStore がアプリをローカルに保存しするので、接続が利用可能になるとすぐに使用することができます。

Amplify DataStore は、データのバージョニングを自動で実行し、AppSync を使用してクラウドでの競合の検出と解決を実装します。ツールチェーンによって、私が提供する GraphQL スキーマに基づいた Dart のオブジェクト定義も生成されます。

Amplify DataStore への書き込み
DataStore への書き込みは簡単です。ドキュメントサイトには、ブログサイトからのスキーマを使用する例があり、皆さんが独自に試すことができます。

Post newPost = Post(
    title: 'New Post being saved', rating: 15, status: PostStatus.DRAFT);
await Amplify.DataStore.save(newPost);

Amplify DataStore からの読み込み
DataStore からの読み込みには、所定のモデルタイプのすべてのレコードをクエリできます。

try {
   List<Post> posts = await Amplify.DataStore.query(Post.classType);
 } catch (e) {
   print("Query failed: " + e);
 }

Amplify DataStore との同期
データの同期化を有効にした場合は、クライアント間に異なるバージョンのオブジェクトがあり、複数のクライアントがオブジェクトのコピーを更新している可能性があります。DataStore は、競合の検出と解消戦略を適用することによって、異なるオブジェクトバージョンをコンバージします。デフォルトの解決戦略は Auto Merge と呼ばれるものですが、他にも楽観的並行性制御やカスタム Lambda 関数などの戦略があります。

追加の Amplify Flutter 機能
Amplify Flutter は、3 つの追加の方法での AWS との連携を可能にします。

  • 認証Amplify Flutter は、ユーザーを認証するためのインターフェイスを提供し、サインアップ、サインイン、および多要素認証などのユースケースを可能にします。Amplify Flutter は、舞台裏で他の Amplify カテゴリに必要な認証を提供します。これには、Cognito のユーザープールと ID プールに対するサポートが組み込まれています。
  • ストレージAmplify Flutter は、パブリック、保護対象、またはプライベートのストレージバケットでアプリのユーザーコンテンツを管理するためのインターフェイスを提供します。これは、オブジェクトのアップロード、ダウンロード、および削除などのユースケースを可能にし、Amazon Simple Storage Service (S3) に対する組み込みサポートをデフォルトで提供します。
  • 分析Amplify Flutter は、Amazon Pinpoint で認証済み、または未認証のユーザーの追跡データを収集することを可能にします。イベントを簡単に記録し、必要に応じてカスタムメトリクス、または属性に対するデフォルト機能を拡張できます。

今すぐご利用いただけます
Amplify Flutter は、AWS Amplify がサポートされるすべてのリージョンで一般提供されます。Amplify Flutter の使用には追加の費用はかかりません。お支払いは、アプリケーションによる無料利用枠の上限を超過したバックエンドサービスの使用に対する料金のみとなります。詳細については、料金ページをご確認ください。

使用を開始する方法と詳細については、 Amplify Flutter のドキュメントをご覧ください。ハッピーコーディング!

– Martin