ウェブサイトを next.js で作り直した

vercel とセットで開発体験は最高でした


Gatsby.js → Next.js

Gatsby から next.js に移行した。 またそれに合わせてウェブサイトのホスティング先も netlify から vercel に移した。

移行してみて

vercelのlogo

まず vercel が提供する開発体験が非常に良かった。

vercel でホスティングしているので、github 上で main ブランチに merge commit があればすぐにデプロイされる。 vercel でデプロイするためのパッケージやビルドスクリプト等の用意も不要。

ドメイン設定

vercelのドメイン設定画面

netlify から vercel へ移行したことで CNAME も変更した。やることは2つ。

  • vercel の設定画面でウェブサイトのドメインを入力する
  • CNAME 変更

上記は順不同で問題ない。

まずvercel の設定画面にて、このウェブサイトのドメインを入力した。当然、その時点では nabetama.com は netlify に向いているので設定できない旨のエラーが表示される。 次にドメイン事業者にて CNAME を vercel(cname.vercel-dns.com.) へ変更する。 そうすると自動的に vercel が SSL 証明書を作成し始める。証明書の作成が終わるとすぐに当該ドメインで表示された。

md → mdx への変更

今回の移行にあたってcontentlayerを使ってみたいというモチベーションもあり、記事をすべて md から mdx に変更した。 以前の記事一覧は以下のような投稿日のディレクトリ内の index.md に書いていた。

drwxr-xr-x   8 nabetama  staff   256B Nov 16 18:41 2016-05-12/
drwxr-xr-x   3 nabetama  staff    96B Nov 16 21:52 2023-11-10/
drwxr-xr-x   3 nabetama  staff    96B Dec  4 21:51 2023-12-04/
...

いまは content/posts/ 以下に 2023-12-04.mdx のようにファイルを配置している。 移行時は以下のようなスクリプトを書いて変換した。

for dir in */; do
  if [ -f "$dir/index.md" ]; then
    cp "$dir/index.md" "$path_to_new_blog/posts/${dir%/}.mdx"
  fi
done

画像ファイルの移行

最近書いた記事の画像はすべて imgur にアップロードしているので、そのまま使えたが、古い記事の画像はすべてローカルに保存していた。 それらをすべて imgur にアップロードし直すか悩んだが、面倒なのでそのまま捨てることにした。 業務だったら絶対に許されない意思決定を簡単に行えるのも個人開発の楽しいところだ。

さいごに

remix と next.js とで少し悩んだが、まずはデファクトスタンダード感のある next.js で作ってみることにした。 デザインセンスが皆無なので next.js が公開しているテンプレートを使うことも考えたが、 自分には不要な機能実装があったりと要求にマッチするものがなかったのでゼロから作ってみた。 結果、非常にシンプルなデザインだが求めていたものができた実感がある。 公式のサンプルをそのまま持ってきている箇所も多く、部分的に理解してないところもあるが 今後も継続的に運用していけば勝手に覚えるだろうと気にしていない。