{"componentChunkName":"component---src-templates-blog-template-js","path":"/2026-05-31-weekly-knowledge","result":{"data":{"site":{"siteMetadata":{"title":"KenRp Blog"}},"markdownRemark":{"html":"<p>2026年5月25日から2026年5月31日にかけて、技術メモブログ <code class=\"language-text\">kenRp-blog</code> と、Codex の作業記録から記事草稿を作る自作スキル <code class=\"language-text\">worklog-blogger</code> を組み合わせ、日次の作業メモを週次の知見記事へ育てる運用を固めた。狙いは「その日の作業を残すこと」と「読者に再利用できる知見として公開すること」を分離し、下書き品質と公開安全性を両立させることだった。</p>\n<h2>この記事で解決すること</h2>\n<p>作業ログは再開用メモとしては便利でも、そのまま公開すると背景が足りず、読者には日記に見えやすい。この記事では、次の悩みを解く。</p>\n<ul>\n<li>日次メモと公開記事の役割を分けたい。</li>\n<li>自動生成草稿を、読者が再利用できる内容へ編集する手順を決めたい。</li>\n<li>Markdown ブログの frontmatter 契約を壊さず、公開前の安全確認を入れたい。</li>\n</ul>\n<h2>実施した改善</h2>\n<p>この事例では、Gatsby ベースの Markdown ブログに、日次 worklog を継続して追加した。あわせて 草稿生成スキルという Codex スキルの出力を見直し、dry-run で草稿を確認してから、公開可能な粒度へ人手で具体化する流れを定着させた。</p>\n<p>単に毎日のログを並べるのではなく、週次記事では「何を導入したか」「どの構成で回しているか」「なぜその手順にしたか」をまとめ直せるように、日次側のタイトル、frontmatter、検証手順もそろえた。</p>\n<h2>確認できた成果</h2>\n<p>日次記録と週次記事の役割分担が明確になったことが一番の成果だった。日次側は再開用メモ、週次側は第三者向けの知見記事として整理し直すことで、同じ情報源から別の価値を引き出せるようになった。</p>\n<table>\n<thead>\n<tr>\n<th>項目</th>\n<th>日次 worklog</th>\n<th>週次 knowledge</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>主な読者</td>\n<td>自分や次回の作業者</td>\n<td>前提を持たない読者</td>\n</tr>\n<tr>\n<td>保持する情報</td>\n<td>その日の変更、判断、検証</td>\n<td>1週間で再利用できる設計判断</td>\n</tr>\n<tr>\n<td>出力単位</td>\n<td>1日1ファイル</td>\n<td>1週1ファイル</td>\n</tr>\n<tr>\n<td>検証</td>\n<td>frontmatter と内容安全性</td>\n<td>構成の分かりやすさと参照性</td>\n</tr>\n<tr>\n<td>公開方針</td>\n<td>まず下書きで保存</td>\n<td>レビュー完了まで公開しない</td>\n</tr>\n</tbody>\n</table>\n<p>また、ブログ側の frontmatter 契約を崩さずに運用できること、<code class=\"language-text\">scripts/validate-content.js</code> による軽量検証で最低限の品質確認を回せること、週次記事で参考元 worklog を明示する方針を固定できたことも大きい。</p>\n<h2>判断と進め方</h2>\n<p>最初の dry-run 出力は、週次記事としては抽象的すぎた。特に「利用した技術」「アーキテクチャ」「選定理由」「導入手順」が、対象変更ではなく記事生成一般の説明に寄っており、何を実装・検証した週なのかが読み取りにくかった。</p>\n<p>そこでこの事例では、対象を「草稿生成スキルを使ってブログ側に日次ワークログを蓄積し、その内容を週次記事に再構成する運用」と定義し直した。草稿生成スキルは Codex セッションログや Git 状態から Markdown 草稿を作るスキル、ブログ側はその草稿を記事データとして管理するブログ基盤である、と初出で説明するように統一したことで、外部読者にも文脈が通りやすくなった。</p>\n<p>さらに、dry-run の結果をそのまま書き出すのではなく、既存記事形式との整合、不要なローカル情報の除去、記事の主語の明確化を経てから保存する手順に切り替えた。これで「自動生成は速いが、そのままでは薄い」という弱点を、編集ステップで補う構成にできた。</p>\n<h2>使った技術</h2>\n<p>この事例の変更対象で中心になった技術は、ブログ基盤と草稿生成スキル、検証用の Node.js スクリプト <code class=\"language-text\">scripts/validate-content.js</code>、そして Markdown frontmatter だった。ブログ側は Gatsby 2 系と Netlify CMS 系プラグインを前提にした静的ブログで、記事データを <code class=\"language-text\">_data/blog/*.md</code> から読む構成になっている。</p>\n<p>草稿生成スキル 側では <code class=\"language-text\">collect_worklog.py</code> を使い、まず <code class=\"language-text\">weekly-blog</code> の dry-run で初稿を生成した。ここで生成結果の抽象度や公開安全性を点検し、その後に日次 worklog で蓄積した情報を参照しながら本文を具体化した。つまり、実装は Python スクリプト、保存は Markdown、整合性確認は Node.js、表示先は Gatsby という分担で成り立っている。</p>\n<p>テストとビルドの観点では、この事例の対象変更はブログアプリ本体の UI 実装ではなくコンテンツと運用フローだったため、フルビルドよりも <code class=\"language-text\">scripts/validate-content.js</code> を優先した。初稿作成時点では下書き整備を目的とし、レビューが終わるまで公開系操作を止める設計にした。</p>\n<h2>構成</h2>\n<p>今回の構成は、入力、生成、編集、検証、保存を分離したのがポイントだった。自動生成に任せる部分と、人手で責任を持って調整する部分を明確に切り分けたことで、再現性と公開品質の両方を扱いやすくなった。</p>\n<div class=\"gatsby-highlight\" data-language=\"mermaid\"><pre class=\"language-mermaid\"><code class=\"language-mermaid\">flowchart LR\n  A[&quot;Codex セッションログ / 既存 worklog&quot;] --&gt; B[&quot;草稿生成スキル collect_worklog.py&quot;]\n  B --&gt; C[&quot;dry-run 草稿&quot;]\n  C --&gt; D[&quot;人手で具体化・秘匿情報確認&quot;]\n  D --&gt; E[&quot;ブログリポジトリ の Markdown 記事&quot;]\n  E --&gt; F[&quot;validate-content.js で検証&quot;]</code></pre></div>\n<p>ブログ側では、コンテンツ層と表示層が分かれている。今回直接触ったのは <code class=\"language-text\">_data/blog</code> 配下の Markdown で、Gatsby テンプレートや画面ロジックを変えなくても、frontmatter 契約を守れば記事一覧と詳細ページに流し込める。これにより、記事生成フローの改善とブログ表示基盤の保守を分離できた。</p>\n<p>また、週次記事は日次 worklog をそのまま連結するのではなく、「行ったこと」「成果」「過程」などの章へ変換する二段構成にした。元データの記録性と、公開記事の説明性を別レイヤーとして扱う設計である。</p>\n<h2>採用理由と代替案</h2>\n<p>この構成を選んだ理由は、既存のブログ側の契約を壊さずに改善できるからだった。CMS やデータ保存方法を増やさず、Markdown と frontmatter を維持したまま運用を整えれば、差分が小さく、失敗時の切り戻しも簡単である。</p>\n<p>また、完全自動生成ではなく dry-run を挟むのは、セッションログ由来の草稿に抽象的な表現や公開に向かないローカル情報が混ざりやすいためだ。特にこの事例では、<code class=\"language-text\">対象アプリ</code> のような汎用プレースホルダーが残る日があり、自動生成結果をそのまま採用しない判断が妥当だった。</p>\n<table>\n<thead>\n<tr>\n<th>選択肢</th>\n<th>採用有無</th>\n<th>判断理由</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Markdown + frontmatter を継続</td>\n<td>採用</td>\n<td>既存ブログ契約を壊さず差分が小さい</td>\n</tr>\n<tr>\n<td>dry-run 後に手修正</td>\n<td>採用</td>\n<td>公開安全性と説明密度を上げやすい</td>\n</tr>\n<tr>\n<td>生成後すぐ書き込み</td>\n<td>不採用</td>\n<td>抽象的な草稿や機微情報混入を見逃しやすい</td>\n</tr>\n<tr>\n<td>フルビルドを毎回実施</td>\n<td>今回は見送り</td>\n<td>コンテンツ追加中心なので軽量検証を優先</td>\n</tr>\n</tbody>\n</table>\n<p>さらに、週次記事で参考 worklog を必ず列挙する方針を取ったのは、知見の出どころをあとから追えるようにするためである。これは記事の信頼性だけでなく、次回の改善でどの日の記録が薄かったかを見つける材料にもなる。</p>\n<h2>検証結果</h2>\n<p>確認した観点は、日次記録と公開記事の役割を分け、Markdown の契約を壊さずに検証した点にある。確認した主なコマンドは次の通り。</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">node scripts/validate-content.js\npython3 collect_worklog.py --mode weekly-blog --dry-run\n<span class=\"token comment\"># frontmatter: template / path / draft / category / tags / metaDescription</span></code></pre></div>\n<p>dry-run の出力をそのまま採用せず、公開前にローカル情報、抽象表現、未具体化の主語を落とす判断を入れた。</p>\n<h2>導入手順</h2>\n<p>導入手順は、単にファイルを増やすのではなく、草稿生成から検証までを一つの運用として並べる必要があった。今週に実際に固めた流れは次の通りである。</p>\n<ol>\n<li>草稿生成スキルの <code class=\"language-text\">collect_worklog.py</code> で、対象日の日次 worklog や対象週の weekly blog を dry-run 生成する。</li>\n<li>生成結果を確認し、対象リポジトリ名、目的、検証内容、公開上の問題がないかを点検する。\n3.ブログ側の既存記事構造に合わせて、frontmatter と本文を具体化する。</li>\n<li><code class=\"language-text\">scripts/validate-content.js</code> を実行し、必須 frontmatter、公開 path、draft 記事数などの契約を確認する。</li>\n<li>Markdownファイルを下書きとして保存し、別工程の公開レビューで本文、リンク、秘匿情報を確認する。</li>\n</ol>\n<p>この事例の運用で特に重要だったのは、実装・テスト・保存・公開を分けて扱うことだった。実装は草稿生成と本文編集、テストは frontmatter 検証、保存は <code class=\"language-text\">_data/blog</code> への書き込み、公開は別工程として切り分けた。</p>\n<h2>制約と残課題</h2>\n<p>一番の課題は、日によって入力情報の密度が大きく違うことだった。材料が少ない日は自動生成結果が汎用テンプレート寄りになり、週次記事に転用したときに「何を学べるのか」が弱くなる。</p>\n<p>次に、公開向け Markdown として扱う以上、ローカル絶対パス、内部向け文言、個人情報、秘密情報をどこまで削るかの判断が必要だった。自動生成だけではこの線引きが安定しないため、人手による確認工程を外せなかった。</p>\n<p>最後に、今回はコンテンツ追加と整合性確認までは回せても、Gatsby 全体のフルビルドや表示確認、公開後の動線確認までは実施していない。軽量検証で十分なケースと、表示確認まで必要なケースの境界は、今後さらに詰める余地がある。</p>\n<h2>次の改善候補</h2>\n<p>次は <code class=\"language-text\">collect_worklog.py</code> 側で、プレースホルダーや抽象的な見出しが残ったときに警告する仕組みを入れるとよい。これがあれば、dry-run の時点で「そのままでは週次記事に耐えない」ことを早く検知できる。</p>\n<p>あわせてブログ側にも、frontmatter だけでなく本文の禁止パターンを検査する仕組みを追加したい。たとえば絶対パス、内部専用ラベル、不要な確認セクション名などを検出できれば、公開前レビューの負荷を下げられる。</p>\n<p>さらに、日次 worklog のタイトルと導入文で「どのリポジトリに何を追加した日か」を今より明示すれば、週次記事の再構成精度は上がる。この事例では週次記事側で補完したが、本来は日次段階で素材の質を上げた方が全体の運用コストは小さい。</p>","excerpt":"2026年5月25日から2026年5月31日にかけて、技術メモブログ  と、Codex…","frontmatter":{"date":"2026年05月31日","path":"/2026-05-31-weekly-knowledge","title":"日次ワークログを公開できる技術記事へ変える編集フロー","thumbnail":"/kenRp-blog/assets/image-4.jpg","metaDescription":"日次ワークログをそのまま公開せず、読者向けの技術記事へ再構成するための編集フロー、検証、判断基準を整理する。","category":"Knowledge","tags":["codex","automation","weekly-knowledge"]}}},"pageContext":{"slug":"/2026-05-31-weekly-knowledge"}}}