ゆるWeb勉強会@札幌 OnLine #20 での発表資料 https://mild-web-sap.connpass.com/event/256909/
Gatsby を触ってみた感想と、用語の説明。
React 初心者がやってみたGatsbyゆるWeb勉強会@札幌/ OnLine #202022/08/29木原卓也 / @tacck1ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
View Slide
私• 名前• 木原 卓也 / @tacck• 主催コミュニティ• ゆるWeb勉強会@札幌• スマートスピーカーで遊ぼう会@札幌 (休眠中)• 参加コミュニティ• Amplify Japan User Group 運営• AWS Community Builders Program (Q2 2021, 2022)• 好きなフィギュアスケートの技• スプレッド・イーグル2ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
お品書き• まずは静的サイトジェネレータについて• 静的サイトジェネレータの前に• 静的サイトジェネレータ• Why Gatsby• Gatsby 使ってみた3ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
静的サイトジェネレータの前に4ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
最近の流行語 SSR / SSG / CSR• SSR (Server-Side Rendering)• ブラウザからのアクセスごとに、Webサーバで HTML(などブラウザに返却するデータ) を逐一生成。• SSG (Server-Side Generation)• デプロイ時に、サーバで HTML(などブラウザに返却するデータ)を生成してWebサーバに配置。• CSR (Client-Side Rendering)• ブラウザからのアクセスで、まず生成済みのHTMLを返却。その後、ブラウザから逐一Webサーバにデータを取りに行き、ブラウザがページを動的に更新。• SPA (Single Page Application)はこのタイプ。5ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
SSR / アクセスごとにページ生成1. ブラウザからWebサーバへアクセス2. WebサーバがDBなどから情報を取得3. 取得した情報をもとに返却するHTMLデータを生成4. ブラウザへHTMLデータを返却6ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
SSG / 事前にページ生成1. WebサーバがDBなどから情報を取得2. 取得した情報をもとに返却するHTMLファイルを事前に生成3. ブラウザからWebサーバへアクセス4. ブラウザへ事前に生成していたHTMLファイルのデータを返却7ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
CSR / ブラウザで都度ページ更新1. Webサーバへ事前にHTMLファイルを配置2. ブラウザからWebサーバへアクセス3. ブラウザへ事前に配置していたHTMLファイルのデータを返却8ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
CSR / ブラウザで都度ページ更新4. ブラウザからWebサーバへAPIアクセス5. WebサーバがDBなどから情報を取得6. 取得した情報をもとに生成したJSONデータを返却7. ブラウザは受け取ったデータをもとに画面更新9ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
良し悪し SSR / SSG / CSR10ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌長所 短所SSR (s) ユーザー別ページなど、区分けしたいページに使える。(c) 常に最新のデータを使ってページ生成できる。(s) アクセスごとにページ生成するため、サーバに負荷がかかる。(c) ページ取得に時間がかかる可能性が高い。SSG (s) ページデータ返却の時のサーバ負荷が低い。(c) ページ取得に時間がかからない(場合が多い)。(s) 事前のページ生成に時間がかかる可能性がある。(c) ページ生成時のデータしか使えないので、動的ページには使用できない。CSR (s) ベースは事前に作成済みのため、初回の通信のサーバ負荷は低い。(s) 別途ページ更新用データを送れるので、ページの区分けや最新データ送付、といったSSR/SSGの良いとこどり。(c) SPAなど、ページ更新において体験の良いサービスを受けられる可能性がある。(s) ページの完成までに通信が増える。(c) ページの完成までに、クライアントのマシンに負荷がかかる。
使い所 SSR / SSG / CSR• SSR• いわゆるWebシステム向き。• バックエンドのフレームワークで開発する形。• フロントから行く場合、SEO対策(クローリング向き)で欲しいことも。• 少なくとも Google のクローラーは JS 対応しているようなので、この辺りは専門の方に聞きたい。• SSG• いわゆるWebサイト向き。• 誰に対しても同じものを見せたい、一度ページを作ったら変化しない、というサイトやブログなどで使いたい。• CSR• SPA で実現するWebシステム向き。• うまくつくれば、ユーザーの体感待ち時間を減らせる。11ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
静的サイトジェネレータ12ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
静的サイトジェネレータ• 何らかのデータに対して• 何らかの力を使って• HTML/CSS/JS などの静的ファイルで構成されたサイトに変換するもの13ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌何らかのデータHTMLCSSJS何らかの力HTMLCSSJSHTMLCSSJS
静的サイトジェネレータ• 静的サイトジェネレータ• Static Site Generator• SSG• 先に説明した SSG (Server-Side Generation) と役割も同じ14ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
静的サイト の対義語?• 静的サイトの対義語は “動的サイト”• 先の “SSR” は、元々動的サイトの仕組み。• JavaScriptが発展し、ブラウザ(クライアント)での画面描画が行われるようになったことで、“CSR” という概念が必要になり、それと対比する形で “SSR” や “SSG” という言葉が再定義されたのだと思います。(個人の感想)15ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
静的サイトジェネレータ• HTMLを生成する「何らかの力」は、各種言語で色々ある。• 自分の知っているもの中心で以下など。• そんな色々ある中で、今回は Gatsby を選択。16ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌⾔語 ツール名Go HugoRuby JekyllPython HydePHP Jigsaw
Why Gatsby ?17ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
Gatsby を選んだ理由• React ベースの静的サイトジェネレータを使いたかった。• 以前 Vue 中心にやっていたときは、 VuePress を使っていた。• React を使い始めたので、 React ベースの静的サイトジェネレータを使ってみようと思って選択。18ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
Vue ベース と React ベース• 私の知っている範囲で、代表的そうなもの。• CMS (SSG)• シンプルにテキスト中心のサイトを構築できるもの。• サイトの見せ方は、比較的拡張性が低い。• CMS Framework (SSG)• サイトごとにカスタマイズを行いやすい。• 自分でサイトデザインが必要なので、定型で良い場合には手間。• Application Framework (SSR / SSG / CSR)• 動的要素の多いWebアプリケーション構築向き。19ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌Vue ベース React ベースCMS VuePress ?CMS Framework Gridsome GatsbyApplication Framework Nuxt.js Next.js
Gatsby を選んだ 真の 理由• React ベースの静的サイトジェネレータを使いたかった。• 以前 Vue 中心にやっていたときは、 VuePress を使っていた。• React を使い始めたので、 React ベースの静的サイトジェネレータを使ってみようと思って選択。• VuePress に相当するものがわからなかったので、必然的に Gatsby を選択せざるを得なかった。20ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
Gatsby 使ってみた21ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
Gatsby を使う前に• React ベースの CMS Framework なので、 React の知識は必須。• 少なくとも、 React でデザインを書き下せるくらいは必要。• Next.js も多少かじっておくと、 Framework としての動きやファイルの配置などを理解しやすくなる。22ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌ReactチュートリアルReactページ作成Next.jsチュートリアルNext.jsシステム作成GatsbyチュートリアルGatsbyサイト作成お勧めのステップ (Next.js は無くても良い)
Gatsby で作ってみたサイト23ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌https://www.tacck-work.net/
Gatsby の特徴• React ベース• デザインは自分で (Reactで書く)• 入力元になるデータソースをプラグインで選択• ローカルファイル(Markdown)• WordPress / MicroCMS /Contentful ...• デザインやプラグインなどをセットにしたスターターライブラリー もある• ファイル配置やプラグインの使い方の参考に。24ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
Gatsby やってみての感想結論: 次はブログを Gatsby で作り替えてみようその他感想• そもそものデザイン力が必要だった。(“CMS” ではなく “CMS Framework” なので。)• スターターライブラリーは、あくまで参考。自分の作りたいものと、必ずしもフィットしない。• プラグイン豊富だが、 Gatsby 自体のバージョンアップに追随できてないものもある。• Google Analytics 系がハマらなかった。25ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌
終26ゆるWeb勉強会@札幌 OnLine #20 / #ゆるWeb札幌