昨今、SNSやWebsiteビルダーによってインターネットでの情報発信の敷居が低くなっています。また、インターネットでの情報発信が当たり前だからこそオリジナルなポートフォリオサイトやコーポレートサイトを作る機会も増えていると思います。そのような場合、サイトオーナーが更新できる環境として、WordPressをレンタルサーバーにインストールしてカスタマイズする構成が多く採用されていると思います。
WordPressは多くのプラグイン、大きなコミュニティというエコシステムが便利ではありますが、サイト構築のためのソフトウェアです。一方で、第2の脳と呼ばれるNotionは、散り散りになったWeb上のツールを一つに集約し生産性を高めるソフトウェアが人気を博しています。Notionを使う前提になりますが、インターネットの情報発信に使うコンテンツもNotionで管理し、そこからNext.jsを使ったStatic Websiteとしてビルドすると、安価でハイパフォーマンスなサイトが構築できるというわけです。また、Notionのデータベースは非常に柔軟性のあるカラム定義ができるため、Websiteの仕様に応じて設計することができます。
Notion APIからStatic Websiteを作るのは骨が折れます。なぜかというと、Notionに埋め込まれた画像やデータはNotionの認証に守られているため、ローカルにダウンロードする必要があります。また、Notionには何百という外部サービスの埋め込み機能があるからです。ですので、その苦労を肩代わりしてくれるNotionateを使うと手軽に先述のことができるのです。
Notionateは私が開発しているソフトウェアです。その開発においての苦労や工夫した点をご紹介します。例えば、Notion APIのRatelimitにかからないように何をしているか。サイトが大きくなるとビルド時間が比例して長くなります。その緩和のための差分ビルドをどのように実現しているか。などです。また、Static Websiteだけでは補えないケースを、PHPで作ったAPIの例もご紹介します。