コンテンツへスキップ
濱田 泰源

このサイトを TanStack Solid Start で作った理由

Read in English

私は10年経験のフルスタックエンジニアで、現在は海外チームとのリモート契約案件を探しています。このサイトは私のポートフォリオでありブログでもあります。今回は、なぜこのサイトを Solid.js + TanstackStart 構成にしたのかを書きます。

なぜ個人サイトなのか

求人プラットフォームはマッチング側の都合で最適化されていて、詳細に私がこれまでに何を作ったか・何をしてきたかを表現するのには向いていないと感じています。 これに対して個人サイトはレジュメに載せられ、完全に自分自身でコントロールできて自分を表現できる場所です。文字数制限もなく、英語と日本語の両方で自分の言葉で職歴を語れます。

なぜ TanStack Solid Start なのか

私は日頃 React と Vue を使っているので、あえて仕事で使っていないスタックを選びました。

理由は2つ:

  1. 新しいスタックを使ってみることが評価力を保つ。 私の最近の仕事の一つとして、AI支援開発がどこで機能し、どこで失敗するかを見極めることです。これまで使ったことのないフレームワークで作るのはまさにこれに対するトレーニングになり、ネタにもなります。
  2. TanstackStart は静的サイトに適してる。 TanStack Start はすべてのルートをプレーンなHTMLに事前レンダリングします:
// vite.config.ts
import { tanstackStart } from '@tanstack/solid-start/plugin/vite'

export default {
  plugins: [
    tanstackStart({
      prerender: { enabled: true, crawlLinks: true },
    }),
  ],
}

crawlLinks を有効にすると、クローラーが / から内部リンクを辿ってページごとにファイルを書き出します。Cloudflare Pages にデプロイされるのはHTMLとCSS、小さなハイドレーション用ペイロードだけ。サーバーランタイムもデータベースもありません。

TanStack Router の型安全なファイルベースルーティングも本当に快適です。ルートはファイル、パラメータは型付き、Link コンポーネントは to の宛先をコンパイル時に検証してくれます。

URLプレフィックスによるバイリンガル

サイトは / が英語、/ja が日本語です。ブログ記事は言語ごとに独立しています。私の母国語は日本語なので、日本語から英語への翻訳には Nani!? 翻訳 を活用しています。フロントマターの translationKey でペアをリンクし、片方の言語だけの記事も成立します。その場合、言語スイッチャーはもう一方の言語のブログ一覧にフォールバックするようにしています。 Nani!? は AI を利用した、非常に優れた翻訳ツールで愛用しています。作者の catnose さんのファンでもあります。

デザインはミニマルに

アクセントカラーは1色、本文は読みやすい行長の1カラム、ライト/ダークは prefers-color-scheme だけで処理 — 切り替え用のJavaScriptはありません。記事はビルド時にパースされる Markdown ファイルで、marked でレンダリングし、Tailwind の typography プラグインでスタイリングしています。

今後の予定

AIネイティブな開発ワークフローについての記事を増やしていく予定です。Claude Code や Codex をスペック駆動のコンテキストとどう使うか、実際に本番で機能したこと。このような経験をお探しの方は、お気軽に連絡してください。

← 記事一覧