<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
  <title>Deepanshu Gautam · ものづくりのノート</title>
  <link href="https://www.deepanshugautam.com/ja/notes"/>
  <link rel="self" href="https://www.deepanshugautam.com/ja/notes/feed.xml"/>
  <id>https://www.deepanshugautam.com/ja/notes/feed.xml</id>
  <updated>2026-11-07T00:00:00+09:00</updated>
  <author><name>Deepanshu Gautam</name></author>
  <entry>
    <title>Webサイトを「プロダクト」として作り直した</title>
    <link href="https://www.deepanshugautam.com/ja/notes/rebuilding-my-website"/>
    <id>https://www.deepanshugautam.com/ja/notes/rebuilding-my-website</id>
    <published>2026-11-07T00:00:00+09:00</published>
    <updated>2026-11-07T00:00:00+09:00</updated>
    <summary>deepanshugautam.comをサイトビルダーから移し、デザインシステム、2つの言語、デプロイゲートを備えたサイトにした理由。</summary>
    <content type="html">&lt;p&gt;このサイトは長い間、サイトビルダー上の1ページでした。短い自己紹介と、アプリがひとつ、そしてApp Storeからリンクされているプライバシーポリシー。それで十分でしたが、&lt;em&gt;自分のもの&lt;/em&gt;ではありませんでした。テストもバージョン管理も高速化もできず、変更はすべて他人のエディタでのクリック作業でした。&lt;/p&gt;
&lt;p&gt;そこで、プロダクトを作るのと同じやり方で作り直しました。&lt;/p&gt;
&lt;h2&gt;まずデザインシステムから&lt;/h2&gt;
&lt;p&gt;サイトはページではなくトークンから始まります。インドのサフラン、日本の朱色、昼は和紙、夜は墨というパレット、文字と余白のスケール、そしていくつかのコンポーネント。各機能は &lt;code&gt;--color-text&lt;/code&gt; や &lt;code&gt;--color-japan-text&lt;/code&gt; のような&lt;em&gt;役割&lt;/em&gt;だけを使い、生の色コードを書くとビルドが失敗します。ライトモードとダークモードは自然に揃います。&lt;/p&gt;
&lt;h2&gt;ビルド時に、2つの言語でページを生成&lt;/h2&gt;
&lt;p&gt;すべてのページはビルド時に、言語ごとに素のHTMLとして生成されます。英語は &lt;code&gt;/&lt;/code&gt;、日本語は &lt;code&gt;/ja&lt;/code&gt; です。文章は言語ごとにひとつのYAMLファイルにまとまっていて、レンダラーはすべてをデフォルトでエスケープするので、翻訳がマークアップを壊すことはありません。検索エンジンには &lt;code&gt;hreflang&lt;/code&gt; 付きの本物のHTMLを、訪問者にはJavaScriptが動く前から使えるページを届けます。&lt;/p&gt;
&lt;h2&gt;URLは約束&lt;/h2&gt;
&lt;p&gt;旧サイトには、App StoreからリンクされているBudget Buddyのプライバシーポリシーのように、他の人が頼りにしているURLがありました。それらはまったく同じアドレスのまま残し、ひとつでも消えればユニットテストが失敗するようにしています。&lt;/p&gt;
&lt;h2&gt;本番の前にゲートを&lt;/h2&gt;
&lt;p&gt;公開する前に、同じ高速チェックを手元とCloudflareの両方で実行します。Lint、型チェック、ユニットテスト、そしてコンテンツのチェック（翻訳漏れ、リンク切れ、古いアイコンやSNSカード）。ChromiumとiPhoneのWebKitでのブラウザテストでは、ライト・ダーク両方のアクセシビリティも含めて全ページを確認します。どれかが失敗すれば何も公開されず、最後の正常なバージョンが残ります。&lt;/p&gt;
&lt;p&gt;個人サイトには大げさな仕組みかもしれません。でも、こういう仕組みを作るのが好きですし、これで安心して改善を続けられます。**完璧じゃなくても、始めていい。**ただ、続けるならテストがあると心強いです。&lt;/p&gt;
</content>
  </entry>
</feed>
