{
  "$type": "site.standard.document",
  "canonicalUrl": "https://blog.nove-b.dev//posts/netlify-build-my-pull-requests",
  "path": "/posts/netlify-build-my-pull-requests",
  "publishedAt": "2025-10-20T00:00:00.000Z",
  "site": "at://did:plc:2atly2y5kfyjcj5zap6pv4wd/site.standard.publication/3mmxeqr2tcb2k",
  "tags": [
    "Nuxt",
    "SSR",
    "SSG",
    "ISR",
    "ユニバーサルレンダリング"
  ],
  "textContent": "SSGでデプロイされていると勘違いしていた\n\nhttps://contributions.nove-b.dev/をNetlifyにデプロイしている。\n\nClone元はhttps://github.com/atinux/my-pull-requestsで、envを変更するだけで自分ようになるので、ソースコードを読まずにnuxi buildでデプロイした。\n\n最近は静的ジェネレータをメインに触っていたせいか、SSGでデプロイされると思い込んでいたので、プルリクを出すたびにデプロイしなくちゃいけなく、デプロイの定期実行をどうしようと思い悩んでいた。\n\n先日プルリクを出したあとに見に行くと、最新のプルリクが反映されており、勝手にデプロイが走ったのかと混乱した。\n\nデプロイ履歴を見に行くとデプロイ履歴は更新されていない。\n\nSSGじゃないんじゃと思い返して、試しにプルリクを出し、観察しに行くとプルリクが更新されておらず、さらに混乱する。\n\nしばらく経ち再訪すると更新されていて大混乱したので、しっかりコードを見に行くことにした。\n\nコードリーディングしていく\n\nCSR or SSR api fetch\n\nfetchしている部分を見に行くと、\n\n特に特別なことをしていない。\n\nちなみにuseFetchとは、\n\n> このコンポーザブルは、との便利なラッパーを提供します。URL とフェッチ オプションに基づいてキーを自動的に生成し、サーバールートに基づいてリクエスト URL の型ヒントを提供し、API レスポンス タイプを推測します。\n\nとのことだった。\n\n調べてみると特定のレスポンスにおけるKeyだけを取得できるpickという機能とかssrとcsrを切り替えるserverとかあって便利そうだった。\n\nパラメーター一覧\n\nちなみに全体でssrとcsrを切り替える方法は、nuxt.config.tsで\n\nのように設定すると実現できるようだった。\n\nつまり特別なことはしてないので、Nuxtのデフォルトのレンダリングをしていると思われる。\n\nNuxtのレンダリングモード\n\nNuxtのドキュメントを見に行くとデフォルトはユニバーサルレンダリングというレンダリング方法らしい。\n\nユニバーサルレンダリングについて調べてみると、\n\n> また、ページが事前に生成されている場合は、キャッシュから完全にレンダリングされたHTMLページを返すこともあります。クライアントサイドレンダリングとは異なり、ユーザーはアプリケーションの初期コンテンツ全体を即座に取得できます。\n\nとのこと。\n\nそうすると、\n\n> SSGじゃないんじゃと思い返して、試しにプルリクを出し、観察しに行くとプルリクが更新されておらず、さらに混乱する。しばらく経ち再訪すると更新されていて大混乱したうえで、しっかりコードを見に行くことにした。\n\nここで即座に反映されなかったことが腹落ちした。\n\nそれでこのキャッシュに関してはisrのことを言っているっぽい。\n\n調べてみるとnuxt.config.tsに\n\nという記述があった。\n\n一度生成されると5分間 (60秒 \\ 5) キャッシュされてssrで生成された静的ページが表示されるようになる。\n\nという仕組みになっていた。\n\n便利なリポジトリは活用しつつ、勉強の一助にもしたいと思った今日この頃でした。",
  "title": "とりあえずデプロイしたらキャッシュに惑わされたのでNuxtのユニバーサルレンダリングについて調べてみた"
}