mmiyakoh
Post

サイト構成と技術構成

このサイト(miyakoh.me)の技術的な構成についてまとめました。

技術スタック

カテゴリ技術
フレームワークNext.js (App Router) + TypeScript
スタイリングTailwind CSS v4
テーマnext-themes(ダーク/ライトモード切替)
ブログMDX (gray-matter + next-mdx-remote)
コンタクトフォームResend
デプロイVercel

ページ構成

サイトは大きく分けて以下のページで構成されています。

トップページ

注目コンテンツを並べた Featured セクションと、各プラットフォームでの発信をまとめた Timeline セクションを表示しています。サイト全体のハブとなるページです。

About

自己紹介ページです。プロフィールや経歴を掲載しています。

Post

このサイト内のブログ記事を一覧・閲覧するためのページです。記事は MDX 形式で管理しており、この記事もその一つです。

Contact

お問い合わせ用のフォームページです。メールアドレスとメッセージを入力して送信できます。

RSS

RSS フィードも配信しており、お好みのリーダーで記事の更新を購読できます。

タイムライン

トップページには、複数の外部サービスから取得したコンテンツを統合して表示するタイムライン機能があります。

Loading diagram...

各ソースのデータはビルド時に並列で取得され、日付順にソートされます。ISR(Incremental Static Regeneration)により、1時間ごとに最新データへ更新されます。

表示はタブで絞り込むことができ、All(全ソース)、XPost(サイト内記事)、Writing(Zenn + しずかなインターネット)の4種類があります。また、年ごとにグルーピングされ、過去の年は折りたたまれた状態で表示されます。

コンタクトフォーム

お問い合わせフォームは、Next.js の API Route と Resend を組み合わせて実装しています。

Loading diagram...

スパム対策として、IP ベースのレート制限(1時間に5回まで)を設けています。

まとめ

このサイトは Next.js の App Router による静的生成と ISR を組み合わせた構成です。RSS や API を通じて外部サービスのコンテンツを集約するタイムライン機能により、さまざまなプラットフォームでの発信を一箇所にまとめています。

Author

miyakoh

miyakoh

地方でデータ活用を推進する人。キャンプと筋トレが好き。

しずかなインターネット

記事に関する感想やご質問を送れます

お問い合わせフォームを開く