<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Azure on Khang Nghiem</title><link>https://www.khangnghiem.com/ja/tags/azure/</link><description>Recent content in Azure on Khang Nghiem</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Mon, 08 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.khangnghiem.com/ja/tags/azure/index.xml" rel="self" type="application/rss+xml"/><item><title>このブログの作り方 — Hugo、カスタムテーマ、Azureへの自動デプロイ</title><link>https://www.khangnghiem.com/ja/post/how-i-built-this-blog-06-2026/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.khangnghiem.com/ja/post/how-i-built-this-blog-06-2026/</guid><description>&lt;p&gt;このブログは完全に無料で動いています — 管理サーバーなし、データベースなし、ランタイムなし。新しいmarkdownファイルをGitHubにpushすると、30秒ほどで&lt;a href="https://www.khangnghiem.com/"&gt;khangnghiem.com&lt;/a&gt;にそのまま公開されます。SSHも、再起動も、月々のホスティング料金も不要です。&lt;/p&gt;
&lt;p&gt;この記事では、スタック全体を解説します。Hugoとは何か・どう動くか、コンテンツの構成方法、ゼロから作ったカスタムテーマ、多言語対応（ベトナム語・英語・日本語）、そしてGitHub ActionsとAzure Static Web Appsを使った自動CI/CDパイプラインについて。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="hugoとは何かなぜ選んだか"&gt;Hugoとは何か、なぜ選んだか&lt;/h2&gt;
&lt;p&gt;Hugoは&lt;strong&gt;静的サイトジェネレーター&lt;/strong&gt;です。markdownファイルを入力として受け取り、純粋なHTML・CSS・JSを出力するプログラムです。サーバーサイドレンダリングも、データベースも、ランタイムの依存関係も不要です。結果は、どんなCDNやWebサーバーからでも配信できる静的ファイルを含む &lt;code&gt;public/&lt;/code&gt; フォルダです。&lt;/p&gt;
&lt;p&gt;Hugoを選んだ理由は三つあります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ビルドが速い。&lt;/strong&gt; Hugoは記事数に関係なく、数秒でサイト全体をビルドします。10記事以上あるこのブログでも500ms未満でビルドが完了します。Jekyll（Ruby）やNext.jsは大規模になると大幅に遅くなります。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JavaScriptランタイムが不要。&lt;/strong&gt; Node.jsも、&lt;code&gt;npm install&lt;/code&gt;も、&lt;code&gt;node_modules&lt;/code&gt;も不要です。Hugoのインストールは単一のバイナリだけ — すぐに使えます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ページバンドル。&lt;/strong&gt; Hugoでは各記事が独自のフォルダに入り、markdownと画像を一緒に管理できます。画像を別の場所に置いて絶対パスで参照するより、はるかに便利です。&lt;/p&gt;
&lt;h3 id="hugoの仕組み--markdownからwebサイトへ"&gt;Hugoの仕組み — markdownからWebサイトへ&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;content/ hugo.toml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; post/ (設定)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; java-threads/ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; index.md ──────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; main.jpg │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; page/ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; about/index.md ──────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;themes/blog/ Hugo ビルドエンジン
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; layouts/ │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; _default/ │ 1. 設定を読み込む
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; baseof.html ────────────────┤ 2. コンテンツツリーを走査
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; single.html ────────────────┤ 3. markdown → HTML に変換
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; list.html ──────────────────┤ 4. テンプレートを適用
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; assets/ │ 5. アセットを処理（CSS、JS）
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; css/main.css ──────────────────┤ 6. 出力を書き込む
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; js/main.js ────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; public/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; post/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; java-threads/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; index.html ← 完成したHTML、配信準備完了
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; page/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; about/index.html
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; index.html
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; index.json ← 検索インデックス
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;hugo --minify&lt;/code&gt; を実行すると、エンジンは：&lt;/p&gt;</description></item></channel></rss>