<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Quarto Issues CMS</title>
<link>https://watanabe3tipapa.github.io/issues-quarto-cms/</link>
<atom:link href="https://watanabe3tipapa.github.io/issues-quarto-cms/index.xml" rel="self" type="application/rss+xml"/>
<description>GitHub Issues / Discussions を CMS にした Quarto ブログ</description>
<generator>quarto-1.9.37</generator>
<lastBuildDate>Sun, 02 Aug 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Astro CMS と Quarto CMS の比較：移植元からの変化を整理する</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/astro-vs-quarto-cms/</link>
  <description><![CDATA[ 





<section id="astro-版-cms-から-quarto-版への移行" class="level1">
<h1>Astro 版 CMS から Quarto 版への移行</h1>
<p>この CMS（issues-quarto-cms）は、Astro で実装されていた <a href="https://github.com/watanabe3tipapa/issues-astro-cms">issues-astro-cms</a> の構成を <strong>Quarto に置き換えた</strong>ものです。同じ発想（GitHub Issues / Discussions を CMS にする）を、生成エンジンだけ変えています。</p>
<section id="共通している部分" class="level2">
<h2 class="anchored" data-anchor-id="共通している部分">共通している部分</h2>
<table class="caption-top table">
<thead>
<tr class="header">
<th>項目</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>原稿</td>
<td>GitHub Issues / Discussions（<code>status:published</code> ラベル）</td>
</tr>
<tr class="even">
<td>変換</td>
<td>GitHub Actions + Node.js（<code>scripts/</code> をほぼ移植）</td>
</tr>
<tr class="odd">
<td>公開</td>
<td>GitHub Pages（Project Site）</td>
</tr>
<tr class="even">
<td>記事の更新</td>
<td>ラベル変更・Issue 編集で自動ビルド</td>
</tr>
</tbody>
</table>
</section>
<section id="変わった部分" class="level2">
<h2 class="anchored" data-anchor-id="変わった部分">変わった部分</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>Astro 版</th>
<th>Quarto 版</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>原稿の出力先</td>
<td><code>src/content/posts/{slug}.md</code></td>
<td><code>posts/{slug}/index.qmd</code></td>
</tr>
<tr class="even">
<td>生成コマンド</td>
<td><code>astro build</code></td>
<td><code>quarto render</code></td>
</tr>
<tr class="odd">
<td>記事の型安全</td>
<td><code>content.config.ts</code>（zod）</td>
<td>スクリプト側で検証（gray-matter）</td>
</tr>
<tr class="even">
<td>コード実行</td>
<td>不可（MD のみ）</td>
<td><strong>R / Python / Julia を実行・埋め込み</strong></td>
</tr>
<tr class="odd">
<td>検索</td>
<td>自前実装</td>
<td>Quarto 標準（<code>search.json</code>）</td>
</tr>
<tr class="even">
<td>サイトマップ / RSS</td>
<td>プラグイン</td>
<td>Quarto 標準</td>
</tr>
</tbody>
</table>
</section>
<section id="quarto-版の強み" class="level2">
<h2 class="anchored" data-anchor-id="quarto-版の強み">Quarto 版の強み</h2>
<section id="コード実行ができる最大の違い" class="level3">
<h3 class="anchored" data-anchor-id="コード実行ができる最大の違い">1. コード実行ができる（最大の違い）</h3>
<p>Astro 版では記事は「純粋な Markdown」だけでした。Quarto 版は：</p>
<div id="cell-fig-compare" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb1-2">plt.plot([<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>])</span>
<span id="cb1-3">plt.show()</span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div id="fig-compare" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-compare-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://watanabe3tipapa.github.io/issues-quarto-cms/posts/astro-vs-quarto-cms/index_files/figure-html/fig-compare-output-1.png" width="571" height="411" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-compare-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Quarto 版で実行できるグラフ
</figcaption>
</figure>
</div>
</div>
</div>
<p>のように、<strong>実行結果つきの図を記事に埋め込めます</strong>。データ分析ブログや教材には圧倒的に有利です。</p>
</section>
<section id="多形式出力将来拡張しやすい" class="level3">
<h3 class="anchored" data-anchor-id="多形式出力将来拡張しやすい">2. 多形式出力（将来拡張しやすい）</h3>
<p>同じ原稿を HTML / PDF / Word / スライドに展開できる素地があります。</p>
</section>
<section id="検索seo-が標準装備" class="level3">
<h3 class="anchored" data-anchor-id="検索seo-が標準装備">3. 検索・SEO が標準装備</h3>
<p>サイト内検索・<code>sitemap.xml</code>・OG カードが設定だけで動きます。</p>
</section>
</section>
<section id="quarto-版の注意点" class="level2">
<h2 class="anchored" data-anchor-id="quarto-版の注意点">Quarto 版の注意点</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>説明</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>型安全</td>
<td>Astro の Content Collections ほどの「コンパイル時チェック」はない。代わりにスクリプトの単体テスト（<code>npm test</code>）で変換を検証</td>
</tr>
<tr class="even">
<td>ビルド時間</td>
<td>コード実行があるとビルドが長くなる。<code>freeze: auto</code> で軽減</td>
</tr>
<tr class="odd">
<td>UI カスタマイズ</td>
<td>Astro のコンポーネントほど柔軟ではない。CSS / テーマで対応（この CMS は neo brutalism を CSS で再現）</td>
</tr>
</tbody>
</table>
</section>
<section id="どちらを選ぶか" class="level2">
<h2 class="anchored" data-anchor-id="どちらを選ぶか">どちらを選ぶか</h2>
<table class="caption-top table">
<thead>
<tr class="header">
<th>目的</th>
<th>おすすめ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>静的ブログ・技術メモ中心</td>
<td>Astro 版（軽い・型安全）</td>
</tr>
<tr class="even">
<td>データ分析・コード付き記事が中心</td>
<td><strong>Quarto 版（本サイト）</strong></td>
</tr>
<tr class="odd">
<td>両方</td>
<td>Quarto 版（コードはオプション扱い）</td>
</tr>
</tbody>
</table>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>設計思想（GitHub を CMS にする）はそのまま、生成エンジンを Astro → Quarto に置き換え</li>
<li><strong>コード実行・検索・SEO の標準装備</strong>が Quarto 版の強み</li>
<li>型安全や UI の自由度は Astro 版が上。目的に応じて選ぶのが良い</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/astro-vs-quarto-cms/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Astro と Quarto の技術スタックを徹底比較する</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/astro-vs-quarto-tech-stack/</link>
  <description><![CDATA[ 





<section id="astro-と-quarto-の技術スタック比較" class="level1">
<h1>Astro と Quarto の技術スタック比較</h1>
<p>この CMS（issues-quarto-cms）は、元々 Astro で作られていました。ここでは <strong>「技術スタック」という視点</strong>で Astro と Quarto を比較し、どういう場面でどちらを選ぶべきかを整理します。</p>
<section id="両者の立ち位置がそもそも違う" class="level2">
<h2 class="anchored" data-anchor-id="両者の立ち位置がそもそも違う">両者の立ち位置がそもそも違う</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>Astro</th>
<th>Quarto</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>分類</td>
<td>Web フレームワーク（静的サイトジェネレーター）</td>
<td>文書エンジン（計算対応ドキュメントツール）</td>
</tr>
<tr class="even">
<td>得意分野</td>
<td>Web サイト・アプリっぽい UI の構築</td>
<td>論文・レポート・教材・ブログの執筆</td>
</tr>
<tr class="odd">
<td>設計思想</td>
<td>「島（islands）アーキテクチャ」でページを最適化</td>
<td>「1原稿 → 多形式出力」の再現可能な執筆</td>
</tr>
</tbody>
</table>
<p>つまり <strong>「Web アプリを作るための道具」vs「文章と計算をまとめる道具」</strong>という違いが根底にあります。</p>
</section>
<section id="言語エコシステム" class="level2">
<h2 class="anchored" data-anchor-id="言語エコシステム">言語・エコシステム</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>Astro</th>
<th>Quarto</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>メイン言語</td>
<td>JavaScript / TypeScript</td>
<td>YAML + Markdown（本体）＋ R / Python / Julia / JS（実行）</td>
</tr>
<tr class="even">
<td>ランタイム</td>
<td>Node.js</td>
<td>変換は Pandoc / Deno。実行は R / Python 等のカーネル</td>
</tr>
<tr class="odd">
<td>パッケージ管理</td>
<td>npm（世界最大の JS エコシステム）</td>
<td>pip / CRAN / Julia レジストリ</td>
</tr>
<tr class="even">
<td>コミュニティ</td>
<td>フロントエンド寄り（React 等との連携が豊富）</td>
<td>データサイエンス・学術寄り（Posit 製）</td>
</tr>
</tbody>
</table>
</section>
<section id="レンダリングモデル" class="level2">
<h2 class="anchored" data-anchor-id="レンダリングモデル">レンダリングモデル</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>Astro</th>
<th>Quarto</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ページ生成</td>
<td>コンポーネント（.astro）をビルド時に HTML 化</td>
<td><code>.qmd</code>（Markdown）をビルド時に HTML / PDF 等へ変換</td>
</tr>
<tr class="even">
<td>動的 UI</td>
<td>コンポーネントの「島」を部分ハイドレーション</td>
<td>基本は静的。Observable JS で一部インタラクティブ</td>
</tr>
<tr class="odd">
<td>スタイリング</td>
<td>Tailwind / CSS / コンポーネント内 CSS</td>
<td>テーマ（bootswatch）+ カスタム CSS</td>
</tr>
<tr class="even">
<td>型安全なコンテンツ</td>
<td>Content Collections（Zod で frontmatter 検証）</td>
<td>なし（スクリプト側で検証）</td>
</tr>
</tbody>
</table>
</section>
<section id="コード実行最大の差" class="level2">
<h2 class="anchored" data-anchor-id="コード実行最大の差">コード実行（最大の差）</h2>
<div id="cell-fig-techstack" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb1-2">labels <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Astro"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Quarto"</span>]</span>
<span id="cb1-3">times <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>]</span>
<span id="cb1-4">plt.bar(labels, times)</span>
<span id="cb1-5">plt.ylabel(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"コード実行コスト（相対）"</span>)</span>
<span id="cb1-6">plt.show()</span></code></pre></div></div>
<div class="cell-output cell-output-stderr">
<pre><code>/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12467 (\N{KATAKANA LETTER KO}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12540 (\N{KATAKANA-HIRAGANA PROLONGED SOUND MARK}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12489 (\N{KATAKANA LETTER DO}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 23455 (\N{CJK UNIFIED IDEOGRAPH-5B9F}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 34892 (\N{CJK UNIFIED IDEOGRAPH-884C}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12473 (\N{KATAKANA LETTER SU}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 12488 (\N{KATAKANA LETTER TO}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 65288 (\N{FULLWIDTH LEFT PARENTHESIS}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAPH-76F8}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 23550 (\N{CJK UNIFIED IDEOGRAPH-5BFE}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)
/opt/hostedtoolcache/Python/3.12.13/x64/lib/python3.12/site-packages/IPython/core/pylabtools.py:158: UserWarning: Glyph 65289 (\N{FULLWIDTH RIGHT PARENTHESIS}) missing from font(s) DejaVu Sans.
  fig.canvas.print_figure(bytes_io, **kw)</code></pre>
</div>
<div class="cell-output cell-output-display">
<div id="fig-techstack" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-techstack-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://watanabe3tipapa.github.io/issues-quarto-cms/posts/astro-vs-quarto-tech-stack/index_files/figure-html/fig-techstack-output-2.png" width="577" height="411" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-techstack-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: Quarto なら実行結果の図を埋め込める
</figcaption>
</figure>
</div>
</div>
</div>
<table class="caption-top table">
<thead>
<tr class="header">
<th>項目</th>
<th>Astro</th>
<th>Quarto</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>R / Python 実行</td>
<td>不可（MD のみ）</td>
<td><strong>実行して図・表を自動埋め込み</strong></td>
</tr>
<tr class="even">
<td>結果の再現性</td>
<td>手動でスクショを貼る</td>
<td>コードを直すと自動で再計算</td>
</tr>
<tr class="odd">
<td>データ分析記事</td>
<td>苦手</td>
<td>本領</td>
</tr>
</tbody>
</table>
</section>
<section id="出力形式" class="level2">
<h2 class="anchored" data-anchor-id="出力形式">出力形式</h2>
<table class="caption-top table">
<thead>
<tr class="header">
<th>形式</th>
<th>Astro</th>
<th>Quarto</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>HTML（Web / ブログ）</td>
<td>◎</td>
<td>◎</td>
</tr>
<tr class="even">
<td>PDF / Word / PowerPoint</td>
<td>不可</td>
<td>◎（<code>--to pdf/docx/pptx</code>）</td>
</tr>
<tr class="odd">
<td>スライド / 書籍</td>
<td>別構成が必要</td>
<td>◎（reveal.js / book）</td>
</tr>
</tbody>
</table>
</section>
<section id="デプロイ運用" class="level2">
<h2 class="anchored" data-anchor-id="デプロイ運用">デプロイ・運用</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>Astro</th>
<th>Quarto</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>出力</td>
<td><code>dist/</code></td>
<td><code>_site/</code>（この CMS はここ）</td>
</tr>
<tr class="even">
<td>ホスティング</td>
<td>Pages / Netlify / Vercel / 任意 CDN</td>
<td>Pages / 任意（静的 HTML）</td>
</tr>
<tr class="odd">
<td>検索・sitemap・RSS</td>
<td>プラグインで実装</td>
<td>標準装備（設定のみ）</td>
</tr>
</tbody>
</table>
</section>
<section id="どちらを選ぶか使い分け" class="level2">
<h2 class="anchored" data-anchor-id="どちらを選ぶか使い分け">どちらを選ぶか（使い分け）</h2>
<ul>
<li><strong>Web アプリ寄りのサイト</strong>（ログイン・フォーム・SPA 的な体験）→ <strong>Astro</strong></li>
<li><strong>データ分析・コード付き記事、論文、レポート</strong> → <strong>Quarto</strong></li>
<li><strong>ブログだけで、とにかく軽く速く</strong> → どちらでも。Astro は型安全、Quarto は検索・多形式がお得</li>
<li><strong>GitHub Issues/Discussions を CMS にしたい</strong> → 両対応できるが、<strong>コードを記事に載せたいなら Quarto</strong> が有利</li>
</ul>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>技術スタックで見ると <strong>「JS の Web フレームワーク」と「計算対応の文書エンジン」</strong>は住み分けが明確</li>
<li>この CMS は「執筆 + コード実行 + 多形式」を活かして <strong>Quarto 側</strong>を採用</li>
<li>どちらか一方が「正解」ではなく、<strong>作るものの性質</strong>で選ぶのが正しい</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/astro-vs-quarto-tech-stack/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>この CMS の仕組み：GitHub Issue → GitHub Actions → Quarto → GitHub Pages</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/cms-architecture/</link>
  <description><![CDATA[ 





<section id="この-cms-の全体像" class="level1">
<h1>この CMS の全体像</h1>
<p>このサイトは <strong>「GitHub Issues / Discussions を原稿にする CMS（コンテンツ管理システム）」</strong>です。無料・自動・GitHub 内で完結します。</p>
<section id="つの役割" class="level2">
<h2 class="anchored" data-anchor-id="つの役割">4つの役割</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>役割</th>
<th>コンポーネント</th>
<th>やること</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>① 原稿</td>
<td>GitHub Issues / Discussions</td>
<td>記事を書く場所（CMS の入力画面の代わり）</td>
</tr>
<tr class="even">
<td>② 変換</td>
<td>GitHub Actions + Node.js</td>
<td>公開ラベルの記事を API で取得し <code>.qmd</code> を生成</td>
</tr>
<tr class="odd">
<td>③ 生成</td>
<td>Quarto</td>
<td>一覧・個別ページ・検索を静的生成</td>
</tr>
<tr class="even">
<td>④ 公開</td>
<td>GitHub Pages</td>
<td>生成結果を無料でホスティング</td>
</tr>
</tbody>
</table>
</section>
<section id="データの流れ" class="level2">
<h2 class="anchored" data-anchor-id="データの流れ">データの流れ</h2>
<pre><code>1. 記事を書く（Issue / Discussion）
2. status:published ラベルを付ける
3. GitHub Actions が自動で起動
   ├─ Node.js が GitHub API から記事本文を取得
   ├─ frontmatter を Quarto 用に変換して posts/{slug}/index.qmd を作成
   └─ quarto render で _site/ を生成
4. _site/ が GitHub Pages にデプロイ</code></pre>
</section>
<section id="なぜissue-を書くだけでブログになるのか" class="level2">
<h2 class="anchored" data-anchor-id="なぜissue-を書くだけでブログになるのか">なぜ「Issue を書く」だけでブログになるのか</h2>
<p>Issue / Discussion には次の便利な機能があります。</p>
<ul>
<li><strong>ラベル</strong>で公開/非公開を制御できる</li>
<li><strong>編集履歴</strong>が残る（GitHub 上で全文の差分が見られる）</li>
<li><strong>コメント</strong>で読者とやり取りできる</li>
<li><strong>通知</strong>や <strong>GitHub App 連携</strong>が使える</li>
</ul>
<p>つまり「専用の管理画面」を作らなくても、GitHub が管理画面の役割を果たしてくれます。</p>
</section>
<section id="変換処理のポイント" class="level2">
<h2 class="anchored" data-anchor-id="変換処理のポイント">変換処理のポイント</h2>
<p>GitHub の Issue 本文は次のように書きます（これが記事の「原稿」です）。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb2-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">slug:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> my-first-post</span></span>
<span id="cb2-3"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> My First Post</span></span>
<span id="cb2-4"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">publishedAt:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> 2026-08-02</span></span>
<span id="cb2-5"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">tags:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> [quarto, cms]</span></span>
<span id="cb2-6"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">category:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> blog</span></span>
<span id="cb2-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb2-8"></span>
<span id="cb2-9"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;"># 本文</span></span>
<span id="cb2-10"></span>
<span id="cb2-11">ここに Markdown で書く。</span></code></pre></div></div>
<p>この frontmatter は Node.js スクリプトが読み取り、Quarto 用のフィールド（<code>date</code> / <code>categories</code> / <code>description</code>）に変換して <code>.qmd</code> を生成します。</p>
</section>
<section id="このサイトを動かすファイル" class="level2">
<h2 class="anchored" data-anchor-id="このサイトを動かすファイル">このサイトを動かすファイル</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>ファイル</th>
<th>役割</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>scripts/build-from-both.mjs</code></td>
<td>Issue + Discussion を取得して <code>.qmd</code> 生成</td>
</tr>
<tr class="even">
<td><code>scripts/lib/common.mjs</code></td>
<td>変換ロジックの本体</td>
</tr>
<tr class="odd">
<td><code>.github/workflows/build.yml</code></td>
<td>ビルド + デプロイの自動化</td>
</tr>
<tr class="even">
<td><code>_quarto.yml</code></td>
<td>Quarto のサイト設定</td>
</tr>
</tbody>
</table>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>「原稿 = Issue」「変換 = Actions」「生成 = Quarto」「公開 = Pages」</li>
<li>専用サーバー不要・無料・GitHub 内で完結</li>
<li>記事の公開は「ラベルを付けるだけ」という手軽さが最大の利点</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/cms-architecture/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>記事の書き方：frontmatter と本文の作法をマスターする</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/how-to-write-posts/</link>
  <description><![CDATA[ 





<section id="記事の書き方" class="level1">
<h1>記事の書き方</h1>
<p>この CMS では、<strong>Issue（または Discussion）を1件作る = 記事を1本書く</strong>、という対応です。書き方は「frontmatter（設定）＋ Markdown 本文」の2層構造です。</p>
<section id="frontmatter原稿の先頭の-----ブロック" class="level2">
<h2 class="anchored" data-anchor-id="frontmatter原稿の先頭の-----ブロック">1. frontmatter（原稿の先頭の <code>---</code> ブロック）</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb1-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">slug:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> my-first-post</span></span>
<span id="cb1-3"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> My First Post</span></span>
<span id="cb1-4"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">publishedAt:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> 2026-08-02</span></span>
<span id="cb1-5"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">tags:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> [quarto, cms]</span></span>
<span id="cb1-6"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">excerpt:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> 一覧に表示する短い説明（任意）</span></span>
<span id="cb1-7"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">category:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> blog</span></span>
<span id="cb1-8"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span></code></pre></div></div>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>項目</th>
<th>必須</th>
<th>説明</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>slug</code></td>
<td>必須</td>
<td>URL の一部。<code>my-first-post</code> → <code>/posts/my-first-post/</code>。英数字とハイフン推奨</td>
</tr>
<tr class="even">
<td><code>title</code></td>
<td>必須</td>
<td>記事タイトル</td>
</tr>
<tr class="odd">
<td><code>publishedAt</code></td>
<td>必須</td>
<td>公開日。<code>YYYY-MM-DD</code> 形式</td>
</tr>
<tr class="even">
<td><code>tags</code></td>
<td>任意</td>
<td>タグ（配列）</td>
</tr>
<tr class="odd">
<td><code>excerpt</code></td>
<td>任意</td>
<td>一覧用の要約。無ければ本文冒頭から自動生成</td>
</tr>
<tr class="even">
<td><code>category</code></td>
<td>任意</td>
<td>カテゴリ（1つ）。一覧の絞り込みに使用</td>
</tr>
</tbody>
</table>
<section id="yaml-の注意" class="level3">
<h3 class="anchored" data-anchor-id="yaml-の注意">YAML の注意</h3>
<p>値にコロン <code>:</code> を含む場合は、<strong>必ず二重引用符で囲んで</strong>ください。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb2-1"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> "チュートリアル: 公開手順"   # OK</span></span>
<span id="cb2-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> チュートリアル: 公開手順      # NG（YAML 解析エラー）</span></span></code></pre></div></div>
</section>
</section>
<section id="本文markdown" class="level2">
<h2 class="anchored" data-anchor-id="本文markdown">2. 本文（Markdown）</h2>
<p><code>---</code> の後ろに Markdown を書きます。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb3-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;"># 見出し</span></span>
<span id="cb3-2"></span>
<span id="cb3-3">**強調** や *斜体*、<span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">[</span><span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">リンク</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">](https://example.com)</span> が使えます。</span>
<span id="cb3-4"></span>
<span id="cb3-5"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">- </span>箇条書き</span>
<span id="cb3-6"><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">- </span>箇条書き</span>
<span id="cb3-7"></span>
<span id="cb3-8"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">## コードブロック</span></span>
<span id="cb3-9"></span>
<span id="cb3-10"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```python</span></span>
<span id="cb3-11"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Hello"</span>)</span></code></pre></div></div>
<pre><code>
## 3. コードを実行する（Quarto の強み）

`python` や `r` を波括弧で囲むと、**ビルド時に実行**されます。

````markdown

::: {#35317d34 .cell execution_count=1}
``` {.python .cell-code}
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 1])
plt.show()</code></pre>
<div class="cell-output cell-output-display">
<div>
<figure class="figure">
<p><img src="https://watanabe3tipapa.github.io/issues-quarto-cms/posts/how-to-write-posts/index_files/figure-html/cell-2-output-1.png" width="571" height="411" class="figure-img"></p>
</figure>
</div>
</div>
<p>:::</p>
<p>````</p>
<ul>
<li><code>python</code>（波括弧なし）: 表示のみ（実行しない）</li>
<li><code>{python}</code>: 実行して結果を埋め込む</li>
</ul>
</section>
<section id="画像について" class="level2">
<h2 class="anchored" data-anchor-id="画像について">4. 画像について</h2>
<p>画像は本文に <strong>ドラッグ &amp; ドロップ</strong> で貼ってください。GitHub が自動で URL に変換し、そのまま記事に表示されます。</p>
<pre><code>![説明](https://user-images.githubusercontent.com/...)</code></pre>
</section>
<section id="公開までの流れ" class="level2">
<h2 class="anchored" data-anchor-id="公開までの流れ">5. 公開までの流れ</h2>
<ol type="1">
<li>「New Issue」から <strong>Blog Post</strong> テンプレートを選択</li>
<li>frontmatter と本文を編集して作成</li>
<li>ラベルに <code>status:published</code> を追加</li>
<li>GitHub Actions が自動ビルド → サイトに反映（数分）</li>
</ol>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>原稿は「frontmatter + Markdown」</li>
<li><code>slug</code> が重複しないように、<code>publishedAt</code> を正しく書くのが最低限のルール</li>
<li>あとは GitHub の Markdown をそのまま書けば OK</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/how-to-write-posts/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>marimo を Quarto で使う：リアクティブノートブックとの連携</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/marimo-and-quarto/</link>
  <description><![CDATA[ 





<section id="marimo-と-quarto" class="level1">
<h1>marimo と Quarto</h1>
<p>この CMS の実行環境には、<strong>marimo</strong> という Python の「リアクティブノートブック」も同梱しています。</p>
<section id="marimo-とは" class="level2">
<h2 class="anchored" data-anchor-id="marimo-とは">marimo とは</h2>
<p>marimo は、Python コードを<strong>セル単位で実行し、変数の依存関係を自動追跡</strong>するオープンソースのノートブックです。</p>
<ul>
<li>セルを動かすと、依存しているセルだけ自動で再実行</li>
<li>通常の <code>.ipynb</code>（Jupyter）と違い、<strong>実行順の不整合が起きにくい</strong></li>
<li>GitHub 上でも差分が見やすい <code>.py</code> 形式で保存できる</li>
</ul>
</section>
<section id="なぜ-quarto-と相性がいいのか" class="level2">
<h2 class="anchored" data-anchor-id="なぜ-quarto-と相性がいいのか">なぜ Quarto と相性がいいのか</h2>
<p>Quarto は marimo ノートブックを<strong>そのままレンダリング</strong>できます。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>やり方</th>
<th>コマンド</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>手元でインタラクティブに書く</td>
<td><code>marimo edit notebook.py</code></td>
</tr>
<tr class="even">
<td>ノートブックを HTML に変換</td>
<td><code>quarto render notebook.py</code></td>
</tr>
<tr class="odd">
<td>ノートブックを <code>.qmd</code> に変換</td>
<td><code>quarto convert notebook.py</code></td>
</tr>
</tbody>
</table>
<p>つまり「<strong>marimo で試行錯誤してから、Quarto の記事に展開する</strong>」という流れが自然です。</p>
</section>
<section id="使ってみる手元の環境" class="level2">
<h2 class="anchored" data-anchor-id="使ってみる手元の環境">使ってみる（手元の環境）</h2>
<p>このリポジトリの <code>requirements.txt</code> には marimo が含まれているので、<code>npm run generate</code> の前に依存を入れれば使えます。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode bash code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">python3</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-m</span> venv .venv</span>
<span id="cb1-2"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">source</span> .venv/bin/activate</span>
<span id="cb1-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-r</span> requirements.txt</span>
<span id="cb1-4"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">marimo</span> edit notebook.py</span></code></pre></div></div>
<p>macOS でシステム Python に直接入れると PEP 668 の制限に当たるので、<strong>必ず venv（仮想環境）を使いましょう</strong>。</p>
</section>
<section id="記事への展開例" class="level2">
<h2 class="anchored" data-anchor-id="記事への展開例">記事への展開例</h2>
<p>marimo で書いたロジックを記事に載せる場合、2つの選択肢があります。</p>
<section id="a.-.qmd-に-python-ブロックとして書く推奨" class="level3">
<h3 class="anchored" data-anchor-id="a.-.qmd-に-python-ブロックとして書く推奨">A. <code>.qmd</code> に Python ブロックとして書く（推奨）</h3>
<div id="cell-fig-marimo-style" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb2-2"></span>
<span id="cb2-3">x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">range</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">11</span>)</span>
<span id="cb2-4">y <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> [v <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> v <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> x]</span>
<span id="cb2-5">plt.bar(x, y)</span>
<span id="cb2-6">plt.show()</span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div id="fig-marimo-style" class="quarto-float quarto-figure quarto-figure-center anchored">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-marimo-style-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://watanabe3tipapa.github.io/issues-quarto-cms/posts/marimo-and-quarto/index_files/figure-html/fig-marimo-style-output-1.png" width="579" height="411" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-marimo-style-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: marimo 流に依存関係を意識した例
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="b.-marimo-ノートブックを直接レンダリング" class="level3">
<h3 class="anchored" data-anchor-id="b.-marimo-ノートブックを直接レンダリング">B. marimo ノートブックを直接レンダリング</h3>
<p><code>quarto render notebook.py</code> でノートブックを HTML にでき、<code>quarto convert</code> で <code>.qmd</code> に変換もできます。</p>
</section>
</section>
<section id="注意点" class="level2">
<h2 class="anchored" data-anchor-id="注意点">注意点</h2>
<ul>
<li>marimo は <strong>インタラクティブな作業用</strong>のツールです。公開サイトのビルド（CI）では marimo 自体の実行は行いません（コードは <code>.qmd</code> の Python ブロックとして実行されます）</li>
<li>marimo で試したコードは、記事に載せるときは「実行結果が再現できる」形（seed 固定等）にするのがベター</li>
</ul>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>marimo = 依存関係を自動追跡する Python ノートブック</li>
<li>この CMS の環境に同梱されており、<code>marimo edit</code> で作業可能</li>
<li>試行錯誤は marimo、公開は Quarto（<code>.qmd</code>）という役割分担がおすすめ</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/marimo-and-quarto/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>他のツールの利用可能性：GitHub Issues CMS に使える代替ツールを検討する</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/other-static-site-tools/</link>
  <description><![CDATA[ 





<section id="他のツールの利用可能性" class="level1">
<h1>他のツールの利用可能性</h1>
<p>「GitHub Issues / Discussions を CMS にして、Actions で Markdown を生成し、静的サイトを公開する」という構成は、<strong>Astro / Quarto 以外のツールにもほぼそのまま流用できます</strong>。ここでは主な代替ツールと、Quarto と比べたときの向き不向きを整理します。</p>
<section id="この-cms-の構成共通の骨格" class="level2">
<h2 class="anchored" data-anchor-id="この-cms-の構成共通の骨格">この CMS の構成（共通の骨格）</h2>
<pre><code>Issue / Discussion を書く
  → 公開ラベルの記事を取得して Markdown(.md / .qmd) を生成
  → 静的サイトジェネレーターで HTML 化
  → GitHub Pages にデプロイ</code></pre>
<p>この骨格はどのツールでも同じです。<strong>変わるのは「変換先のファイル形式」と「レンダリングエンジン」だけ</strong>です。</p>
</section>
<section id="静的サイトジェネレーター系" class="level2">
<h2 class="anchored" data-anchor-id="静的サイトジェネレーター系">静的サイトジェネレーター系</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>ツール</th>
<th>言語</th>
<th>特徴</th>
<th>この CMS との相性</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><strong>Hugo</strong></td>
<td>Go</td>
<td>超高速ビルド・テーマ豊富</td>
<td>◎ 記事量が多いブログ向き。テーマ設定が独特</td>
</tr>
<tr class="even">
<td><strong>Eleventy (11ty)</strong></td>
<td>JS</td>
<td>軽量・シンプル・自由度高</td>
<td>◎ 素の HTML/MD で柔軟。学習コスト小</td>
</tr>
<tr class="odd">
<td><strong>Next.js</strong></td>
<td>JS/TS</td>
<td>React ベース・動的機能が強力</td>
<td>○ ブログとしては重厚。SSG も可</td>
</tr>
<tr class="even">
<td><strong>SvelteKit</strong></td>
<td>JS/TS</td>
<td>Svelte で軽量・DX 良好</td>
<td>○ フロントエンド寄りなら有力</td>
</tr>
<tr class="odd">
<td><strong>Docusaurus</strong></td>
<td>React</td>
<td>ドキュメントサイト特化・MDX</td>
<td>○ マニュアル/技術文書向き</td>
</tr>
</tbody>
</table>
</section>
<section id="文書計算系" class="level2">
<h2 class="anchored" data-anchor-id="文書計算系">文書・計算系</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
<col style="width: 25%">
</colgroup>
<thead>
<tr class="header">
<th>ツール</th>
<th>言語</th>
<th>特徴</th>
<th>この CMS との相性</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><strong>R Markdown / bookdown</strong></td>
<td>R</td>
<td>Quarto の前身。R 一体</td>
<td>○ 歴史は長いが Quarto が後継</td>
</tr>
<tr class="even">
<td><strong>Jupyter Book</strong></td>
<td>Python</td>
<td>Jupyter ノートブックを書籍化</td>
<td>○ Python 記事なら有力</td>
</tr>
<tr class="odd">
<td><strong>MyST</strong></td>
<td>Markdown</td>
<td>学術向け（Sphinx/Jupyter 互換）</td>
<td>○ 論文・引用が充実</td>
</tr>
<tr class="even">
<td><strong>mdBook</strong></td>
<td>Rust</td>
<td>Rust ドキュメント・軽量</td>
<td>○ シンプルな本なら</td>
</tr>
</tbody>
</table>
</section>
<section id="quarto-と比べた評価軸" class="level2">
<h2 class="anchored" data-anchor-id="quarto-と比べた評価軸">Quarto と比べた評価軸</h2>
<section id="コード実行の埋め込み" class="level3">
<h3 class="anchored" data-anchor-id="コード実行の埋め込み">1. コード実行の埋め込み</h3>
<ul>
<li><strong>Quarto が最強</strong>: <code>{python}</code> / <code>{r}</code> を書けば実行して図を自動埋め込み</li>
<li>同程度: R Markdown / Jupyter Book / MyST</li>
<li>できない: Hugo / Eleventy / Next.js / SvelteKit / Docusaurus / mdBook（プラグインで外部連携は可能）</li>
</ul>
</section>
<section id="ビルド速度" class="level3">
<h3 class="anchored" data-anchor-id="ビルド速度">2. ビルド速度</h3>
<ul>
<li><strong>最速: Hugo</strong>（Go 製で巨大サイトでも速い）</li>
<li>次点: Eleventy / mdBook</li>
<li>遅め: Quarto（コード実行があると特に）。<code>freeze: auto</code> で緩和</li>
</ul>
</section>
<section id="出力形式の多様さ" class="level3">
<h3 class="anchored" data-anchor-id="出力形式の多様さ">3. 出力形式の多様さ</h3>
<ul>
<li><strong>Quarto / R Markdown</strong>: HTML だけでなく PDF / Word / スライド / 書籍</li>
<li>それ以外: ほぼ HTML のみ（Pandoc を挟めば可能だが手間）</li>
</ul>
</section>
<section id="検索seo-の手軽さ" class="level3">
<h3 class="anchored" data-anchor-id="検索seo-の手軽さ">4. 検索・SEO の手軽さ</h3>
<ul>
<li><strong>Quarto / Docusaurus / Hugo</strong>: 標準機能 or 簡単に組み込み</li>
<li>Eleventy / Next.js: プラグイン・自作が必要</li>
</ul>
</section>
</section>
<section id="なぜこの-cms-は-quarto-なのか" class="level2">
<h2 class="anchored" data-anchor-id="なぜこの-cms-は-quarto-なのか">なぜこの CMS は Quarto なのか</h2>
<p>この CMS（issues-quarto-cms）が Quarto を選んだ理由：</p>
<ol type="1">
<li><strong>コード実行 + 結果埋め込み</strong>が記事になる（本サイトの記事がそのまま実例）</li>
<li>検索・sitemap・RSS が<strong>設定だけで動く</strong></li>
<li><strong>多形式出力</strong>への拡張余地（同じ原稿を PDF にできる）</li>
<li>GitHub Actions + <code>quarto render</code> が<strong>公式の設定アクション</strong>で簡単に組み込める</li>
</ol>
</section>
<section id="逆に別のツールのほうが良いケース" class="level2">
<h2 class="anchored" data-anchor-id="逆に別のツールのほうが良いケース">逆に「別のツールのほうが良い」ケース</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>状況</th>
<th>おすすめ</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>記事が数千件以上でビルドが重い</td>
<td>Hugo</td>
</tr>
<tr class="even">
<td>React の動的コンポーネントを記事に埋め込みたい</td>
<td>Next.js / Astro / Docusaurus</td>
</tr>
<tr class="odd">
<td>Rust のプロジェクトのマニュアルを作りたい</td>
<td>mdBook</td>
</tr>
<tr class="even">
<td>Python だけで完結させたい</td>
<td>Jupyter Book</td>
</tr>
<tr class="odd">
<td>学術論文・引用を重視</td>
<td>MyST / LaTeX 直書き</td>
</tr>
</tbody>
</table>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>「Issue を CMS にする」骨格は <strong>どのツールでも流用可能</strong></li>
<li>選定の決め手は <strong>コード実行・出力形式・ビルド速度</strong> のどれを優先するか</li>
<li>この CMS は「コード付き記事 + 多形式 + 手軽さ」で <strong>Quarto</strong> を採用</li>
<li>目的が変わったら、<code>scripts/</code> の出力先とレンダラーを差し替えるだけで他のツールに移行できます</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/other-static-site-tools/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>公開・非公開の切り替え：status:published / status:draft ラベルの使い方</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/publish-workflow-labels/</link>
  <description><![CDATA[ 





<section id="公開状態はラベルで管理する" class="level1">
<h1>公開状態は「ラベル」で管理する</h1>
<p>この CMS では、記事の公開状態を <strong>GitHub のラベル</strong>で管理します。専用の管理画面は必要ありません。</p>
<section id="使うラベル" class="level2">
<h2 class="anchored" data-anchor-id="使うラベル">使うラベル</h2>
<table class="caption-top table">
<thead>
<tr class="header">
<th>ラベル</th>
<th>意味</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>status:draft</code></td>
<td>下書き（サイトに表示されない）</td>
</tr>
<tr class="even">
<td><code>status:published</code></td>
<td>公開（サイトに表示される）</td>
</tr>
</tbody>
</table>
<p>新規 Issue はテンプレートにより <strong><code>status:draft</code> で作成</strong>されます。公開したくなったらラベルを <code>status:published</code> に変更するだけです。</p>
</section>
<section id="切り替え方" class="level2">
<h2 class="anchored" data-anchor-id="切り替え方">切り替え方</h2>
<section id="公開する" class="level3">
<h3 class="anchored" data-anchor-id="公開する">公開する</h3>
<ol type="1">
<li>Issue（または Discussion）を開く</li>
<li>右サイドバーの「Labels」をクリック</li>
<li><code>status:published</code> を追加し、<code>status:draft</code> を外す</li>
</ol>
</section>
<section id="下書きに戻す非公開化" class="level3">
<h3 class="anchored" data-anchor-id="下書きに戻す非公開化">下書きに戻す（非公開化）</h3>
<p>逆に <code>status:draft</code> を付けて、<code>status:published</code> を外します。</p>
</section>
</section>
<section id="何が起きるのか" class="level2">
<h2 class="anchored" data-anchor-id="何が起きるのか">何が起きるのか</h2>
<p>ラベルを変更すると <strong>GitHub Actions が自動で再ビルド</strong>します。</p>
<ul>
<li>公開にした記事 → <code>posts/{slug}/index.qmd</code> が生成され、サイトに表示</li>
<li>非公開にした記事 → 次回ビルドで一覧から消える</li>
</ul>
<p>つまり「<strong>ラベルを変える = サイトの内容を変える</strong>」という体験です。</p>
</section>
<section id="実際の動作技術的な補足" class="level2">
<h2 class="anchored" data-anchor-id="実際の動作技術的な補足">実際の動作（技術的な補足）</h2>
<p>ビルドスクリプトは GitHub API で <strong><code>label:"status:published"</code> の記事だけ</strong>を取得します。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode javascript code-with-copy"><code class="sourceCode javascript"><span id="cb1-1"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">const</span> q <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> <span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;">`repo:</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">${</span>REPO<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="vs" style="color: #20794D;
background-color: null;
font-style: inherit;"> label:"status:published" is:issue`</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">;</span></span></code></pre></div></div>
<p><code>status:published</code> が付いていない記事はそもそも取得されないため、<strong>下書きが誤って公開されることはありません</strong>。</p>
</section>
<section id="その他のトリガー" class="level2">
<h2 class="anchored" data-anchor-id="その他のトリガー">その他のトリガー</h2>
<p>再ビルドが走るのはラベル変更だけではありません。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>きっかけ</th>
<th>例</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>イベント</td>
<td>Issue の作成 / 編集 / ラベル変更</td>
</tr>
<tr class="even">
<td>定期</td>
<td>15分ごとのスケジュールビルド</td>
</tr>
<tr class="odd">
<td>手動</td>
<td>Actions タブから <code>workflow_dispatch</code></td>
</tr>
</tbody>
</table>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>公開/非公開は <code>status:published</code> / <code>status:draft</code> ラベルで制御</li>
<li>新規記事は自動で「下書き」スタートなので安心</li>
<li>ラベルを変えるだけで、数分後にサイトへ反映される</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/publish-workflow-labels/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Quarto のメリット①：R / Python / Julia のコードを記事の中でそのまま実行できる</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-code-execution/</link>
  <description><![CDATA[ 





<section id="コードを実行して結果を埋め込める" class="level1">
<h1>コードを実行して結果を埋め込める</h1>
<p>Quarto の最大の特徴は、<strong>Markdown 本文の中にコードブロックを書くと、レンダリング時にそれを実行して結果（図・表・数値）を自動で埋め込んでくれる</strong>ことです。</p>
<section id="何が嬉しいのか" class="level2">
<h2 class="anchored" data-anchor-id="何が嬉しいのか">何が嬉しいのか</h2>
<p>普通のブログでは「コードを書いて、自分で実行して、スクリーンショットを貼って、その結果の説明を書く」という手順が必要です。Quarto なら：</p>
<ul>
<li><strong>コードがそのまま記事になる</strong>（コピペの手間なし）</li>
<li><strong>結果が常に最新</strong>（コードが変われば自動で再計算）</li>
<li><strong>図は自動生成</strong>（画像アップロード不要）</li>
<li><strong>再現性がある</strong>（読者も同じコードを実行して検証できる）</li>
</ul>
</section>
<section id="具体的な例python" class="level2">
<h2 class="anchored" data-anchor-id="具体的な例python">具体的な例：Python</h2>
<p>下のコードブロックは、この記事をビルドするときに <strong>Quarto が実際に実行</strong>しています。</p>
<div id="cell-fig-sine" class="cell" data-execution_count="1">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> matplotlib.pyplot <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> plt</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> numpy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> np</span>
<span id="cb1-3"></span>
<span id="cb1-4">x <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> np.linspace(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">4</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> np.pi, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">200</span>)</span>
<span id="cb1-5">plt.plot(x, np.sin(x), label<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sin(x)"</span>)</span>
<span id="cb1-6">plt.xlabel(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"x"</span>)</span>
<span id="cb1-7">plt.ylabel(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"y"</span>)</span>
<span id="cb1-8">plt.legend()</span>
<span id="cb1-9">plt.show()</span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div id="fig-sine" class="quarto-float quarto-figure quarto-figure-center anchored" alt="正弦波の折れ線グラフ">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-sine-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-code-execution/index_files/figure-html/fig-sine-output-1.png" alt="正弦波の折れ線グラフ" width="610" height="430" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-sine-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: sin 関数のプロット（自動生成）
</figcaption>
</figure>
</div>
</div>
</div>
<p>この記事が表示されているなら、上の図は「実行された結果」です。画像を1枚もアップロードしていません。</p>
</section>
<section id="コードを非表示にする" class="level2">
<h2 class="anchored" data-anchor-id="コードを非表示にする">コードを非表示にする</h2>
<p>「コードは見せたくない、結果だけ見せたい」場合は <code>#| echo: false</code> を付けるだけです。</p>
<div id="79fe7b56" class="cell" data-execution_count="2">
<div class="cell-output cell-output-stdout">
<pre><code>この行は HTML に表示されません: 77</code></pre>
</div>
</div>
</section>
<section id="対応言語" class="level2">
<h2 class="anchored" data-anchor-id="対応言語">対応言語</h2>
<ul>
<li><strong>R</strong>（統計解析・データサイエンスの本場）</li>
<li><strong>Python</strong>（機械学習・Web 系）</li>
<li><strong>Julia</strong>（科学計算）</li>
<li><strong>Observable JS</strong>（インタラクティブな可視化）</li>
</ul>
</section>
<section id="この-cms-での注意" class="level2">
<h2 class="anchored" data-anchor-id="この-cms-での注意">この CMS での注意</h2>
<ul>
<li>Python コードはこの CMS のビルド環境に<strong>既定で有効</strong>です（<code>requirements.txt</code> で依存を管理）</li>
<li>R を使いたい場合は <code>.github/workflows/build.yml</code> の <code>ENABLE_R</code> を <code>true</code> に変更</li>
<li>コードを書かない記事には影響ありません（ビルド時間もほぼ変わりません）</li>
</ul>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<p>Quarto は「<strong>説明と実行結果を1つの原稿で管理</strong>」できるため、データ分析ブログ・技術記事・教材に強みを発揮します。この CMS と組み合わせれば、Issue にコードを書くだけで「実行済みの図付き記事」が公開されます。</p>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-code-execution/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Quarto のメリット②：HTML だけじゃない。PDF・Word・スライド・書籍に出力</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-multi-format/</link>
  <description><![CDATA[ 





<section id="つの原稿から複数形式を出力できる" class="level1">
<h1>1つの原稿から複数形式を出力できる</h1>
<p>Quarto はブログだけのツールではありません。<strong>同じ <code>.qmd</code> ファイルを、目的に応じて別の形式に「焼き直す」</strong>ことができます。</p>
<section id="出力できる形式" class="level2">
<h2 class="anchored" data-anchor-id="出力できる形式">出力できる形式</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>形式</th>
<th>用途</th>
<th>コマンド例</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>HTML</td>
<td>Web サイト・ブログ</td>
<td><code>quarto render article.qmd</code></td>
</tr>
<tr class="even">
<td>PDF</td>
<td>論文・レポート・スライド</td>
<td><code>quarto render article.qmd --to pdf</code></td>
</tr>
<tr class="odd">
<td>Word (docx)</td>
<td>社内文書・提出物</td>
<td><code>quarto render article.qmd --to docx</code></td>
</tr>
<tr class="even">
<td>PowerPoint</td>
<td>プレゼン資料</td>
<td><code>quarto render article.qmd --to pptx</code></td>
</tr>
<tr class="odd">
<td>reveal.js</td>
<td>ブラウザで動くスライド</td>
<td><code>quarto render slide.qmd --to revealjs</code></td>
</tr>
<tr class="even">
<td>EPUB</td>
<td>電子書籍</td>
<td><code>quarto render book.qmd --to epub</code></td>
</tr>
</tbody>
</table>
</section>
<section id="なぜ便利なのか" class="level2">
<h2 class="anchored" data-anchor-id="なぜ便利なのか">なぜ便利なのか</h2>
<section id="内容と見た目が分離されている" class="level3">
<h3 class="anchored" data-anchor-id="内容と見た目が分離されている">1. 内容と見た目が分離されている</h3>
<p>原稿には「内容」だけを書き、形式ごとの見た目は frontmatter やテーマで切り替えます。同じ記事を「ブログ用 HTML」にも「提出用 PDF」にもできる、ということです。</p>
</section>
<section id="表や図の位置スタイルも自動調整" class="level3">
<h3 class="anchored" data-anchor-id="表や図の位置スタイルも自動調整">2. 表や図の位置・スタイルも自動調整</h3>
<p>コードで作った図は、形式に合わせてサイズが自動調整されます。手でレイアウトする必要がありません。</p>
</section>
<section id="書籍モード" class="level3">
<h3 class="anchored" data-anchor-id="書籍モード">3. 書籍モード</h3>
<p>複数の <code>.qmd</code> を <code>_quarto.yml</code> で <code>book</code> プロジェクトにまとめると、目次・章番号・相互参照つきの書籍になります。</p>
</section>
</section>
<section id="この-cms-との関係" class="level2">
<h2 class="anchored" data-anchor-id="この-cms-との関係">この CMS との関係</h2>
<p>この CMS は「ブログ（HTML）」に特化していますが、Quarto 本来の柔軟性の上に成り立っています。将来的には：</p>
<ul>
<li>記事を PDF に書き出して保存版にする</li>
<li>特定の章だけスライド化して勉強会で使う</li>
</ul>
<p>といった使い方にも発展できます。</p>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>Quarto は「HTML 専用」ではなく、<strong>多形式対応の文書エンジン</strong></li>
<li>内容と見た目が分離されているため、メンテナンスが楽</li>
<li>この CMS では HTML（ブログ）として活用中。必要に応じて PDF 等にも展開可能</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-multi-format/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Quarto のメリット③：再現性とビルド高速化（freeze / cache / execute オプション）</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-reproducibility/</link>
  <description><![CDATA[ 





<section id="再現性と自動化の仕組み" class="level1">
<h1>再現性と自動化の仕組み</h1>
<p>Quarto には、コード実行を細かく制御するオプションがあります。うまく使うと「<strong>再現性のある記事</strong>」を「<strong>速いビルド</strong>」で維持できます。</p>
<section id="コードブロック単位のオプション-コメント" class="level2">
<h2 class="anchored" data-anchor-id="コードブロック単位のオプション-コメント">コードブロック単位のオプション（<code>#|</code> コメント）</h2>
<p>コードブロックの先頭に <code>#|</code> で始まる YAML 風コメントを書くと、そのブロックだけ挙動を変えられます。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>オプション</th>
<th>意味</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>#| echo: false</code></td>
<td>コードを表示せず結果だけ表示</td>
</tr>
<tr class="even">
<td><code>#| eval: false</code></td>
<td>実行せずコードだけ表示（参考コード用）</td>
</tr>
<tr class="odd">
<td><code>#| warning: false</code></td>
<td>警告メッセージを非表示</td>
</tr>
<tr class="even">
<td><code>#| error: false</code></td>
<td>エラーがあってもビルドを続行</td>
</tr>
<tr class="odd">
<td><code>#| cache: true</code></td>
<td>結果をキャッシュして再実行を省略</td>
</tr>
<tr class="even">
<td><code>#| fig-cap</code> / <code>#| fig-alt</code></td>
<td>図のキャプション・代替テキスト</td>
</tr>
</tbody>
</table>
<div id="b6528c3e" class="cell" data-execution_count="1">
<div class="cell-output cell-output-stdout">
<pre><code>1〜100 の合計 = 5050</code></pre>
</div>
</div>
</section>
<section id="プロジェクト単位の設定_quarto.yml" class="level2">
<h2 class="anchored" data-anchor-id="プロジェクト単位の設定_quarto.yml">プロジェクト単位の設定（<code>_quarto.yml</code>）</h2>
<p>この CMS では次のように設定しています。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode yaml code-with-copy"><code class="sourceCode yaml"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">execute</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb2-2"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">freeze</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> auto</span></span>
<span id="cb2-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">execute-dir</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> project</span></span></code></pre></div></div>
<ul>
<li><strong><code>freeze: auto</code></strong>: 原稿（<code>.qmd</code>）が変わっていなければ、前回の計算結果（<code>_freeze/</code>）を再利用する</li>
<li><strong><code>execute-dir: project</code></strong>: 実行時の作業ディレクトリをプロジェクト直下に統一（ファイルパスの混乱を防ぐ）</li>
</ul>
</section>
<section id="freeze-と-cache-の違い" class="level2">
<h2 class="anchored" data-anchor-id="freeze-と-cache-の違い">freeze と cache の違い</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>仕組み</th>
<th>対象</th>
<th>効果</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><code>cache: true</code></td>
<td>コードブロック単位</td>
<td>同じ入力なら再実行しない</td>
</tr>
<tr class="even">
<td><code>freeze: auto</code></td>
<td>記事（ファイル）単位</td>
<td>原稿が変わらなければ計算自体をスキップ</td>
</tr>
</tbody>
</table>
<p>つまり <strong>「変わっていない記事は再計算しない」</strong>ことで、CMS で記事を追加したときのビルド時間を抑えています。</p>
</section>
<section id="再現性のポイント" class="level2">
<h2 class="anchored" data-anchor-id="再現性のポイント">再現性のポイント</h2>
<ol type="1">
<li><strong>コードに乱数を使うときは <code>seed</code> を固定</strong>する</li>
<li><strong>依存バージョンは <code>requirements.txt</code> 等で固定</strong>する</li>
<li><strong>外部データは URL を明記</strong>する（コードでダウンロード）</li>
</ol>
<div id="seed-demo" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> numpy <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> np</span>
<span id="cb3-2"></span>
<span id="cb3-3">np.random.seed(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">42</span>)</span>
<span id="cb3-4"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"固定 seed なら毎回同じ結果:"</span>, np.random.randint(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">100</span>, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">3</span>))</span></code></pre></div></div>
<div class="cell-output cell-output-stdout">
<pre><code>固定 seed なら毎回同じ結果: [51 92 14]</code></pre>
</div>
</div>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li><code>#|</code> オプションで「実行する/しない」「表示する/しない」を細かく制御</li>
<li><code>freeze: auto</code> が「変わらない記事の再計算」を省略してビルドを高速化</li>
<li>コード実行は「再現性」と「自動化」の両方を手に入れるための機能</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-benefits-reproducibility/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Quarto とは？1つのファイルから HTML / PDF / Word / スライドを生成できる文書ツール</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-intro/</link>
  <description><![CDATA[ 





<section id="quarto-とは" class="level1">
<h1>Quarto とは？</h1>
<p>Quarto（クォート）は、<strong>「1つの原稿ファイル」から「HTML / PDF / Word / スライド / 書籍」など複数の形式を生成できる</strong>オープンソースの文書作成ツールです。</p>
<ul>
<li>公式サイト: <a href="https://quarto.org" class="uri">https://quarto.org</a></li>
<li>開発元: Posit（RStudio を作っている会社）</li>
<li>記法: Markdown（拡張子 <code>.qmd</code>）+ YAML の frontmatter</li>
</ul>
<section id="何ができるのか" class="level2">
<h2 class="anchored" data-anchor-id="何ができるのか">何ができるのか</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 50%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>できること</th>
<th>内容</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>ブログ・Web サイト</td>
<td><code>quarto render</code> で静的サイトを生成。一覧・検索・OG 対応</td>
</tr>
<tr class="even">
<td>論文・レポート</td>
<td>PDF 出力（LaTeX 不要で日本語も OK）</td>
</tr>
<tr class="odd">
<td>社内文書</td>
<td>Word / PowerPoint 出力も可能</td>
</tr>
<tr class="even">
<td>スライド</td>
<td>reveal.js などの HTML スライドを1ファイルで作成</td>
</tr>
<tr class="odd">
<td>書籍</td>
<td>複数章をまとめて1冊の本に</td>
</tr>
<tr class="even">
<td>コード実行</td>
<td>R / Python / Julia / Observable を本文中で実行し結果を埋め込み</td>
</tr>
</tbody>
</table>
</section>
<section id="なぜ-markdown-なのか" class="level2">
<h2 class="anchored" data-anchor-id="なぜ-markdown-なのか">なぜ Markdown なのか</h2>
<p>Markdown はプレーンテキストなので次の利点があります。</p>
<ol type="1">
<li><strong>バージョン管理がしやすい</strong>（Git の差分が見やすい）</li>
<li><strong>どこでも編集できる</strong>（エディタ / GitHub の Web UI / スマホのアプリ）</li>
<li><strong>変換が速い・依存が少ない</strong></li>
</ol>
</section>
<section id="この-cms-での位置づけ" class="level2">
<h2 class="anchored" data-anchor-id="この-cms-での位置づけ">この CMS での位置づけ</h2>
<p>このサイト（issues-quarto-cms）では、Quarto を「<strong>記事のレンダリングエンジン</strong>」として使っています。</p>
<ul>
<li>記事の原稿は GitHub の Issue / Discussion（Markdown）</li>
<li>GitHub Actions が原稿を <code>posts/{slug}/index.qmd</code> に変換</li>
<li><code>quarto render</code> が一覧・個別ページ・検索・サイトマップまで自動生成</li>
</ul>
<p>つまり <strong>「書く場所」は GitHub、「見た目」は Quarto</strong>、という分担です。</p>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>Quarto = Markdown から多様な形式を作れる文書ツール</li>
<li>特に <strong>R / Python コードを実行して結果を埋め込める</strong>のが最大の強み</li>
<li>この CMS では記事の公開エンジンとして活用しています</li>
</ul>
<p>次の記事では、この「コード実行」のメリットを具体的に解説します。</p>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-intro/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>実例：Python でデータ分析の結果をそのまま記事に埋め込む</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-python-example/</link>
  <description><![CDATA[ 





<section id="python-でデータ分析記事を書く実例" class="level1">
<h1>Python でデータ分析記事を書く実例</h1>
<p>ここでは「データを読み込み → 要約 → グラフ」までを、<strong>Quarto のコード実行だけで完結させる</strong>例を示します。画像を一切アップロードしていません。</p>
<section id="データの読み込み" class="level2">
<h2 class="anchored" data-anchor-id="データの読み込み">1. データの読み込み</h2>
<p>GitHub の公開データセットを直接読み込みます（<code>#| echo: false</code> でコードを非表示にしています）。</p>
<div id="load-data" class="cell" data-execution_count="1">
<div class="cell-output cell-output-stdout">
<pre><code>行数: 244</code></pre>
</div>
</div>
</section>
<section id="要約統計量" class="level2">
<h2 class="anchored" data-anchor-id="要約統計量">2. 要約統計量</h2>
<p>データの概要をそのまま表示します。</p>
<div id="cell-summary" class="cell" data-execution_count="2">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb2-1">df.describe()</span></code></pre></div></div>
<div id="summary" class="cell-output cell-output-display" data-execution_count="2">
<div>


<table class="dataframe caption-top table table-sm table-striped small" data-border="1">
<thead>
<tr class="header">
<th data-quarto-table-cell-role="th"></th>
<th data-quarto-table-cell-role="th">total_bill</th>
<th data-quarto-table-cell-role="th">tip</th>
<th data-quarto-table-cell-role="th">size</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<th data-quarto-table-cell-role="th">count</th>
<td>244.000000</td>
<td>244.000000</td>
<td>244.000000</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">mean</th>
<td>19.785943</td>
<td>2.998279</td>
<td>2.569672</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">std</th>
<td>8.902412</td>
<td>1.383638</td>
<td>0.951100</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">min</th>
<td>3.070000</td>
<td>1.000000</td>
<td>1.000000</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">25%</th>
<td>13.347500</td>
<td>2.000000</td>
<td>2.000000</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">50%</th>
<td>17.795000</td>
<td>2.900000</td>
<td>2.000000</td>
</tr>
<tr class="odd">
<th data-quarto-table-cell-role="th">75%</th>
<td>24.127500</td>
<td>3.562500</td>
<td>3.000000</td>
</tr>
<tr class="even">
<th data-quarto-table-cell-role="th">max</th>
<td>50.810000</td>
<td>10.000000</td>
<td>6.000000</td>
</tr>
</tbody>
</table>

</div>
</div>
</div>
</section>
<section id="可視化" class="level2">
<h2 class="anchored" data-anchor-id="可視化">3. 可視化</h2>
<p>グラフも実行結果として自動埋め込みされます。</p>
<div id="cell-fig-tips" class="cell" data-execution_count="3">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb3-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> seaborn <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> sns</span>
<span id="cb3-2"></span>
<span id="cb3-3">sns.histplot(df[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tip"</span>], kde<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">True</span>)</span></code></pre></div></div>
<div class="cell-output cell-output-display">
<div id="fig-tips" class="quarto-float quarto-figure quarto-figure-center anchored" alt="チップ額のヒストグラム。右に長い裾を持つ分布">
<figure class="quarto-float quarto-float-fig figure">
<div aria-describedby="fig-tips-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
<img src="https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-python-example/index_files/figure-html/fig-tips-output-1.png" alt="チップ額のヒストグラム。右に長い裾を持つ分布" width="585" height="431" class="figure-img">
</div>
<figcaption class="quarto-float-caption-bottom quarto-float-caption quarto-float-fig" id="fig-tips-caption-0ceaefa1-69ba-4598-a22c-09a6ac19f8ca">
Figure&nbsp;1: チップ額のヒストグラム
</figcaption>
</figure>
</div>
</div>
</div>
</section>
<section id="条件ごとの集計" class="level2">
<h2 class="anchored" data-anchor-id="条件ごとの集計">4. 条件ごとの集計</h2>
<div id="cell-groupby" class="cell" data-execution_count="4">
<div class="code-copy-outer-scaffold"><div class="sourceCode cell-code" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb4-1">df.groupby(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"day"</span>)[<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"tip"</span>].mean().<span class="bu" style="color: null;
background-color: null;
font-style: inherit;">round</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>)</span></code></pre></div></div>
<div id="groupby" class="cell-output cell-output-display" data-execution_count="4">
<pre><code>day
Fri     2.73
Sat     2.99
Sun     3.26
Thur    2.77
Name: tip, dtype: float64</code></pre>
</div>
</div>
</section>
<section id="何が起きているのか" class="level2">
<h2 class="anchored" data-anchor-id="何が起きているのか">何が起きているのか</h2>
<p>上のコードは <strong>この記事がビルドされるときに実行</strong>され、表やグラフが HTML に埋め込まれます。</p>
<ul>
<li>元データが更新されれば、記事を再ビルドするだけで結果も更新</li>
<li>「コード」と「結果」が常に一致するため、<strong>誤ったスクリーンショット貼り間違いが起きない</strong></li>
<li>読者に「コードと結果の両方」を見せられるので、再現性も高い</li>
</ul>
</section>
<section id="コードを載せたくない部分の扱い" class="level2">
<h2 class="anchored" data-anchor-id="コードを載せたくない部分の扱い">コードを載せたくない部分の扱い</h2>
<p>「実行はするけどコードは表示しない」部分は <code>#| echo: false</code>、逆に「コードは見せるが実行しない」部分は <code>#| eval: false</code> と使い分けます。</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>パターン</th>
<th>コード表示</th>
<th>実行</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>デフォルト</td>
<td>する</td>
<td>する</td>
</tr>
<tr class="even">
<td><code>#| echo: false</code></td>
<td>しない</td>
<td>する</td>
</tr>
<tr class="odd">
<td><code>#| eval: false</code></td>
<td>する</td>
<td>しない</td>
</tr>
<tr class="even">
<td><code>#| echo: false</code> + <code>#| eval: false</code></td>
<td>しない</td>
<td>しない</td>
</tr>
</tbody>
</table>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>読み込み → 集計 → 可視化まで、<strong>コードブロックだけで完結</strong></li>
<li>結果は常に最新で、画像アップロード不要</li>
<li><code>#| echo</code> / <code>#| eval</code> を組み合わせて「見せ方」を調整</li>
</ul>
<p>Issue にこのままコードを書けば、この CMS でも同じ動きをします。</p>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-python-example/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Quarto のメリット④：ブログ・Web サイト機能（listing / search / sitemap / OG 対応）</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-website-blog/</link>
  <description><![CDATA[ 





<section id="ブログ運営に必要な機能が標準装備" class="level1">
<h1>ブログ運営に必要な機能が「標準装備」</h1>
<p>Quarto の <code>website</code> プロジェクトは、ブログとして必要な機能を最初から持っています。この CMS はそれらをそのまま使っています。</p>
<section id="このサイトで動いている機能" class="level2">
<h2 class="anchored" data-anchor-id="このサイトで動いている機能">このサイトで動いている機能</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th>機能</th>
<th>説明</th>
<th>設定場所</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>記事一覧（listing）</td>
<td>グリッド表示・日付降順・カテゴリフィルタ</td>
<td><code>index.qmd</code> の <code>listing</code></td>
</tr>
<tr class="even">
<td>サイト内検索</td>
<td>全記事を全文検索</td>
<td><code>_quarto.yml</code> の <code>search: true</code></td>
</tr>
<tr class="odd">
<td>サイトマップ</td>
<td><code>sitemap.xml</code> 自動生成（SEO）</td>
<td>自動</td>
</tr>
<tr class="even">
<td>OG / Twitter カード</td>
<td>リンク共有時の見た目</td>
<td><code>open-graph: true</code></td>
</tr>
<tr class="odd">
<td>RSS 相当のフィード</td>
<td>記事一覧に <code>index.xml</code> を自動生成</td>
<td>自動</td>
</tr>
<tr class="even">
<td>目次（TOC）</td>
<td>記事内に見出しナビ</td>
<td><code>toc: true</code></td>
</tr>
<tr class="odd">
<td>レスポンシブ</td>
<td>スマホでも見やすいナビゲーション</td>
<td>標準</td>
</tr>
</tbody>
</table>
</section>
<section id="listing-の設定例このサイトのホーム" class="level2">
<h2 class="anchored" data-anchor-id="listing-の設定例このサイトのホーム">listing の設定例（このサイトのホーム）</h2>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode yaml code-with-copy"><code class="sourceCode yaml"><span id="cb1-1"><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">title</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Quarto Issues CMS"</span></span>
<span id="cb1-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">listing</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb1-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">contents</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> posts</span></span>
<span id="cb1-5"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sort</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"date desc"</span></span>
<span id="cb1-6"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">type</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> grid</span></span>
<span id="cb1-7"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">filter-ui</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">true</span></span>
<span id="cb1-8"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">categories</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">true</span></span>
<span id="cb1-9"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">feed</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> </span><span class="ch" style="color: #20794D;
background-color: null;
font-style: inherit;">true</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">   # index.xml を自動生成</span></span>
<span id="cb1-10"><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">---</span></span></code></pre></div></div>
<ul>
<li><code>contents: posts</code> → <code>posts/</code> 配下の記事を自動収集</li>
<li><code>sort: "date desc"</code> → 新しい順</li>
<li><code>filter-ui: true</code> + <code>categories: true</code> → カテゴリで絞り込み</li>
</ul>
</section>
<section id="検索はどう動く" class="level2">
<h2 class="anchored" data-anchor-id="検索はどう動く">検索はどう動く？</h2>
<p><code>quarto render</code> すると <code>search.json</code> が生成され、記事本文の全文が検索対象になります。追加のサービス（Algolia 等）は不要です。</p>
</section>
<section id="テーマで見た目を変更" class="level2">
<h2 class="anchored" data-anchor-id="テーマで見た目を変更">テーマで見た目を変更</h2>
<p><code>_quarto.yml</code> の <code>format.html.theme</code> を変えるだけで、全体の配色が変わります。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode yaml code-with-copy"><code class="sourceCode yaml"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">format</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb2-2"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">  </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">html</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span></span>
<span id="cb2-3"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">theme</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> cosmo</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">   # bootswatch のテーマ名（cosmo, flatly, journal ...）</span></span>
<span id="cb2-4"><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">    </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">css</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">:</span><span class="at" style="color: #657422;
background-color: null;
font-style: inherit;"> styles.css</span></span></code></pre></div></div>
<p>この CMS はさらに <code>styles.css</code> で <strong>neo brutalism 風のカスタムスタイル</strong>（太いボーダー・強いシャドウ）を適用しています。</p>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>ブログに必要な「一覧・検索・SEO・共有」が Quarto 標準機能</li>
<li>見た目はテーマ + CSS で柔軟にカスタマイズ可能</li>
<li>この CMS はそれらをほぼ「設定だけで」利用しています</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/quarto-website-blog/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>利用上の注意点：この CMS を使う前に読んでおきたいポイント</title>
  <link>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/usage-notes-and-caveats/</link>
  <description><![CDATA[ 





<section id="利用上の注意点" class="level1">
<h1>利用上の注意点</h1>
<p>この CMS は便利ですが、<strong>「GitHub の Issue を原稿にする」「Quarto で実行・生成する」</strong>という性質から、いくつか気をつける点があります。ここでは重要度の高い順にまとめます。</p>
<section id="slug-は必ずユニークに" class="level2">
<h2 class="anchored" data-anchor-id="slug-は必ずユニークに">① slug は必ずユニークに</h2>
<p><code>slug</code> が重複すると、後から処理される方の記事が <strong>スキップ（無視）</strong>されます。特に：</p>
<ul>
<li>Issue と Discussion の間でも重複 NG</li>
<li>コピーして新規記事を作る際に slug の変更を忘れがち</li>
</ul>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb1-1"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">slug:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> my-first-post   # 使い回さない</span></span>
<span id="cb1-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">slug:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> my-second-post  # 一意に</span></span></code></pre></div></div>
</section>
<section id="yaml-のコロンに注意" class="level2">
<h2 class="anchored" data-anchor-id="yaml-のコロンに注意">② YAML のコロン（<code>:</code>）に注意</h2>
<p>値の中に <code>:</code>（コロン＋スペース）を含むと YAML 解析エラーになります。</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb2-1"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> "Tutorial: 公開手順"   # OK（引用符で囲む）</span></span>
<span id="cb2-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">title:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> Tutorial: 公開手順      # NG</span></span></code></pre></div></div>
<p><code>title</code> だけでなく <code>excerpt</code> も同様に注意してください。</p>
</section>
<section id="画像はgithub-が発行する-urlのまま表示" class="level2">
<h2 class="anchored" data-anchor-id="画像はgithub-が発行する-urlのまま表示">③ 画像は「GitHub が発行する URL」のまま表示</h2>
<p>この CMS は画像をローカルに保存せず、<strong>Issue に貼った画像の URL をそのまま使います</strong>。</p>
<ul>
<li>長所: 仕組みがシンプル・ GitHub 仕様の変化に強い</li>
<li>短所: GitHub が画像を保持している間だけ有効（外部の Issue 等を消すと表示が切れる）</li>
</ul>
<p>運用上は「画像を貼り直したら URL が変わる → 記事も更新が必要」という点だけ覚えておいてください。</p>
</section>
<section id="コードを実行するとビルドが遅くなる" class="level2">
<h2 class="anchored" data-anchor-id="コードを実行するとビルドが遅くなる">④ コードを実行するとビルドが遅くなる</h2>
<p><code>{python}</code> や <code>{r}</code> のブロックは<strong>毎回（変更時は）実行</strong>されます。</p>
<ul>
<li>重い計算・大きいデータは <code>#| cache: true</code> や <code>freeze: auto</code> でキャッシュ</li>
<li>どうしても重い処理は「結果の図を画像で貼る」に切り替える手もある</li>
<li>コードを含まない記事はビルド時間にほとんど影響なし</li>
</ul>
</section>
<section id="反映まで数分かかる-定期ビルドは遅延する" class="level2">
<h2 class="anchored" data-anchor-id="反映まで数分かかる-定期ビルドは遅延する">⑤ 反映まで数分かかる / 定期ビルドは遅延する</h2>
<ul>
<li>GitHub Pages への反映は Actions 完了まで<strong>数分</strong>かかります</li>
<li>15分ごとの定期ビルドは GitHub 側の状況で遅延することがあります</li>
<li><strong>すぐ反映したいとき</strong>は、Issue 編集 or ラベル変更、または Actions タブの <code>workflow_dispatch</code>（手動実行）を利用</li>
</ul>
</section>
<section id="discussions-を使うには事前設定が必要" class="level2">
<h2 class="anchored" data-anchor-id="discussions-を使うには事前設定が必要">⑥ Discussions を使うには事前設定が必要</h2>
<p>Discussion を原稿に使う場合：</p>
<ul>
<li>リポジトリの <strong>Settings &gt; Features &gt; Discussions を有効化</strong>する</li>
<li>投稿用のカテゴリ（例: blog）を用意する</li>
<li>Issue 版だけであれば設定不要</li>
</ul>
</section>
<section id="コード実行環境python-r" class="level2">
<h2 class="anchored" data-anchor-id="コード実行環境python-r">⑦ コード実行環境（Python / R）</h2>
<ul>
<li><strong>Python</strong>: この CMS ではデフォルト有効。<code>requirements.txt</code>（<code>jupyter</code>, <code>numpy</code>, <code>pandas</code>, <code>matplotlib</code>, <code>seaborn</code>, <code>marimo</code>）をビルド時にインストール</li>
<li><strong>R</strong>: 既定ではオフ。使いたい場合は <code>.github/workflows/build.yml</code> の <code>ENABLE_R</code> を <code>true</code> に変更</li>
<li>使いたいパッケージが増えたら <code>requirements.txt</code> に追記</li>
</ul>
</section>
<section id="category-は1つ" class="level2">
<h2 class="anchored" data-anchor-id="category-は1つ">⑧ category は1つ</h2>
<p><code>category</code> は1つだけ書けます（配列ではなく単一の値）。複数カテゴリで整理したい場合は <code>tags</code> を使いましょう。</p>
</section>
<section id="まとめ" class="level2">
<h2 class="anchored" data-anchor-id="まとめ">まとめ</h2>
<ul>
<li>最低限守るのは <strong>slug の一意性</strong>と <strong>YAML の引用符</strong></li>
<li>画像・ビルド時間・反映遅延は仕組み上の特性として理解しておく</li>
<li>細かいところは <a href="https://github.com/watanabe3tipapa/issues-quarto-cms/blob/main/DEV-MEMO.md">DEV-MEMO.md</a> にもまとめてあります</li>
</ul>


</section>
</section>

 ]]></description>
  <category>blog</category>
  <guid>https://watanabe3tipapa.github.io/issues-quarto-cms/posts/usage-notes-and-caveats/</guid>
  <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
