2024-11-30
Next.js でポートフォリオサイトを作成しました。 さまざまなことを学びましたが、特にブログ作成において大きな成長がありました。
ポートフォリオサイトの概要と、どうやって学び、作成したのか、何を学んだのかを簡単にまとめました。
2024 年 11 月中旬ごろから開発をはじめめました。 その時点で、Next.js の 15 が出ていました。 はじめはそのバージョンで作業をしていましたが、依存関係のエラーが多数発生し、安定的な環境で開発を行いたいと考えたため 14 で進めることにしました。
ブログはローカル環境でマークダウンで記述し、デプロイ時に静的生成しています。
動きのある Web サイトにしたかったので、Motion を入れることにしました。
選定理由は 2 つあります。 1 つ目は、よく名前を目にしていて使ってみたかったからです。 2 つ目は、GSAP より簡単だと感じたからです。
「とりあえず公開したい...!」という気持ちがあり、最低限の実装しかしておりません。 将来的には以下の機能を追加していこうと思います。
全体的にこのようなやり方でポートフォリオサイトを作成しました。
Next.js Example: Portfolio Blog Starter
↑ こちらの、Next.js のブログサンプルでは SEO、画像生成、マークダウンを HTML にする方法などを含んでおり、コードを読むと理解が深まるのではと思い、1 行 1 行解読して何をしているのか理解していきました。
よく言われていることではありますが、小さく小さくさまざまなことを試しました。
.md
拡張子のつくファイルを選び内容を読み取るremarkParse
: markdown をパースremarkGfm
: GitHub Flavored Markdown で GitHub と同じような機能を使えるようにするremarkRehype
: markdown AST を HTML AST に変換rehypeRaw
: HTML 文字列を再パースし、HTML AST に統合rehypeSanitize
: サニタイズ(不正な HTML タグや属性を除去)rehypeExternalLinks
: 外部リンクを別ブラウザで開くように指定rehypeShiki
: Shiki を導入し、シンタックスハイライトを実現rehypeStringify
: HTML ASL を HTML 文字列へ変換# Hello World
This is **Markdown**.
これが解析されて ↓ になる
{
"type": "root",
"children": [
{
"type": "heading",
"depth": 1,
"children": [{ "type": "text", "value": "Hello World" }]
},
{
"type": "paragraph",
"children": [
{ "type": "text", "value": "This is " },
{ "type": "strong", "children": [{ "type": "text", "value": "Markdown" }] },
{ "type": "text", "value": "." }
]
}
]
}
Next.js が...というより、Node.js がわからず大変でした。 数ヶ月前にも Next.js でポートフォリオサイトを作ったのですが、そのときに比べて、今回は何をやっているのかをより明確に理解することができました。
以前はどこが Node.js の範囲、役割なのか?どこからが Next.js なのか?もはや何がどうなっているのかわからない...といった感じでした。
このポートフォリオサイトを作りながら、自分に合った勉強方法も再度見直すことができたので良い機会になりました。
引き続き、機能の追加や、他の作品(?)を作って、理解を深めていきます。