【課題4】AWSAmplifyを使用してTodoアプリを開発


作成したアプリについて

AWSAmplifyを用いて、TypeScript + Reduxの構成でTodoアプリを作りました。

基本的に、こちらのチュートリアルに沿って進めていきます。

AWSの概要

AWSとは、クラウドコンピューティングを使ったサービスです。
また、AWSとはAmazon Web Servicesの略で、Amazonが提供している100以上のクラウドコンピューティングサービスの総称になります。

クラウドコンピューティングとは、インターネットを介してサーバー・ストレージ・データベース・ソフトウェアといったコンピュータを使った様々なサービスを利用することを指します。

クラウドコンピューティングでは、手元に1台のPCとインターネットに接続できる環境さえあれば、サーバーや大容量のストレージ、高速なデータベースなどを必要な分だけ利用できるわけです。

AWSを利用し実現できること

ビジネスのスピードを加速させる。

  1. 豊富なサービス
  2. 世界最上級の運用専門知識
  3. 最もセキュアなセキュリティ基準
  4. 安心できる情報網(コミュニティやパートナーの存在)
  5. まったく新しいテクノロジーを最速で提供し続けるサービスコンセプト

コスト削減や俊敏性を高めビジネスの効率化、ビジネススピードを加速化しイノベーションの加速を実現。

AWSでできること

サービス系

  • サーバー環境構築(EC2)
  • データ保存(S3)
  • コンテンツ配信(S3)
  • データベース利用(RDS)
  • 専用回線(AWS Direct Connect)
  • セキュリティ対策(Amazon Inspector)

プラットフォーム系

  • AI活用/データ分析(Amazon Personalize)
  • ワークフロー管理(Amazon Simple Workflow)
  • メール/通知(AWS SES)
  • 開発(AWS CodeStar)

代表的な4サービス

サーバー環境構築

  • Amazon EC2

データ保存/コンテンツ配信

  • Amazon S3

データベース利用

  • Amazon RDS

プログラムの実行環境

  • AWS Lambda

AWSAmplifyの概要

AWS Amplifyとは、クラウドサービス上におけるモバイルアプリケーションやWebアプリケーションを安全に構築するためのプラットフォームになります。「クラウドサービス上にモバイルアプリケーションを安全に構築するための方法」ということです。

AWS Amplifyの使い方

AWS Amplifyの使い方としては、AWSの各種サービスを使ったアプリケーションをスピーディーで効率よく作成したり、サーバレスバックエンドの自動構築をしたり、フロントエンドからバックエンドを利用するためのコードの生成などです。

モバイルアプリケーションを構築したい人や、アプリケーション実装に集中したい人にAWS Amplifyは、非常に適正があります。

AWS Amplifyの6つの特徴

  • Analytics
  • API
  • Auth
  • Pub/Sub
  • Storage
  • XR

自身が今回の課題をこなす上で苦労した点

  • チュートリアルの選択肢の選定
  • もともとのコードをReduxやTypeScriptに置き換えてアレンジする

苦労した点をどのように克服したか

1つ目は、チュートリアルの選択肢についてですが、今回はTypeScriptReduxの構成に変更しての実装だったので、もともとのチュートリアルの構成とは選択する項目が若干変わってきます。

そのせいもあって、一度最後まで進めたのですが、どこかで選択ミスがあったようでエラーに見舞われ、最初からやりなおす羽目に。。
なので2回目は、慎重に英文を翻訳し、選択肢が違う箇所については、しっかりとネットで検索しつつ、状況を照らし合わせながら進みました。

おかげで、2回目は最初に見舞われたエラーは現れず、無事チュートリアルを終えることが出来ました。

英語、日本語ともに、ドキュメントを「読んだつもり」になることが多々あります。
わからないところは「なぁなぁ」にせず、しっかり理解しながらすすめる癖を付けたいです。(エラー解決にもつながるはず)

2つ目のアレンジですが、作業取り掛かりの段階で「うーん」と頭を悩ませました。

「何をアレンジしようか」というところからのスタートなのですが、今までやったことを応用することを考え、react-hook-formや、ReduxでのStateの管理を使って、既存のコードを置き換えてみることにしました。

やはり作業始めたての頃は、やることがたくさんあって「どこから手を付けようか」と、下手したらあれこれ触っちゃって”わけがわからない”という状況になることもあります。

きちんと一つずつ整理して、順番にすすめていくことで、ごちゃごちゃにならずに実装出来るようになります。

Githubissueを使ったり、console.log()Redux Dev Toolsでの細かい確認が、確実で早くゴールにたどり着くコツでもあります。
特にissueを使う方法は、言語化することで頭がスッキリするのか、進むべき道が見えやすくなる気がします。

参考サイト

まとめ

Amplifyのチュートリアル通りにすすめるだけで、サインインなどの認証機能や、Todoアプリをあれほど簡単に作れるのは驚きです。

また、今回は既存のコードをアレンジすることで、ReduxTypeScriptの理解もより深まりましたし、もともとのコードを応用して使う力、考える力がついたように思います。

更に、いくつかのエラーと向き合う中で、

  • エラー文を理解する
  • 何がおかしいのか仮説を立てる
  • 仮説をもとに検証する

というステップの踏み方も体験することが出来ました。

エラーとの遭遇がやはり一番怖いといっても過言ではないので、今後もしっかりエラーを理解する癖を付けていこうと思います。