最近セミナーで知ったJAMstackがどんなものなのかを自分なりに整理してみようと思う。
JAMstackってなに??
多分JSの何かフレームワーク的な開発環境なんだろうな〜〜と思っていました。
開発環境であることは違いないのですがJSのフレームワークやライブラリではありません。
静的なWebサイトを素早くホスティングサービスやPIを使って
ユーザーに提供するタイプのフロントエンドのWeb開発....
という感じらしい。
静的サイトも最近いろんな要因で重たくなりがちだからめっちゃありがてぇそんな感想を抱きました。
構造的にはJS + api + Markup
なのでそんなに難しい印象もなく、学習コストも低いのかなという印象。
JAMstackを活用したモダンな制作手法
開発のメリットはこんな感じ
- ビルドによって表示速度を早くできる
- サーバーメンテナンスが不要なので安全に利用できる
- マークアップと開発を同時に行えるので開発が早くできる
メリット良さげ。
サーバーメンテナンス不要なところが特に嬉しいような。
もっと細かくいうとこういう感じ↓
①表示速度が速い
これがJAMstackの最大のメリットのように感じた。
事前に生成された(ビルドされた)静的なファイルをサーバーに配信するのでロード時間が短くなるっぽい。
②セキュリティの向上
サーバーサイドの実行を必要ないので、コードとコンテンツが事前にビルドされた静的ファイルとして反映される(①のやつ)のでサーバー攻撃や脆弱性のリスクも完全には無くならないが低減できるし、何よりサーバーコストもそんなにかからないかもしれない。
③開発が楽
CDN経由で静的ファイルをアップしている感じ。
静的サイトジェネレーター(SSG)を活用すると、ファイルのビルドとデプロイが瞬時にできちゃう。
また、JSのライブラリやフレームワーク(VueとかReactとかnextとか)に柔軟に対応しているので組み合わせ次第では無双できるのでは??と思っています。
ええ....JAMstackなんかよくない???
SSGとかも使えるから、多分next環境よりもお手軽にできちゃうのかも。
逆にデメリットっぽいところ
メリット多くてよくなぁい???って思ったけれど、疑り深い私はデメリットも気になっちゃう。
多分だけどデメリットとしては
- 動的コンテンツは制限される?
- 複雑なコンテンツはどこまで管理できる?
ていうのが気になった。
セミナーではSEOには課題があるっておっしゃられていた(記憶がある)。
①動的コンテンツの制限
あの....ほんとここからは憶測だらけで恐縮なんですが
「静的」ページに特化しているということはおそらく動的処理は制限かかるのかなー?ていう雰囲気を感じた。
単純に内容によっては動的処理でページ重たくなるのもあるし、
そしたら「高速化された意味なくない?」...って思ったの。
多分...多分なんだけど
例えば
- フォームの処理とかのサーバへのデータ受け渡しとかゴリゴリのサーバーへ情報を渡すバックエンド処理が必要になる機能とか
- パラメータつきURLの動的処理とか
この辺の処理は複雑になるかできなくなるのかのいずれかだと思う。
②複雑なコンテンツはどこまで管理できるのか
例えば、LPとか10〜15ページぐらいで、コンテンツ管理する人も一人だけとか。
そんな時はすごく楽なんだろうなって思った。
問題は50ページ以上のサイトとかが来た時とか。
コンテンツもすごく複雑に管理されてる系のサイトの時はどうなのかが気になった。
ページ大きくなれば関わる人も増えるだろうし...このサービスの中でこのサービスの機能を....とか
できても管理が難しくなりそうな予感がした。
結局どうなん??
メリットとデメリットも知った上で使うのがよろし。
って至極当然な回答だけども
制作コンテンツによってはむっっっっちゃ楽になると思うし、いいこと多いと思うんだ。
なんたってジェネレータ使えるし開発の幅は自由だと思う。
なので何を作るかによって、開発環境を使い分けられるようにしておくのが得策なのかな。
開発の引き出しを広げるのは良いことだと思った。
JAMstack環境は、もう少し身の回りが落ち着いた時に作ってみようと思う。
ちなみにセミナーではジェネレータでAstroを使った開発をお勧めされていました。
Astro使ったことないのでちょっと気になる。