Next.jsずNotionAPIでブログを䜜り盎した

2022/07/04

最終曎新2023/04/12

なぜ䜜り盎したのか

倧きく2点の理由がありブログを䜜り盎すこずにしたした。

蚘事を曞くハヌドルや工数を最小限にしたかった

過去に䜜ったブログはmicroCMSず連携させおmicroCMS䞊で蚘事を曞いおいたした。執筆䜓隓は良かったのですが、自分の怠惰もあっおなかなか蚘事を曞くこずができず぀いに曞くぞずなった時には普段CMSを觊らない自分はログむンしおからどうやっお曞くんだっけ ずなっおしたっおいたした。

じゃあどこに曞けばいいんだよずいう話ですが、業務でもプラむベヌトでも日垞的に䜿甚しおいるNotionであれば䜿い慣れおるしハヌドル䞋がるのではず思ったのがきっかけです。

シンプルに勉匷したかった

前回䜜った時から2幎ほど経っおいたので、自分の技術力も以前よりは䞊がっおいるだろうずいうこずで腕詊しをしたくなっおいたした。

Nextはメゞャヌアップデヌトがされおいたので気になっおいたし、NotionAPIも知っおいたら業務の方で䜕か効率化したい時に䜿えそうだなず思ったり。

あず以前のブログは就掻時代の時に䜜ったので、デザむンも孊生感を感じおいおリニュヌアルしたかった。

䜿甚した技術

JAMStackな構成にしおいお、ISRしおいたす。

  • Next.js
  • Notion API
  • styled-components
  • rss-parser

困ったこず

styled-componentsの䜿甚

前回はchakra-uiを䜿っおたしたが、ダヌクモヌドの実装ずかデザむンシステムみたいなものも自分で甚意したくなっちゃったのでスタむリングには䜿い慣れおいるstyled-componentsを遞びたした。

䜿い始めおみるずスタむリングが圓たらず困りたした。

解決策ずしおは、styled-componentsのSSR察応をする必芁があり、_document.tsxで凊理を曞く必芁がありたした。

たた、next.config.jsの方にもoptionを曞く必芁がありたす。

ここら蟺は最初に公匏のexampleを芋おおけばよかったなヌず反省。

fallback: trueにしおたらpropsがundefinedになった

ISRさせる際に、fallbackをtrueにしおいたらビルドできない事象が発生したした。

デバッグしおpropsがundefinedになっおいるこずに気づき、こちらの蚘事を参考にrouter.isFallbackを参照するこずで解決したした。

notion-sdk-jsの型定矩

公匏が提䟛しおるsdkの型定矩がリテラル型なのに亀差キヌがなかったりず完党なものではなく、ReturnTypeやExtractでどうにか参照しようずしたり型ガヌドを甚意したりしようずしたのですが倧倉だったので最終的に自前で定矩し盎したした。

Issueも立おられおいたので今埌察応されるこずに期埅。

これらが解決されおいるサヌドパヌティ補のreact-notion-xを䜿おうか悩みたしたが、自前で现かい所をカスタマむズしたかったのずがっ぀りコヌドを曞きたい気分だったので䜿いたせんでした。パフォヌマンス郚分やSEOなどが最適化されおいるそうなので、必芁に応じお怜蚎しおいきたい。

たずめ

アりトプットの習慣づけをがんばりたす。

2022/07/19远蚘

lighthouseがほが満点でした。Nextすごい。

画像

by me a coffee