FlutterのバックエンドにAWSを用いる方法

投稿者: | 2024年6月9日

FlutterはGoogleが開発しているものなので、バックエンドにはGCPやFirebaseを利用することが多い。しかし案件によってはAWSを利用しなくてはならないケースもある。

そういったときにFirebaseならストレートフォワードに実装でき、需要も多いサービスがプッシュ通知、リアルタイムデータベース、およびAIサービスである。

Flutterを使用するアプリケーションのバックエンドとしてAWSを使用してこれらの機能を実装するためにいくつかのAWSサービスを統合する必要がある。以下に考慮すべきフレームワークとサービスを示す。

プッシュ通知

  1. Amazon SNS (Simple Notification Service):
  • Amazon SNSは、モバイルデバイス、電子メールなどに通知を送信できる完全管理サービスである。
  • iOS、Androidなどのプラットフォームにプッシュ通知をサポートしている。
  • Flutterでは、flutter_aws_snsプラグインを使用するか、AWS SDK for Dartを直接使用して通知を設定および送信する。

リアルタイムデータベース

  1. Amazon DynamoDB:
  • DynamoDBは、任意のスケールに対応する高速で柔軟なNoSQLデータベースサービスである。
  • Flutterでは、aws_dynamodb_apiパッケージを使用してDynamoDBと連携できる。
  • リアルタイム更新のために、DynamoDB StreamsとAWS Lambdaを使用してアプリに変更をプッシュできる。
  1. AWS AppSync:
  • AWS AppSyncは、リアルタイムデータ同期を提供するサーバーレスGraphQLサービスである。
  • データストレージとしてDynamoDBと統合でき、リアルタイム通信にはWebSocketを使用する。
  • graphql_flutterパッケージを使用して、FlutterアプリケーションからAppSyncと統合することができる。

AIサービス

  1. Amazon Rekognition:
  • Rekognitionは画像およびビデオ解析を提供するサービスである。
  • オブジェクト検出や顔認識などのタスクに使用できる。
  • FlutterアプリからRekognitionサービスを呼び出すために、aws_rekognition_apiパッケージを使用できる。
  1. Amazon Polly:
  • Pollyはテキストを自然な音声に変換するテキスト読み上げサービスである。
  • aws_polly_apiパッケージを使用して、FlutterアプリにPollyを統合できる。
  1. Amazon Lex:
  • Lexは音声およびテキストを使用した会話型インターフェイスを構築するサービスである。
  • AWS Lambdaや他のサービスと統合してチャットボットを作成できる。
  • aws_lex_runtime_apiパッケージを使用して、FlutterアプリからLexと連携できる。
  1. Amazon Comprehend:
  • Comprehendは機械学習を使用してテキスト内の洞察や関係を見つける自然言語処理(NLP)サービスである。
  • FlutterアプリケーションでComprehendサービスを利用するために、aws_comprehend_apiパッケージを使用できる。

AWS Amplify

  • AWS Amplify:
    • AWS Amplifyは、フロントエンドのWebおよびモバイル開発者がスケーラブルなフルスタックアプリケーションを構築するのに役立つツールおよびサービスのセットである。
    • Cognito(認証)、AppSync(GraphQL API)、S3(ストレージ)などのAWSサービスとの統合をサポートしているである。
    • AmplifyはFlutterサポートを提供しており、amplify_flutterパッケージを通じて統合プロセスを簡素化するである。

実装例

FlutterアプリケーションにAWS Amplifyを統合するための一般的な手順は次の通りである:

  1. AWS Amplifyの設定:
  • Amplify CLIをインストールする: npm install -g @aws-amplify/cli
  • プロジェクトでAmplifyを初期化する: amplify init
  • 必要なカテゴリを追加する(例: API、認証、ストレージ): amplify add api, amplify add auth
  1. AmplifyをFlutterに追加する:
  • pubspec.yamlに依存関係を追加する:

    “`
    dependencies:
    amplify_flutter: ^0.3.0
    amplify_auth_cognito: ^0.3.0
    amplify_storage_s3: ^0.3.0
    amplify_api: ^0.3.0
    “`

  • FlutterアプリでAmplifyを設定する:

    “`
    import 'package:amplify_flutter/amplify.dart';
    import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
    import 'package:amplify_storage_s3/amplify_storage_s3.dart';
    import 'package:amplify_api/amplify_api.dart';

    void main() async {
    // Amplifyを初期化する
    await Amplify.addPlugins([
    AmplifyAuthCognito(),
    AmplifyStorageS3(),
    AmplifyAPI(),
    ]);
    await Amplify.configure(amplifyconfig);

    runApp(MyApp());
    }

    “`

この設定により、Flutterアプリケーション内でさまざまなAWSサービスを活用でき、堅牢でスケーラブルなバックエンドインフラを提供できる。

注意事項

Push通知に関しては、AWSのAmazon SNSを利用すると言ってもFirebaseを利用する必要がある。またiOSにおいて、FirebaseのPush通知はAppleのApple Push Notification Serviceを利用するが、AWSも同じである。

つまりPush通知に関してはAndroidの方はFirebase、iOSの方はAppleの枠組みを利用するので、少し迂遠である。

コメントを残す