こんちには!
AWS Amplify の開発プロジェクトが増えてきた最近では、SEO 対策を兼ねて SSR したいといった声が非常に多いです。
Google 的には SSR しなくても評価しますよと明言していますが、実際はどうなんでしょうか?
Google ボットの挙動周りから、AWS Amplify の SSR 事情に触れていきます。
SPA の話をする前に、Google ボットの挙動について把握しておきましょう。
通説では Google ボットは下記のように SPA ページではインデックスを収集するそうです。
まぁつまり、不確定様子もありなんとも言えない状況です。
結論 SSR にしておくのが無難ですね。
結論、Amplify フレームワークの SSR 方法は公式サポートでは存在しません。
Amplify の SSR に関する該当の Issue を紹介します。(代表の益子もコメントしています)
まず、Issue によると、結論
今後 NextJS では対応されていくかもしれませんが、Nuxtjs については雲行き怪しいです…。NextJS が優先的にサポートされていく様子ですね。
通説、アジアは VueJS、欧米では ReactJS なんてよく言われているので仕方ないかもしれませんね。( NextJS で SSR できれば NuxtJS でもできる可能性が高いので NuxtJS ユーザーも希望を捨ててはいけません)
また対応時期などは特に言及されておらず、いつ対応されるのかはわかりません。
AWS Amplifyより aws-amplify / @unstable
バージョンが公開されている様子です。
わたしたちも aws-amplify/@unstable
バージョンを用いて NuxtJS のサンプルアプリを作成し universal mode
にてデプロイして見たところ、苦しめられたnavigator
エラーがなくなりました!
発生するエラー内容:
Error Details:
ReferenceError: navigator is not defined
プルリクエストの引用・解決策の抜粋:
I have confirmed that using ‘npm install aws-amplify/@unstable‘ resolved my issue with the gatsby build process through ‘gatsby develop’, ‘gatsby build’, and through deploying from Amplify Console. “dependencies”: { “aws-amplify”: “^1.2.5-unstable.10”, … } |
aws-amplify/@unstable
を使用するといけました。
Amplify Console を用いてデプロイしてみてください。
@unstable
なので、今後使用できなくなる可能性も孕んでおり利用は怖いですね。わたしたちは、GraphQL で SSR をどうしてもしたい場合は、 Apollo を拡張した AppSyncSDK を採用し SSR させるケースがあります。
Amplify 採用の際は、 SEO 要件を慎重に検討しましょう。
Amplify での開発はお気軽に相談ください。