2020年のAmplify進化の軌跡

こんにちは！
本エントリは「[AWS Amplify Advent Calendar 2020](https://qiita.com/advent-calendar/2020/amplify)」の初日です。
カレンダー初っ端を飾る特別な日なので、AWS Amplifyって何が出来るのか、どんなプロダクトなのか、また初学者にとってどうやって勉強すれば良いのか、また最新情報のキャッチアップはどうすればいいのか、というのを深掘っていきたいと思います。

### AWS Amplifyってなんなの？
これは今年のAWS Summit Onlineの [kimyan_udon2](https://twitter.com/kimyan_udon2) さんの発表（内容は[こちら](https://resources.awscloud.com/aws-summit-online-japan-2020-on-demand-aws-sessions-3-44912/aws-09-aws-summit-online-2020-720p)）がとてもイカしていたので、それを観てもらうととてもわかり易いです！

「Amplify」という言葉には複数の意味があります。
単純に「Amplify良いですよね！」とか言うと「うんうん、良いよね！**でもAmplifのどれの話！？**」となりがちです。
なのでポイントを簡単に紹介するのでここだけでも覚えて帰って下さいね。

### Amplifyは4つの機能から構成される
以下画像の通り、Amplifyは「Amplifyライブラリ」、「UIコンポーネント」、「Amplify CLI」、「Amplify Console」の4つあります。
スライドには書いていませんが、スライドの中の上3つ「ライブラリ、UIコンポーネント、CLI」をまとめて**「Amplify Framework」**と呼んだりもします。こちらはOSSになっておりソースコードが公開されています（リンクは後述）
またAmplify ConsoleはCI/CDワークフローの管理やホスティング機能をもったAWSのサービスです。
![スクリーンショット 2020-11-24 8.36.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155341/dbaea3db-613c-a245-1b48-e40a371d5e79.png)

### 最新情報のキャッチアップ方法
##### Amplify Framework Docsを読み込む
基本的な話ですが、やはり公式ドキュメントを読むのが一番です！
https://docs.amplify.aws/

##### 日本語まとめを見る
日本語で書かれているAWS Amplifyのツール、チュートリアル、記事などのリンク集です。
初学者の方はこちらから入るとわかりやすいかもしれません。
https://github.com/watilde/awesome-aws-amplify-ja

##### GitHubのコミット履歴からアップデート内容を確認する
[amplify-cli](https://github.com/aws-amplify/amplify-cli/commits/master)を中心に以下のリポジトリも定期的に確認いただけると良いと思います！
* [amplify-flutter](https://github.com/aws-amplify/amplify-flutter/commits/master)
* [amplify-ios](https://github.com/aws-amplify/amplify-ios/commits/main)
* [amplify-android](https://github.com/aws-amplify/amplify-android/commits/main)
* [amplify-js](https://github.com/aws-amplify/amplify-js/commits/main)

javascriptとiOS、Androidはmasterブランチではなく、mainブランチがデフォルトブランチになっているのも興味深いですね。
cliやflutterも今後はデフォルトブランチが変更される可能性があるので、上記リンクだけでなく全体をgit cloneして今後マージされそうなブランチを眺めてみるのも面白いと思います！

#### Slackで気軽に質問をする
[Amplify Meetup #02](https://aws-amplify-jp.connpass.com/event/193194/)で発表しました、[Amplify Japan User Group](https://join.slack.com/t/aws-amplify-jp/shared_invite/zt-j960fgev-77L_1RHo~sxMz03X4CyHVw)から登録いただいてコミュニティーメンバーに気軽に質問をしてみてください！

##### Amplifyイベントに参加する
(おおよそ)2ヶ月に一度、Amplifyイベントを実施しています！
ついに今年からAmplify Meetupを初開催し、たくさんのお客様に視聴いただきました！

以下に今年実施したイベントをまとめておきます。
* 11月
    * [Amplify Meetup #02](https://aws-amplify-jp.connpass.com/event/193194/)
* 10月
    * [Amplify Hands-on](https://aws-amplify-jp.connpass.com/event/190938/)
* 7月
    * [Amplify Meetup #01](https://aws-amplify-jp.connpass.com/event/182471/)

### 2020年のアップデート
以下に今年の大きなアップデートをまとめてみました。
- - -
* 3月
    * [Amplify Console adds command line interface for configuring continuous deployment and hosting](https://aws.amazon.com/about-aws/whats-new/2020/03/amplify-console-adds-command-line-interface-for-configuring-continuous-deployment-and-hosting/)
* 4月
    - [Amplify CLI が追加の Lambda ランタイム (Java、Go、.NET、Python) と Lambda Cron ジョブのサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/04/amplify-cli-adds-support-for-additional-lambda-runtimes-and-cron-jobs/)
    - [Amplify Framework が新しく再設計された UI コンポーネントとモジュール式 JavaScript ライブラリを発表](https://aws.amazon.com/jp/about-aws/whats-new/2020/04/amplify-framework-announces-new-ui-component-library-and-modularized-javascript-library/)
* 5月
    * [新しい認証、データ、AI/ML サポートを備えた Amplify iOS と Amplify Android の一般提供開始のお知らせ](https://aws.amazon.com/jp/about-aws/whats-new/2020/05/announcing-general-availability-amplify-ios-android-authentication-data-ai-ml-support/)
* 6月
    * [AWS Amplify コンソールが monorepo で管理されるウェブアプリのデプロイとホスティングのサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/06/amplify-console-supports-deploying-and-hosting-web-apps-managed-in-monorepos/)
    * [Amplify Console がすべてのブランチデプロイのカスタムサブドメインを自動的に作成および削除するためのサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2020/06/amplify-console-adds-support-for-automatically-creating-deleting-custom-sub-domains-for-every-branch-deployment/)
* 7月
    * [Amplify CLI が Lambda レイヤーのサポートを追加して、Lambda 関数全体でコードとアセットを簡単に共有](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/amplify-cli-adds-support-for-lambda-layers-to-easily-share-code-assets-across-lambda-functions/)
* 8月
    * [Amplify iOS での Swift Combine サポートの発表](https://aws.amazon.com/jp/about-aws/whats-new/2020/08/announcing-swift-combine-support-in-amplify-ios/)
    * [Amplify Flutter がデベロッパープレビューとして利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2020/08/amplify-flutter-now-available-as-developer-preview/)
    * [Amplify Android での RxJava サポートの発表](https://aws.amazon.com/jp/about-aws/whats-new/2020/08/announcing-rxjava-support-amplify-android/)
* 9月
    * [Amplify CLI がプロジェクトレベルでのリソースのタグ付けのサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/09/amplify-cli-supports-tagging-resources-project-level/)
    * [Amplify JavaScript が Next.js や Nuxt.js などのフレームワークのサーバー側レンダリング (SSR) サポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2020/09/amplify-javascript-adds-server-side-rendering-support-frameworks-next-js-nuxt-js/)
* 10月
    * [Amplify プロジェクトに既存の Cognito ユーザープールと ID プールを使用する](https://aws.amazon.com/jp/about-aws/whats-new/2020/10/use-existing-cognito-user-pools-identity-pools-for-amplify-project/)
* 11月
    * [欧州 (ミラノ)、中東 (バーレーン)、およびアジアパシフィック (香港) の各リージョンで、AWS Amplify Hosting の一般提供を開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/11/aws-amplify-hosting-generally-available-milan-bahrain-hong-kong-regions/)

- - -

今年も熱いアップデートが多かったのですが、個人的にはAmplifyライブラリがSSR対応したことで、Next.jsやNuxt.jsなどでCognitoやAppSyncをサーバサイドでリクエストしてからレンダリングできるようになったことが嬉しかったです。（お客様からの要望が非常に多かった。。。）
またネイティブアプリ関連のアップデートも多く、2021年は様々なフロントエンドエンジニアの方々がAmplifyを利用してサービス開発の速度を爆上げするようなブログや発表を目にする機会が増えそうで楽しみですね！

それではまた！