Micron SOCAMM2 解説記事を仕上げるまでの編集プロセスと学び
この記事の位置づけ
2026-06-06 の朝、Micron が2日で約20%下げた件について解説記事を1本書いた(/micron-socamm2-capacity-cut)。完成した記事の中身そのものは別ファイルに残してあるので、ここでは 「どう書いて、どこで詰まって、どう直したか」 の編集プロセス側を残す。
書き終わってから振り返ると、踏んだ落とし穴の半分は技術的な仕様の理解不足、もう半分は「自分のサイトの非公開の作法」を勘違いしていたことから来ていた。次に似た記事を書くときに同じ穴に落ちないよう、時系列で記録する。
1. 元記事を一段階噛み砕いた
最初に渡したのは X のポスト本文だけだった。「Micron、2日で約20%安 | 市場が読み間違えたSOCAMM2の容量半減の理由 $MU」というタイトル相当の見出しと、SemiAnalysis のレポートに対する反応をまとめた本文。
ポスト原文のままでは、SOCAMM2 が何か知っている読者にしか刺さらない。Claude Code に対しては「一段階噛み砕いて、技術背景・需給ロジック・リスクまで丁寧に解説する形に書き直して」と指示した。
書き直しの結果として入った構造はこうなった:
- 結論セクションを冒頭に出す(株価が動いた事実 → 売られた解釈 → その解釈は誤り、の3行で要点を伝える)
- SOCAMM2 が何かを基礎から書く節を独立して立てる
- 「容量半減」の中身を正確に分解する節(半減したのは1モジュールあたりで、モジュール数は増えている)
- 需給ロジックを「供給逼迫下で出荷台数を増やすための設計判断」と言い切る節
- 留保とリスクを最後に置く(弱気側の言い分も拾う)
つまり、原文の主張は変えず、前提知識ゼロの読者でも結論まで降りていける階段を間に挟んだ、という改稿だった。
2. 一番大きな学び:非公開化の方式を間違えた
ここが今日一番の学びだったので長めに書く。
最初、「非公開で保存して」と指示したら Claude Code は internal/2026-06-06/micron-socamm2-capacity-cut.md に置いた。content-management スキルにも「非公開ドキュメントは internal/ に置く」と書いてあるので、その通りに動いたわけだ。
ところが自分でブラウザを開いて確認すると、/blog/unpublished(dev 限定の非公開一覧ページ)に Micron 記事が出てこない。「非公開の一覧に入ってないんですけど。ちゃんと表示確認して」と差し戻した。
ここで Claude Code が腹落ちした説明を返してきた:
internal/配下は 完全な内部メモ。SQLite のインデックスにも入らないし、ビルド対象外。だから/blog/unpublishedにも出ない/blog/unpublishedはcontent/配下にあって frontmatter にunpublished: trueが付いている記事だけを拾う dev 限定ページ- 自分が欲しかったのは後者だった。
internal/は「本当に外に出さない開発メモ・指示書」のための場所で、「公開予定だがまだ非公開」のドラフトには使わない
つまり「非公開」という日本語に2つの意味があった:
| 用途 | 置き場所 | frontmatter | 一覧表示 |
|---|---|---|---|
| 完全な内部メモ・指示書(一生公開しない) | internal/{日付}/ | 不要 | どこにも出ない |
| 公開予定だがまだ未公開(ドラフト) | content/{月}/{日付}/ | unpublished: true | /blog/unpublished に出る |
Claude Code には「content/ 配下に frontmatter 付きで作り直して、internal/ 側は削除して、dev サーバーで表示確認まで」と一気に投げた。最後に Chrome DevTools MCP で /blog/unpublished を開かせて、リスト上に Micron 記事が並んでいることを目視で確認した。
教訓: 「非公開で」と言うときは、internal/ 行きか unpublished: true 付きの content/ 行きかをセットで指定する。 スキルのドキュメントにも、この2方式の使い分け表を後で足したほうがいい。
3. Meritz Securities のオリジナルテーブルを画像から再現
途中で Meritz Securities Research Center のオリジナル表(SOCAMM2 容量別の出荷モジュール数推移)を画像で渡された。
画像認識でテーブルを読み取らせて、Markdown テーブルとして本文に差し込ませた。Total Volume 行と Source 注記を含めて再現させたのと、出典表記を表のすぐ下に置かせたのがポイント。
| Module Capacity | Old Forecast | New Forecast | Change |
|-----------------|--------------|--------------|--------|
| 192GB | 100 | 50 | -50% |
| 96GB | 20 | 100 | +400% |
| 64GB | 60 | 90 | +50% |
| **Total Volume**| **xxx** | **xxx** | **+10〜20%** |
> Source: Meritz Securities Research Center
表が入ったことで、本文の「総量はむしろ増えている」という主張に証拠を1つ添えられた。形容詞で「需給は強い」と書いてもただの感想だが、表があると「1モジュールあたり容量は半減したが、出荷モジュール数がそれ以上に積み上がる」という事実が読者の脳内で見える。
4. Dylan Patel の X ポストを実物に差し替えた
第4節は当初「Dylan Patel(SemiAnalysis)自身が、自社レポートの弱気解釈にXで釘を刺している」という形で書いていたが、引用が推測ベースだった。
ユーザーから「X サーチでちょっとリンク探してください」と指示が入った。x-search スキルを呼んで、Dylan Patel の @dylan522p アカウントから該当発言を検索した。
3本ヒットした。要点はだいたいこうだった:
- 「自社が書いたことを引用する人は、たいてい中身の大半を読み落とす」
- 「容量を削るのは需要が弱いからではなく、ラックあたりの稼働密度を上げるため」
- 「初期はホットスワップで小さく出して、後から積み増す」
これらを推測の文章ではなく、実ポストの原文(英文) + 日本語訳 + URL に差し替えた。URL は <a href="..." target="_blank" rel="noopener noreferrer">→ 元ポスト(@dylan522p, 2026-06-04)</a> の形で貼った(理由は次節)。
ファクトに置き換えたら、第4節は「筆者の推測」から「Patel 本人の発言を集めた節」に格上げされた。引用元を出した時点で議論の格が一段上がった感覚があった。
5. 外部リンクを target="_blank" 化したら描画が崩れた
ここで2段階の罠を踏んだ。
段階1: 普通のマークダウンリンクで書いたら同タブで開いた
最初、X リンクをこう書いていた:
[元ポスト](https://x.com/dylan522p/status/1234567890)
これで描画はされたが、ブラウザで実際にクリックすると同じタブで X に飛んでしまう。本文を読んでいた読者を X に持っていかれて読書フローが切れる。「リンクの画面遷移をブロックでしたっけ、ブランクでしたっけ、タブ開くやつにしてください。新規タブ。」と指示した。
段階2: target="_blank" に変えたらリンクが二重に入れ子になった
target="_blank" を付けたいので、HTML アンカーで書き直させた:
<a href="https://x.com/dylan522p/status/1234567890" target="_blank" rel="noopener noreferrer">https://x.com/dylan522p/status/1234567890</a>
ところがブラウザで見ると、リンクの色が二重についていて、テキストが入れ子になっている。画面上のテキストが妙に重なって、クリック領域も2つの <a> が重なってぐにゃっとしている。
原因は @nuxt/content の GFM autolinker だった。アンカー要素の中に URL 文字列がそのまま入っていると、Markdown 処理段階で「URL らしい文字列」を見つけて自動でリンク化する。結果として:
<a href="https://x.com/..." target="_blank">
<a href="https://x.com/...">https://x.com/...</a>
</a>
という入れ子の <a> ができていた。
段階3: リンクテキストを URL から「ラベル」に変える
直し方は単純だった。<a> の中身を URL 文字列ではなく、URL でないラベルに変える:
<a href="https://x.com/dylan522p/status/1234567890" target="_blank" rel="noopener noreferrer">→ 元ポスト(@dylan522p, 2026-06-04)</a>
これで autolinker は反応せず、1個の <a> だけが描画された。ブラウザで再確認したら3本とも target="_blank" 付きの単一リンクで出ていた。
ルールを永続化した
同じ事を後から繰り返さないために、.claude/rules/external-link-target-blank.md を作って外部リンクの書き方をルール化した。プロジェクトの CLAUDE.md からも参照を張った。NG / OK の例を3パターンずつ書いてあるので、次回からはこのファイルを見れば済む。
6. 周辺材料を並列でファクトチェック
最後にユーザーから「直近のメモリ価格の材料一覧」がまとめて投げられた。SemiAnalysis の SOCAMM 容量変更、Micron CEO 発言、SK hynix のコメント、Raymond James アナリストの動き、CEO の 10b5-1 売却、MU のハイベータ性、など複数項目。
「並列でファクトチェックして」と指示したら、Claude Code がサブエージェントを並列で走らせて、X / 公開資料から原文を取ってきた。並列にしたのは独立に検証できる項目が複数あったから。1件ずつ直列で調べると時間がかかるが、独立しているなら同時に投げて待つだけでいい。
並列ファクトチェック後、本文末尾に「周辺材料の整理(ファクトチェック済み)」セクションを追加した。SemiAnalysis のラックあたり SOCAMM DRAM が約55TB→約28TBに削減された件など、検証できた数字だけを残した。
試行錯誤テーブル
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | 元記事の噛み砕き | Xポスト本文をそのまま提示 → Claude Code に「技術背景から書き直して」と指示 | 結論先出し → 基礎 → 分解 → リスク、の構造に再編できた | 改稿は「階段を挟む」イメージ。主張は変えない |
| 2 | 非公開化 | internal/2026-06-06/ に保存 | /blog/unpublished 一覧に出てこなかった | internal/ は完全な内部メモ用。ドラフトは content/ + unpublished: true |
| 3 | テーブル追加 | Meritz の表を画像認識で Markdown 化 | Total Volume 行と Source 注記まで再現できた | 表があると主張に画が宿る |
| 4 | 引用差し替え | 推測ベース → x-search で実ポストを3本特定 → 原文+日本語訳+URL | Section 4 が「推測の節」から「Patel 本人の発言を集めた節」に格上げ | ファクトを当てたら議論の格が一段上がる |
| 5 | 外部リンク (1) | [元ポスト](URL) で記述 | 同タブで開いて本文ページが上書きされた | 外部は別タブが原則 |
| 6 | 外部リンク (2) | <a target="_blank">URL</a> でアンカー化 | リンクが二重に入れ子になって描画が崩れた | GFM autolinker が URL 文字列に反応する |
| 7 | 外部リンク (3) | アンカー内のテキストを「→ 元ポスト」に差し替え | 1個の <a> で target="_blank" 付き、崩れなし | リンクテキストに URL を使わない |
| 8 | 並列ファクトチェック | 「並列で」と一言指示 | サブエージェントが独立に検証して原文を集めてきた | 独立項目は並列が効く |
| 9 | コミット分割 | 記事 / ルール / スクショの3単位で分けてコミット | 後から git log で意図が読める履歴になった | 論理単位で切ると git blame で追いやすい |
7. 3つの論理単位でコミット分割
最後に、未コミットの変更を3単位に分けてコミットした:
- 記事本体 —
apps/web/content/2026-06/2026-06-06/micron-socamm2-capacity-cut.md(374行追加) - 外部リンクルール —
.claude/rules/external-link-target-blank.md新規追加 +CLAUDE.mdから参照 - スクリーンショット — Micron 記事の表示確認スクショ
memory-makers 関連や 6/5 の他記事は今回のセッションと無関係なので未ステージのまま残した。1コミットに全部混ぜると、後から git log で「何のためにこの変更が入ったか」が読めなくなる。
今日の学び
- 「非公開」には2方式ある:
internal/行き(完全な内部メモ)と、content/+unpublished: true(公開予定のドラフト)。「非公開で」と指示するときはどっちかを明示する - 外部リンクは
<a target="_blank" rel="noopener noreferrer">で固定。リンクテキストには URL を使わない。.claude/rules/external-link-target-blank.mdにルール化した - GFM autolinker は URL 文字列を勝手にリンク化する。HTML アンカー内に URL を入れると二重リンクで描画が崩れる
- 引用は推測ではなく原文を当てる。x-search で1分かけて拾うだけで、節の格が一段上がる
- 独立に検証できる項目は並列ファクトチェックが効く。「並列で」と一言入れるとサブエージェントが分担してくれる
- コミットは論理単位で切る。記事・ルール・スクショを混ぜない
形容詞で「丁寧に解説した」と書くと自己満足で終わるが、動詞で書くと「結論を冒頭に出した」「基礎節を独立させた」「表を画像から再現した」「Patel の3本のポストを当てた」「<a target="_blank"> を1個に直した」と検証可能な事実が並ぶ。今回はそれを目視で確認して回せた回だった。