工房の言葉を、ためる場所

本体サイトが「サービスの顔」だとすれば、このブログは 「つくっている人の声」 が置かれる場所です。 NAKASHIMA CRAFT は、兄弟ふたりで運営する小さな制作の工房。 日々の制作で考えていること、技術選定で迷ったこと、Webサイト保守の現場で実際に起きた小さな出来事 ── それらを、できるだけ等身大の言葉で残しておくための媒体として、公式ブログを立ち上げました。

既存 SSG を選ばなかった理由

Hugo や Zola を使えば半日で公開できたはずです。 それでもあえて Rust で自前の SSG を書いたのは、3 つの理由があります。

  • ブランドの空気感を 1px もずらしたくなかった ── 本体サイトと同じ Tailwind v4 + daisyUI v5 のテーマをそのまま共有する
  • 保守の鎖を増やしたくなかった ── テンプレートエンジンや独自 DSL を学び直す必要のない、Rust だけで完結する保守動線
  • 「自分たちで書く」という姿勢そのものが、工房の名刺になる ── 何で動いているかを語れるサイトでありたい

構成

  • SSG 本体: Rust 1.85 / edition 2024。pulldown-cmark で Markdown を HTML 化し、maud でテンプレートを記述
  • ハイライト & OGP: syntect でビルド時に静的に着色、resvg で記事ごとの OGP 画像を自動生成
  • 付随アセット: RSS / sitemap / JSON-LD をすべてビルドパイプラインで自動出力
  • 配信: Cloudflare Workers Assets。blog.nakashima-craft.com で本体と同じ Zone に同居

SEO・セキュリティの土台

ブログは「あとから」育つメディアなので、土台だけは最初に固めました。

  • 全ページに canonical / OGP / Twitter Card / 構造化データ (BlogPosting / BreadcrumbList / Organization) を出力
  • <meta name="robots">index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1 で固定
  • public/_headers に CSP / HSTS / X-Frame-Options / Referrer-Policy / Permissions-Policy を集約
  • sitemap.xml は canonical のみ、feed.xml は抜粋のみ (重複コンテンツ回避)

仕上がり

公開 URL は blog.nakashima-craft.com。 本体サイト・ギャラリー・ブログの 3 つが、同じ工房から出てきたものだと一目で分かる質感で繋がっています。

Markdown を 1 つ書き足して make deploy するだけで、OGP も sitemap も RSS も更新される ── 「ていねいに、長く。」を、運用の側からも体現するための土台です。