STARUPテックブログ、はじめます
Jiho Ryuu
Software Engineer
こんにちは、STARUPのエンジニアチームです。このたびテックブログを開設しました。
この記事では、ブログ自体をどう作ったか——「記事をコードとして管理する」という設計思想と技術選定について紹介します。
なぜCMSを使わないのか
世の中にはヘッドレスCMSがたくさんありますが、私たちは記事をすべてGitリポジトリ上のMarkdownで管理する方式を選びました。理由は3つあります。
レビューフローを開発と統一できる
記事の公開フローは、普段のコードと完全に同じです。
ブランチ作成 → Markdownで執筆 → Pull Request → レビュー → マージ = 公開
技術記事の品質はレビューで決まります。コードレビューと同じ文化・同じツールチェーンで記事をレビューできるのは、エンジニア組織にとって自然な選択でした。
CIで品質を機械的に担保できる
frontmatterはZodでスキーマ検証しており、必須項目が欠けた記事はビルドエラーで弾かれます。
const postFrontmatterSchema = z.object({
title: z.string().min(1),
description: z.string().min(1),
pubDate: z.coerce.date(),
author: z.string().min(1),
tags: z.array(z.string()).default([]),
draft: z.boolean().default(false),
});
これに加えて、textlintによる日本語校正・リンク切れチェックもCIに組み込んでいく予定です。
ロックインがない
記事は素のMarkdownなので、ZennやQiitaへのクロスポストもスクリプト一本で変換できます。プラットフォームが変わっても資産はそのまま残ります。
技術スタック
| レイヤー | 技術 |
|---|---|
| フレームワーク | Next.js (App Router / SSG) |
| 記事フォーマット | Markdown + MDX |
| スタイリング | Tailwind CSS v4 |
| シンタックスハイライト | Shiki |
| ホスティング | Vercel |
全ページを静的生成(SSG)で配信し、クライアントJSは目次の追従やコードのコピーボタンなど最小限に抑えています。
このブログのUIについて
お気づきの方もいるかと思いますが、このブログはVS Codeのようなエディタを模したUIです。左のエクスプローラーには記事がファイルツリーとして並び、下部のステータスバーには読了時間が表示されています。
エンジニアが毎日見ている画面をブログとして再構築することで、「コードを書く会社」であることをデザインそのもので伝えたい——そんな意図を込めています。
これから書いていくこと
- プロダクト開発で得た技術知見(アーキテクチャ、パフォーマンス改善)
- 技術選定の意思決定の記録
- 開発チームのカルチャーやAI活用の取り組み
月1〜2本のペースで、誠実かつ具体的に書いていきます。どうぞよろしくお願いします。