noindex公開運用・デプロイ計測・スキル最適化 - サイト運用とツール整備をまとめて進めた一日

朝6時半から夕方まで、サイトの運用まわりを立て続けに整備した。「公開はするが検索には載せない」noindex 方式を3コンテンツに展開し、デプロイ計測スクリプトを3回落としながら通し、スキル群を一括最適化し、合間に統計チャートも2系統増やした。

コーディング原則ページを noindex で一般公開

/coding-principles はこれまで dev 限定で見ていたが、家でも確認したくなったので公開コンテンツに切り替えた。ただし検索インデックスには載せたくない。noindex メタの付与と sitemap からの除外をセットでやってもらった。

「本当にそうなってるか心配」だったので、テストコードで担保するよう追加で指示した。新規テスト tests/coding-principles-publish.test.ts に9件追加して全件パス。関連既存テスト169件も回帰なし。最後に「積み残しないですよね」と念押しして、全テストスイート106ファイル・16,841件を回させた。全件パスを見届けてようやく手を離した。

tokibo・oshieru-sansu も同じ noindex 方式に統一

午後には /tokibo/oshieru-sansu・制作中のワークショップ案内サイトの3コンテンツも、coding-principles と同じ「公開するが検索インデックスには載せない」方式に揃えた。前例には専用テストまであったので、その構造に倣わせるだけで済んだ。

  • 22ファイル更新(dev限定ガードの除去・noindex付与)
  • トップページのカードも dev 限定表示から公開に切り替え
  • nuxt.config.ts にプリレンダールートを追加
  • 公開化の担保テストも前例に倣って追加
  • noindex メタが SSR 出力に正しく入っていることを確認

朝に作った前例とテストが、午後の展開作業の型紙としてそのまま機能した。

デプロイ計測スクリプトが3回落ちた

デプロイ各フェーズの所要時間を計測する scripts/measure-deploy.ps1 を回したら、3回連続で落ちた。原因はそれぞれ別物だった。

  1. 1回目: pnpm dev の開発サーバーが起動したまま pnpm generate を走らせ、.nuxt ディレクトリが競合。ポート3000の node プロセスをポート特定で kill してもらった(スクリプトへのチェック追加はあえて入れない判断にした)
  2. 2回目: ゾンビプロセスが残っていた。mdx-playground 関連の node プロセスをゼロまで掃除
  3. 3回目: コンテンツDBは正常(1241 parsed)なのに落ちる。調べると画像ディレクトリが存在するのに中身が空だった

4回目でようやく通った。所要時間を過去の計測ログと突き合わせると、15分のうち約11分はプリレンダーで、これは6/9の変更以降の「新しい正常値」に近い。今朝より5割遅い分はマシン負荷のばらつきと見た。

消えた画像16枚を Codex 生成画像から救出

3回目の失敗で見つかった「空の画像ディレクトリ」は、ワークショップ案内サイトの画像16枚だった。まずは sharp でプレースホルダー16枚を生成してビルドを通す方針にしたが、Codex で生成した元画像が手元に残っていたのを思い出し、「これ全部リネームしたらコピーで間に合いませんかね」と16枚を貼り付けた。

取り違え防止に画像サイズで順序を検証したうえで、正しいファイル名で配置し直してもらった。15枚は参照先が .webp だったので、拡張子だけ変えるとPNG実体のままになる。webp に変換してから配置するところまで含めて、プレースホルダーを本物で上書きできた。

スキル/スラッシュコマンド全体を最適化

プロジェクトレベル(.claude/)とユーザーレベル(~/.claude/)のスキル・スラッシュコマンドを一通り最適化した。まず計画を立てさせ、Codex レビューの致命的指摘2点を反映してから Phase 0〜実行に入った。

  • 不要ワークフローの削除(memories/ は保全)
  • frontmatter 未設定14本に追加、値のクォート漏れ5件を一括修正
  • 150字超の description 12本を圧縮
  • 最大サイズだった make-diary.md を含む大型コマンド4本を分割

途中、PowerShell の $_ が Git Bash に展開されてエラーになる場面があり、ルールどおり issue を作ってからリトライさせた。最後は機能単位で分割コミット(mdx-playground 側4コミット)。翌朝の /make-diary が最終スモークテストになる。

韓国チップ輸出統計: 外部記事と自サイトの照合

TrendForce の「韓国チップ輸出は数量11.9%減なのに金額2.7倍超」という記事を見て、自サイトの /memory-makers/korea-chip-exports のまとめと同じ話なのか突き合わせた。大枠は一致していたが、記事には当方ページにない切り口(数量・品目別・単価)があった。

「取れてない統計は取ってきてチャートにして」と頼んで、関税庁サイトから HS 8542(電子集積回路)全体を月別・Kg基準で照会し、2018-01〜2026-04 の100ヶ月分(金額+重量)を追加した。ただし記事が引用する KITA 基準の「-11.9%・3,242トン」そのものは再現できなかった。代わりに新性質別分類3401「半導体」の系列が取れて、こちらは金額が MOTIE 発表と一致する(28ヶ月で最大差0.049B)ことを機械的に確認できた。テストに±0.1Bのガードも入れた。

このつまずきも含めて一通り記事化し、韓国チップ輸出数量の調査記録として公開した。doc-communication と svg-diagram のスキルで SVG 図解3枚も入れた。「同じ2026年4月の半導体輸出数量が、分類しだいで符号まで変わる」を1枚目の図に据えている。

SIA世界半導体売上の独立カードを追加

夕方、SIA(米半導体工業会)の世界半導体売上のチャート画像を見せて「韓国と台湾の統計と何か違うのか」を確認させたところ、実額もYoYも一次発表と一致するが、輸出統計とは集計の概念が根本的に違うと分かった。それなら独立した系列として持ちたい。

韓国・台湾カードの横に独立カードコンポーネントとチャートページを追加させた。月次データはエージェント3本(2024年・2025年・2026年分)を並列で収集に走らせ、2026年エージェントが副産物で取った2025年1〜4月の値とクロスチェックして検証した。WSTS は遡及改定があるためテストの許容誤差は±1.5%に緩め、YoY% の記載がない月は推測で埋めず null にする方針を採った。テスト25件パス、dev 描画確認まで完了。

dev 確認ではポート3000が塞がっていて新サーバーが3001で起動し、さらにリスナーが IPv6(::1)のみで curl が通らない、という二段のつまずきも踏んだ。

近隣小学校の児童数推移ページ

都内の自宅周辺の小学校6校について、児童数の過去10年推移と世帯数推移、将来10年の予測を載せたページも作った。区の公式PDFと突合したデータ6校×10年分を集め、予測区間に対応した折れ線チャートコンポーネントを新規に作らせた。途中、特別支援学級が学年別人数の内数だと判明して total 計算を直す場面もあった。子供の数の先行きを区の世帯数データと並べて眺められるようになった。

学び

  • noindex 公開方式は「前例+担保テスト」を最初の1件で作っておくと、2件目以降の展開が型紙作業になる
  • デプロイ計測が落ちる原因は1つではない。dev サーバー競合・ゾンビプロセス・アセット欠落と、回すたびに別の層が剥がれた
  • 生成画像の救出は、リネーム前に画像サイズで順序を検証すると取り違えを防げる。webp 参照先に PNG を拡張子だけ変えて置くのは罠
  • 公的統計は集計基準(KITA / MOTIE / 関税庁 / WSTS)で同じ「半導体」でも数量の符号まで変わる。再現できない数字は再現できないと記録しておく方が、後で読み返したとき役に立つ