一週間くらい触ってみての所感なので、勘違いや間違いがあるかも知れません。つっこみ歓迎です。
TL;DR
- aws-amplify-js は便利なので頑張って発展していって欲しい
- AWS Mobile Hub と awsmobile-cli は短期的なサービスをぱぱぱっと作るときにはとても便利だが、ある程度の期間継続して開発していく予定がある場合は導入すべきか少し慎重になった方がいいかも知れない。
各サービス・ライブラリの大雑把な説明
AWS Mobile Hub
Mobile Hub はいくつかの AWS サービスをひとまとめにして使えるようにするメタサービスの一つで、AWS における MBaaS 的な位置づけ1。具体的には Mobile Hub を使うと:
- S3 + CloudFront を使った本番環境構築
- Cognito の設定
- API Gateway + Lambda の環境構築
- Device Farm を使った E2E テスト環境構築
みたいなことを自動でやってくれる。
awsmobile-cli
awsmobile-cli は Mobile Hub に特化した aws-cli のようなもの。 public ディレクトリ以下に吐き出された Web アプリ(HTML+JS+CSS)を Mobile Hub で用意したデプロイ環境にデプロイしたり、 Mobile Hub プロジェクトに新しいサービスを有効にしたりできる。
aws-amplify-js 用の設定ファイルを生成する機能がある。
aws-amplify-js
aws-amplify-js はこれまで個々の AWS サービスごとに散らばっていた JS SDK を統合して使いやすくするライブラリ。 AWS Mobile Hub や awsmobile-cli とは独立して使うことができる。
所感
- AWS Mobile Hub
- 詳しいことが分からなくてもそれっぽく各種サービスを設定できるのは便利。
- 困ったときには個別のサービスを直接触ればどうとでもなるのは安心感があるかも知れないが、その結果 Mobile Hub が壊れるのではないか?という不安感が拭えない。
- Mobile Hub が対応していない AWS サービスとの統合をどうするのか。
- awsmobile-cli
- aws-amplify-js 用の設定ファイルを自動生成してくれるのは便利。
- cli から簡単にデプロイできるのも初動としては便利。
- ただ、複数人で開発する場合、どこかで誰かがデプロイするのではなく、 CodePipeline とか使って明示的にデプロイして欲しい気がする。
- aws-amplify-js
- AWS の JS SDK はこれまでサービスごとに別々で、かつそれら組み合わせて使う方法の説明が不十分でお世辞にも体験がいいとは言えない感じだった(Cognito で認証したあと、どうやって他の AWS サービスにリクエストすればいいのか不明だったり)が、 aws-amplify-js はそこらへんがすべてライブラリの中で完結しているので使いやすい。
- 一つの巨大な npm パッケージではなく、
@aws-amplify/xxx
というサブパッケージをまとめたものとして提供されているので、 bundle サイズが気になる場合は個別のパッケージを直接 import することで対処ができるのも嬉しい。
-
Amazon は伝統的に XaaS という単語を使わないので公式には MBaaS とは説明されていない。 ↩