はじめに
なんでこうなってるんだということに出会ったので、ここで思ったことを書き記す。 あくまで私見であり、結論は特に出してない。
きっかけは amazon-cognito-identity-js のGithubページを開いたこと。 これは未だにnpmで公開されているけど、実はリポジトリが当初と変わっている。
変更前
https://github.com/amazon-archives/amazon-cognito-identity-js
変更後
https://github.com/aws-amplify/amplify-js/tree/main/packages/amazon-cognito-identity-js
と、何故か Amplify のサブセットの位置に再配置されてしまっている。
引き続き、npm
や yarn
で amazon-cognito-identity-js
を入れることはでき、この場合に Amplify が入ってくることはないのだが、まるで Cognito が Amplify のサービスの完全な一部分であると捉えられても仕方ない構成になっている。
思うこと
何故混ぜた である。 以下の Issue ですでにやり取りされているし、分離する気はないようだが・・・
AWSはいろいろなサービスをリリースしていて、これを組み合わせて使えることがメリットであると考えている。 しかし、このような方法を推奨してしまうと、折角出した個別のサービスを無駄に密結合にしているようにしか見えない。
Amplify の開発を進めてその利用を促したいのは分かるが、これを見て「将来的には Cognito は Amplify でしか使えないようになるのではないか」という疑念を持った。 他にもIssue内から意見を拾うと、「Cognito だけしか使わないソースコードの中に Amplify という文字列が出てきて、開発者を混乱させる」といったことも考えられる。
さらに言えば、Amplify での多言語対応ログインUIは作成されているにも関わらず、Cognito Hosted UI のログインUIは問題が認識されてから2年以上(リリースから考えるともっと長期間?)多言語対応が行われていない。 それこそ、一般ユーザーに使わせる上では真っ先に需要に答えるべき場所だと思うのだが。
これに対しても「Amplify ではできるから」と返されるかもしれないが、Amplify には Amplify の成約があり、Cognito という IDaaS を単独で使いたいという需要はかなりあるはずである。
もしかして、Cognito そのものにかけるリソースが少ないのかもしれず、それを Amplify でカバーしようとしているのかもしれないが、そうすると Cognito を使うことを辞めるべきなのだろうか、とも考えてしまう。
Amplify + Cognito でガッツリ使うというのであれば良いが、そうでない場合は Cognito だけでなく IDaaS である Firebase Authentication か Auth0 あたりも触っておいたほうが良いのかもしれない。