AWS Amplify を使用してサーバーレスの React Native モバイルアプリを構築する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Amplify を使用してサーバーレスの React Native モバイルアプリを構築する

Amazon Web Services、Deekshitulu Pentakota

概要

このパターンでは、AWS Amplify と以下の AWS サービスを使用して React Native モバイルアプリのサーバーレスバックエンドを作成する方法を説明しています。 

  • AWS AppSync

  • Amazon Cognito

  • Amazon DynamoDB

Amplify を使用してアプリケーションのバックエンドを設定してデプロイすると、Amazon Cognito はアプリケーションユーザーを認証し、アプリケーションへのアクセスを許可します。  次に、AWS AppSync はフロントエンドアプリケーションおよびバックエンドの DynamoDB テーブルとやり取りし、データを作成して取得します。

注記

このパターンでは、例としてシンプルな「ToDoList」アプリを使用しますが、同様の手順を使用して、任意の React Native モバイルアプリケーションを作成できます。

前提条件と制限事項

前提条件

  • アクティブな AWS アカウント

  • AWS コマンドラインインターフェイス (AWS CLI) がインストール済みおよび設定済み

  • XCode (任意のバージョン)

  • Microsoft Visual Studio (任意のバージョン、任意のコードエディター、任意のテキストエディター)

  • Amplify Gurify に精通している

  • Amazon Cognito に精通している

  • AWS AppSync に精通している

  • DynamoDB に精通している

  • Node.js に精通している

  • npm に精通している

  • React と React Native に精通している

  • JavaScript と ECMAScript 6 (ES6) に精通している

  • GraphQL に精通している

アーキテクチャ

次の図は、AWS クラウドで React Native モバイルアプリのバックエンドを実行するためのアーキテクチャの例を示しています。

AWS サービスで React Native モバイルアプリを実行するワークフロー。

以下は、アーキテクチャ図を示しています。

  1. Amazon Cognito はアプリユーザーを認証し、アプリへのアクセスを許可します。 

  2. 次に、AWS AppSync はフロントエンドアプリおよびバックエンドの DynamoDB テーブルとやり取りし、データを作成して取得します。

ツール

AWS サービス

  • AWS Amplify は、フロントエンドのウェブおよびモバイルデベロッパーが AWS で迅速かつ簡単にフルスタックアプリケーションを構築できるようにする専用のツールと機能のセットです。

  • AWS AppSync は、Amazon DynamoDB、AWS Lambda、および HTTP API を含む、複数のソースからのデータを組み合わせることで、アプリケーション開発者にとって便利でスケーラブルな GraphQL インターフェイスを提供します。

  • Amazon Cognito は、ウェブおよびモバイルアプリの認証、認可、およびユーザー管理機能を提供します。

  • Amazon DynamoDB は、フルマネージド NoSQL データベースサービスです。高速かつ予測可能でスケーラブルなパフォーマンスを発揮します。

コード

このパターンで使用されているサンプルアプリケーションのコードは、GitHub aws-amplify-react-native-ios-todo-app リポジトリから入手できます。このサンプルファイルを使用するには、このパターンの [エピック] セクションの指示に従ってください。

エピック

タスク説明必要なスキル

React Native 開発環境のセットアップ

手順については、React Native ドキュメントの「開発環境のセットアップ」を参照してください。

アプリ開発者

iOS シミュレーターで ToDoList React Native モバイルアプリを作成して実行します。

  1. 新しいターミナルウィンドウで、次のコマンドを実行し、ローカル環境に新しい React Native モバイルアプリプロジェクトディレクトリを作成します。

    npx react-native init ToDoListAmplify

  2. 以下のコマンドを実行し、プロジェクトのルートディレクトリに移動します。

    cd ToDoListAmplify

  3. 次のコマンドを実行して、アプリを実行します。

    npx react-native run-ios

アプリ開発者
タスク説明必要なスキル

AAmplify でアプリをサポートするために必要なバックエンドサービスを作成します。

  1. ローカル環境で、プロジェクトのルートディレクトリ (ToDoListAmplify) から次のコマンドを実行します。

    amplify init

  2. アプリに関する情報の入力を求めるプロンプトが表示されます。ユースケースに基づいて必要な情報を入力します。次に、<Enter> キーを押します。

このパターンで使用する TodoList アプリの設定には、以下の設定例を適用してください。

React Native Amplify アプリの構成設定の例

? Name: ToDoListAmplify ? Environment: dev ? Default editor: Visual Studio Code ? App type: javascript ? Javascript framework: react-native ? Source Directory Path: src ? Distribution Directory Path: / ? Build Command: npm run-script build ? Start Command: npm run-script start ? Select the authentication method you want to use: AWS profile ? Please choose the profile you want to use: default

詳細については、Amplify Dev Center ドキュメントの「新しい Amplify バックエンドの作成」を参照してください。

注記

amplify init コマンドは、AWS CloudFormation を使用して以下のリソースをプロビジョニングします。 

  • 認証されたユーザーと認証されていないユーザーの AWS Identity and Access Management (IAM) ロール (認証ロール認証解除ロール)

  • デプロイ用の Amazon Simple Storage Service (Amazon S3) バケット (このパターンのサンプルアプリケーション Amplify Meta.json)

  • AAmplify ホスティングのバックエンド環境

アプリ開発者
タスク説明必要なスキル

Amazon Cognito 認証サービスを作成します。

  1. ローカル環境で、プロジェクトのルートディレクトリ (ToDoListAmplify) から次のコマンドを実行します。

    amplify add auth

  2. 認証サービスの構成設定に関する情報を求めるプロンプトが表示されます。ユースケースに基づいて必要な情報を入力します。次に、<Enter> キーを押します。

このパターンで使用する TodoList アプリの設定には、以下の設定例を適用してください。

認証サービスの設定例

? Do you want to use the default authentication and security configuration? \ Default configuration ? How do you want users to be able to sign in? \ Username ? Do you want to configure advanced settings? \ No, I am done
注記

amplify add auth コマンドは、プロジェクトのルートディレクトリ内のローカルフォルダ (amplify) に、必要なフォルダ、ファイル、依存関係ファイルを作成します。このパターンで使用する TodoList アプリの設定では、この目的で aws-exports.js が作成されます。

アプリ開発者

Amazon Cognito サービスを AWS クラウドにデプロイします。

  1. プロジェクトのルートディレクトリから、次の Amplify CLI コマンドを実行します。

    amplify push

  2. デプロイを確認するプロンプトが表示されます。Yes と入力します。次に、Enter キーを押します。

注記

プロジェクトにデプロイされたサービスを確認するには、以下のコマンドを実行して Amplify コンソールに移動します。

amplify console

アプリ開発者

React Native に必要な Amplify ライブラリをインストールし、iOS には CocoaPods 依存関係をインストールします。

  1. プロジェクトのルートディレクトリから、次のコマンドを実行して、必要な Amplify オープンソースのクライアントライブラリをインストールします。 

    npm install aws-amplify aws-amplify-react-native \ amazon-cognito-identity-js @react-native-community/netinfo \ @react-native-async-storage/async-storage

  2. iOS に必要な CocoaPods 従属関係をインストールするには、次のコマンドを実行します。

    npx pod-install

アプリ開発者

Amplify サービスをインポートして設定します。

アプリのエントリポイントファイル (App.js など) で、次のコード行を入力することで、Amplify サービスの設定ファイルをインポートして読み込みます。

import Amplify from 'aws-amplify' import config from './src/aws-exports' Amplify.configure(config)
注記

Amplify サービスをアプリのエントリポイントファイルにインポートした後にエラーが発生した場合は、アプリを停止してください。次に、XCode を開き、プロジェクトの iOS フォルダーから TodoListAmplify.xcWorkspace を選択して、アプリを実行します。

アプリ開発者

WithAuthenticator 高次コンポーネント (HOC) を使用するようにアプリのエントリポイントファイルを更新します。

注記

withAuthenticator HOC は、わずか数行のコードを使用して、サインイン、サインアップ、パスワードを忘れた場合のワークフローをアプリ内で実現します。詳細については、Amplify Dev Center で「オプション 1: ビルド済み UI コンポーネントを使用する」を参照してください。また、React ドキュメントの 高次コンポーネント についても説明します。

  1. アプリのエントリポイントファイル (例: App.js) で、次のコード行を入力して withAuthenticator HOC をインポートして読み込みます。

    import { withAuthenticator } from 'aws-amplify-react-native'

  2. 次のコードを入力して、WithAuthenticator HOC をエクスポートします。 

    export default withAuthenticator(App)

WithAuthenticator HOC コード例

import Amplify from 'aws-amplify' import config from './src/aws-exports' Amplify.configure(config) import { withAuthenticator } from 'aws-amplify-react-native'; const App = () => { return null; }; export default withAuthenticator(App);
注記

iOS シミュレーターでは、アプリには Amazon Cognito サービスが提供するログイン画面が表示されます。

アプリ開発者

認証サービスの設定をテストします。

iOS シミュレータで、以下の操作を行います。

  1. 実際のメールアドレスを使用して、アプリ内で新規アカウントを作成します。次に、登録したメールアドレスに確認コードが送信されます。

  2. 確認メールで受信したコードを使用して、アカウントの設定を確認します。

  3. 作成したユーザー名とパスワードを入力します。次に、[サインイン] を選択します。[ようこそ] 画面が表示されます。 

注記

Amazon Cognito コンソールを開いて、アイデンティティプールに新しいユーザーが作成されたかどうかを確認することもできます。

アプリ開発者
タスク説明必要なスキル

AWS AppSync API と DynamoDB データベースを作成します。

  1. AWS AppSync API をアプリケーションに追加し、プロジェクトのルートディレクトリから次の Amplify CLI コマンドを実行して DynamoDB データベースを自動的にプロビジョニングします。

    amplify add api

  2. API およびデータベースの構成設定に関する情報を入力するよう求めるプロンプトが表示されます。ユースケースに基づいて必要な情報を入力します。次に、<Enter> キーを押します。Amplify CLI は、テキストエディタで GraphQL スキーマファイルを開きます。 

このパターンで使用する TodoList アプリの設定には、以下の設定例を適用してください。

API とデータベースの設定例

? Please select from one of the below mentioned services: \ GraphQL ? Provide API name: todolistamplify ? Choose the default authorization type for the API \ Amazon Cognito User Pool Do you want to use the default authentication and security configuration ? Default configuration How do you want users to be able to sign in? \ Username Do you want to configure advanced settings? \ No, I am done. ? Do you want to configure advanced settings for the GraphQL API \ No, I am done. ? Do you have an annotated GraphQL schema? \ No ? Choose a schema template: \ Single object with fields (e.g., "Todo" with ID, name, description) ? Do you want to edit the schema now? \ Yes

GraphQL スキーマの例

type Todo @model { id: ID! name: String! description: String }
アプリ開発者

AWS AppSync API をデプロイします。 

  1. プロジェクトのルートディレクトリで、次の Amplify CLI コマンドを実行します。

    amplify push

  2. API およびデータベースの構成設定に関する情報を入力するよう求めるプロンプトが表示されます。ユースケースに基づいて必要な情報を入力します。次に、<Enter> キーを押します。これで、アプリケーションが AWS AppSync API とやり取りできるようになりました。 

このパターンで使用する TodoList アプリの設定には、以下の設定例を適用してください。

AWS AppSync API の設定例

注記

次の設定では、AWS AppSync に GraphQL API を作成し、Dynamo DB に Todo テーブルを作成します。

? Are you sure you want to continue? Yes ? Do you want to generate code for your newly created GraphQL API Yes ? Choose the code generation language target javascript ? Enter the file name pattern of graphql queries, mutations and subscriptions src/graphql/**/*.js ? Do you want to generate/update all possible GraphQL operations - \ queries, mutations and subscriptions Yes ? Enter maximum statement depth \ [increase from default if your schema is deeply nested] 2
アプリ開発者

アプリのフロントエンドを AWS AppSync API に接続します。

このパターンで提供されているサンプル TodoList アプリケーションを使用するには、aws-amplify-react-native-ios-todo-app GitHub リポジトリの App.js ファイルからコードをコピーします。次に、サンプルコードをローカル環境に統合します。

リポジトリの App.js ファイルにあるサンプルコードは以下の処理を行います。

  • [タイトル] フィールドと [説明] フィールドを含む [ToDo 項目] を作成するためのフォームを表示します。

  • To Do 項目 ([タイトル] と [説明]) のリストを表示します。

  • aws-amplify メソッドを使用してデータを投稿して取得します。

アプリ開発者

関連リソース