Re: ブログ評価(1/11): B2汎用技術Tips-1
評価サマリー
B2汎用技術Tips batch 1 の5記事について、各記事を精読しWeb検索で競合調査を行い個別評価しました。
個別記事評価
| # | ファイル名 | 独自性 | E-E-A-T | 書き換え可能性 | 判定 | 理由 |
|---|---|---|---|---|---|---|
| 1 | nextjs-hydration-mismatch-seeded-random | 高 | 高 | 不要(保持で十分) | 保持 | slug由来シード+LCGという具体的な実装と設計判断の一次情報。競合なし |
| 2 | nextjs-dynamic-import-pitfalls-and-true-code-splitting | 高 | 高 | 不要(保持で十分) | 保持 | ループ初期化によるコード分割失敗という独自発見を実測値つきで報告。競合なし |
| 3 | nextjs-static-page-split-for-tools | 中 | 中 | あり(記事2と統合) | 削除(記事2に統合済み) | draft:true。記事2と同じトピックの旧版で、記事2がより包括的。独立公開は不要 |
| 4 | nextjs-route-handler-static-and-bundle-budget-test | 高 | 高 | 不要(保持で十分) | 保持 | Turbopack環境でのバンドル予算テスト設計は固有の実践知識。競合なし |
| 5 | nextjs-seo-metadata-and-json-ld-security | 中 | 中 | あり | 改善して保持 | SEOメタデータは競合多数。ただしJSON-LDのscript-breakout対策+テスト実装の組み合わせは独自性あり |
記事1: nextjs-hydration-mismatch-seeded-random.md
内容: Math.random()によるハイドレーション不整合の原因と4つの解決策比較、slug由来シード+LCG(線形合同法)+Fisher-Yatesシャッフルの完全実装コード付き解説。
競合調査結果: Web検索では「useEffect」「suppressHydrationWarning」「ssr:false」といった一般的な回避策を紹介する記事は多数存在する(Leapcell、Medium等)。しかし「ページスラッグをシードとして使いLCGで決定論的シャッフルを実現する」という具体的なアプローチを解説した記事は存在しない。Prando等のライブラリを使う方法の言及はあるが、外部ライブラリなしのLCG自前実装+その数学的根拠(Numerical Recipesの定数)まで解説した記事は見当たらない。
E-E-A-T評価: このサイト自身での実装経験に基づく一次情報。4パターンの比較表、useState遅延初期化でも同じ問題が起きる点への言及など、実際に試行した痕跡が見られる。
判定: 保持
記事2: nextjs-dynamic-import-pitfalls-and-true-code-splitting.md
内容: next/dynamicのローディングフラッシュとループ初期化によるコード分割失敗という2つの独立した問題の発見・分析、3アプローチ比較(個別ページ分割/静的インポートマップ/サーバーコンポーネント直接インポート)、バンドルサイズ実測値(478.2KB→平均61.7KB、87%削減)。
競合調査結果: next/dynamicのSSSR pitfallを解説する記事(DEV Community等)やコード分割に関する記事(web.dev等)は存在する。しかし「ループで複数のdynamic()を初期化するとコード分割が無効になる」という具体的なメカニズム解説、および「静的コンテンツのサーバーコンポーネントが誤ってクライアントバンドルに取り込まれていた」という発見を実測値付きで報告した記事は見当たらない。Next.js公式issueに関連する議論はあるが(issue #54935など)、ブログ記事として整理されたものはない。
E-E-A-T評価: 325.3KB→87%削減という具体的な実測データと、333個のツール/7チートシートという具体的なプロジェクト規模に基づく一次情報。
判定: 保持
記事3: nextjs-static-page-split-for-tools.md (draft:true)
内容: 記事2とほぼ同一のトピック(next/dynamicのローディングフラッシュ解消、動的ルートから個別ページへの分割)。記事2が「問題Aと問題Bを独立した問題として明確に分離・分析」しているのに対し、本記事は「ローディングフラッシュ解消」に絞った旧版。バンドルサイズ実測値(同一数値)を共有している。
競合調査: 記事2と同一トピックのため省略。
判断: draft:trueであり公開されていない。記事2が同一トピックをより包括的かつ高品質に扱っており、記事3を独立公開する意義は低い。記事2が記事3の上位互換と判断できる。
判定: 削除(記事2との重複)
ただし記事3が先に書かれた「旧版」で記事2が「改訂版」という経緯であれば、削除ではなく単に非公開のままにしておく(draft:trueを維持)だけでよい。いずれにせよ独立した公開記事としては不要。
記事4: nextjs-route-handler-static-and-bundle-budget-test.md
内容: Next.js 15でRoute HandlerのGETがデフォルト動的に変わった仕様変更の説明とforce-static対応、TurbopackでBundle Analyzerが使えない場合の代替として.next/ビルド成果物を直接解析するバンドル予算テストの設計(カテゴリ別予算管理、失敗時の診断しやすいメッセージ設計)。
競合調査結果: Next.js 15のキャッシュ変更を解説する記事は存在する(Medium等)。しかし「Turbopackで@next/bundle-analyzerが使えない環境でビルド成果物を直接解析してVitest等でバンドル予算テストを実装する」という具体的な設計パターンを解説した記事はほぼ見当たらない。Next.js 16.1でexperimental Bundle Analyzerが追加されたとの情報があるが、記事執筆時点(2026-03-03)はその情報が確定していなかった可能性があり、ビルド成果物直接解析という手法は依然として独自性を持つ。
E-E-A-T評価: カテゴリ別BUDGETS定数(実測値+10%マージン)、.next/server/app/**/page_client-reference-manifest.jsのentryJSFilesを使う具体的な手法など、実際のプロジェクトで検証した一次情報。
判定: 保持
記事5: nextjs-seo-metadata-and-json-ld-security.md
内容: OGP/canonical/Twitter Card統一設定パターン(ファクトリ関数)、sitemapのlastModifiedにnew Date()を使う問題と解決、JSON-LDのscript-breakout脆弱性とunicodeエスケープ対策、SEOメタデータのテスト実装。
競合調査結果: Next.js SEOメタデータに関する包括的なガイドは非常に多数存在し(DEV Community、Medium、Prateeksha等)競合が多い。ただし以下の点に独自性がある:
- JSON-LDのscript-breakout脆弱性は認知度の低い問題で、Next.js公式issueでも指摘されているが(issue #46377, #53961等)、ブログ記事として分かりやすく解説したものは少ない
- 「sitemapのlastModifiedにnew Date()を使うな」という具体的な問題指摘は他記事でも触れているが、一覧ページのlastModified設定まで含めた包括的な解説は珍しい
- SEOメタデータのテスト実装コードまで含む記事は少ない
E-E-A-T評価: ファクトリ関数の実装やsafeJsonLdStringifyは実際のプロジェクトコードから抽出した一次情報。ただしSEO全般の知識については競合記事と差別化しにくい部分がある。
改善提案: 競合との差別化のため、「script-breakout対策+テスト実装」という独自性の高い部分を記事の冒頭で前面に出す改善が望ましい。
判定: 改善して保持
総評
5記事中4記事が実際のプロジェクトで発見した問題と一次情報に基づく独自性の高い記事であり、cycle-65での「全削除」判定は過剰だった。特に記事1(シード付き乱数)と記事2(next/dynamicの2つの落とし穴)は日本語で競合が見当たらない貴重な技術記事として保持を強く推奨する。記事3はdraft:trueの旧版であり削除(または非公開維持)が適切。