Mermaid.jsのスマホ崩れを解決!Astro専用図解コンポーネント3種自作とAI執筆CLI高速化
作成日:
更新日:

Mermaid.jsのスマホ崩れを解決!Astro専用図解コンポーネント3種自作とAI執筆CLI高速化


🔧 論旨

技術記事や解説ブログで図解を入れる際、真っ先に候補に挙がるのが「Mermaid.js」です。ところが実際にスマホと 27 インチ 5K モニターの両方で表示を確認してみると、「横長フロー図がスマホ画面で豆粒のように縮小されて読めない」「AI に書かせると括弧や記号で構文エラーを連発する」「クライアント JS の描画待ちで画面がガタつく」といった悩みが尽きません。

結論からお伝えすると、ブログ記事に登場する図解の 9 割は 「フロー図・比較カード・階層スタック」の 3 パターンに集約でき、これらをクライアント JS ゼロの Astro 専用 HTML/CSS コンポーネントとして自作するのが、視認性・表示速度・AI 執筆効率のすべてで圧勝する最適解 です。本記事では、スマホで自動的に縦積み&矢印回転する CSS 設計と、AI の手戻りをゼロにした執筆 CLI ツールキットの全貌を公開します。

🔧 合わせて読みたい深まる関連情報
🔧 対象となる方
  • Mermaid 図解をスマホで見たときの 「文字が小さすぎてピンチズームしないと読めない問題」 を根本から解決したい方

  • ライトモード/ダークモードの切り替えに瞬時に追従し、JavaScript 読み込みゼロ(CLS ゼロ)で動く美しい図解部品 を Astro で作りたい方

  • AI エディタに記事を書かせる際、お手本探しのファイル読み込みや書式ミスの手直し往復をゼロにしたい 方

Mermaid図解がスマホとAI執筆で抱える4つの限界

Mermaid はテキストから複雑なネットワーク図やシーケンス図を描ける素晴らしいライブラリですが、「Web 記事の本文中で誰にでも読みやすく見せる」という用途に限ると、SVG 固定座標レンダリングゆえの構造的な弱点があります。

評価ポイント従来の Mermaid.js(クライアント描画)自作 Astro 図解コンポーネント 3 種
スマホでの可読性横長図解が画面幅に合わせて縮小され豆粒文字になる自動で縦積みに変形し、矢印も下向きへ 90 度回転
表示速度・CLSランタイム JS 読込+描画計算まで高さが確定しないビルド時 HTML/CSS 出力(JS ゼロ・CLS ゼロ)
テーマ切替・SEOダーク切替時に再描画が必要・SVG 内文字が扱いにくいCSS 変数で瞬時に色追従・純粋な HTML として検索対象
AI 執筆との相性括弧 () やスラッシュで構文エラーを起こしやすいProps と通常文章だけで書けるため構文ミスが激減
質問するおじさん

パソコンの大きな画面で作っとるときは「おお、カッコいい図ができた!」と満足しとるんじゃけど、あとから iPhone で自分の記事を開いてみたら、米粒みたいな文字になっとって愕然とするんよね。

解説ナビゲーター

まさにそこが一番の盲点なんです!複雑な網目状のグラフなら Mermaid の出番ですが、記事で伝えたい「手順の流れ」「A と B の違い」「3 階層の仕組み」なら、CSS グリッドとコンテナクエリで組んだ Astro コンポーネント に置き換えるだけで劇的に読みやすくなりますよ!


クライアントJSゼロのAstro専用図解3種の設計

display:contentsとコンテナクエリの妙技

自作したのは FlowDiagram(手順・因果フロー)、CompareDiagram(2 列/3 列の対比カード)、LayerDiagram(上下階層のアーキテクチャ図) の 3 種類です。特に工夫した CSS 設計の急所が 2 つあります。

1 つ目は、横並びフロー図における 「カード幅の完全 1:1 均等配分」 です。各ステップ部品(FlowStep)の中に「カード本体」と「右向き矢印コネクタ」をセットで入れ、最後のステップだけ CSS の :last-child .flow-connector { display: none; } で矢印を消すと、そのままでは最後のステップだけが矢印のぶん狭くなってカード幅が不揃いになります。

そこで横並び時は親ラッパーに display: contents を指定して DOM の箱をレイアウト上透過させ、全カード本体に直接 flex: 1 1 0%; min-width: 0; を効かせることで、矢印の幅を除いた残りスペースが全カードへ寸分違わず均等配分されるようにしました。

/* FlowDiagram.astro(抜粋:ラッパーを透過して全カード幅を1:1均等化) */
.flow-diagram {
  container-type: inline-size;
}
.flow-diagram.is-horizontal .flow-track > :global(.flow-step-unit) {
  display: contents;
}
.flow-diagram.is-horizontal .flow-track > :global(.flow-step-unit .flow-card) {
  flex: 1 1 0%;
  min-width: 0;
}
.flow-track > :global(.flow-step-unit:last-child .flow-connector) {
  display: none;
}

/* コンテナ幅600px以下(または4ステップ以上で760px以下)なら自動で縦積み+矢印90度回転 */
@container (max-width: 600px) {
  .flow-diagram.is-horizontal .flow-track {
    flex-direction: column;
  }
  .flow-diagram.is-horizontal .flow-track > :global(.flow-step-unit) {
    display: flex;
    flex-direction: column;
  }
  .flow-diagram.is-horizontal .flow-track > :global(.flow-step-unit .flow-arrow-svg) {
    transform: rotate(90deg);
  }
}

2 つ目は、画面全体の幅(@media)だけでなく図解自身の横幅を見る CSS コンテナクエリ(container-type: inline-size) と :has(> :nth-child(4)) の併用です。これにより、ステップ数が 4 つあって横幅が窮屈になったときだけ、PC の狭いウィンドウでも自動的に縦積みレイアウトへ美しく切り替わります。

実演!フロー図・比較図・階層図の3パターン

実際にこのページ上で 3 つのコンポーネントを動かしている実演サンプルをご覧ください(スマホでご覧の方は縦積み+下向き矢印に、PC でご覧の方は横並びやマルチカラムに自動最適化されています)。

まずは ① FlowDiagram + FlowStep です。tone 属性(default / accent / danger / success)と矢印ラベル(arrow)を渡すだけで、視線が自然に流れるステップ図になります。

実演1:FlowDiagram(PCでは均等横並び・スマホでは自動縦積み&矢印回転)
Step 1
骨格の自動生成

CLIコマンド1発でフォルダ、アイキャッチWebP、テンプレートを準備します。

Step 2
構造化原稿の執筆

Markdownと3種の図解コンポーネントを使って、構文エラーなく本文を記述します。

Step 3
高速プリフライト検査

見出し文字数・太字スペース・画像サイズの違反がないかを15ミリ秒で自動検査します。

最後のステップの後ろにある矢印はCSSで自動非表示になります

次に ② CompareDiagram + CompareCard です。従来品との比較や「NG 例 vs OK 例」を色分けバッジ付きで並べるのに最適です。

実演2:CompareDiagram(2列・3列対応の対比カード)
NG vs OK
手戻り多発
手作業での毎回コピペ執筆
  • 過去記事を何本も開いてインポート文や書き方を探す時間がかかる
  • 見出しの30文字超過や太字スペース抜けにデプロイ後まで気づけない
一発合格
ひな形×専用図解×即時Lint
  • 最初から正しいimport文と構成が入った状態で執筆に集中できる
  • 保存直後に機械検査が走り、公開前の手直し往復がゼロになる

そして 3 つ目が ③ LayerDiagram + LayerBox です。システム構成や優先順位の階層を表現でき、中間レイヤーだけを columns={2} で横 2 分割するといった柔軟なレイアウトにも対応しています。

実演3:LayerDiagram(システム階層・パイプライン図)
Layer 1
プレゼンテーション層:Astro 静的HTML + 専用図解CSS

ブラウザがHTMLを受け取った瞬間に完成形で描画され、レイアウトシフトが一切発生しません。

Layer 2
コンテンツ&検証層:MDX原稿 + article_toolkit.mjs
原稿テンプレート(templates/)

記事種別ごとの必須枠と図解importを標準完備します。

プリフライト検査器(check)

見出し・タグ閉じ忘れ・画像寸法上限を即座に判定します。

ライトモードとダークモードの切り替えにもCSS変数だけで瞬時に追従します

AIの無駄な往復をゼロにする執筆CLIツールキット

ミリ秒単位の書式検査とアフィリエイト自動登録

美しい図解コンポーネントを作っただけでは、まだ半分です。AI エディタと一緒に何十本もの記事を執筆していると、AI が毎回「既存の記事はどう書いているかな?」と過去の .mdx を 5〜10 ファイルも読みに行ったり、手作業でアフィリエイト定義ファイルを編集してカンマ抜けを起こしたりといった 「非本質的な往復コスト」 が発生します。

そこで当サイトでは、templates/ フォルダにマスター原型を置いた上で、定型作業をすべて 1 コマンドで片付ける Node.js 製 CLI scripts/article_toolkit.mjs を整備しました。

🔧 🛠️ article_toolkit.mjs に集約した5つの高速自動化コマンド
  1. scaffold(初期骨格・画像の一括準備) : スラッグと元画像を渡すだけで、ディレクトリ作成、アイキャッチ画像のアップスケールなし .webp 変換(sharp 駆動)、会話履歴 DB からの pubDate 自動解決、末尾の猫画像の配置までを 1 秒で完了させます。

  2. add-affiliate(商品カードのワンコマンド登録) : 商品名と検索キーワードを渡すだけで、Amazon・楽天市場・Yahoo! ショッピングの二重 URL エンコード済み検索リンクを生成し、中央辞書(src/data/affiliates/index.ts)への import 追加までアトミックに完結させます。

  3. check(15ミリ秒のプリフライト書式検査) : フルビルド(約 30 秒)を回す前に、わずか 0.015 秒で「H2/H3 見出しの文字数超過・先頭番号混入」「日本語と太字マーカーの半角スペース」「GadgetSection の閉じ忘れ・入れ子」「元画像サイズを超えた width 指定」「未登録のアフィリエイト ID」を一括検出します。

  4. outline(分割読み込み不要の構造マップ出力) : 長文記事を部分改修する際、見出し・枠・表・商品カードの正確な行番号マップを一瞬で出力し、AI がピンポイントの行範囲だけを読めるようにします。

  5. add-related-link(既存記事への相互リンク安全注入) : 関連する複数の既存記事の「合わせて読みたい深まる関連情報」枠へ、重複チェックと自動バックアップ付きで新記事へのリンクを一括追加します。

ノルウェージャンフォレストキャット

AI さんに「気をつけて書いてね!」と毎回お願いするより、0.01 秒で見つけ出してくれる検査道具を渡してあげるほうが 100 倍確実でちね!

解説ナビゲーター

まさにその通りです!AI は人間のような「なんとなくの空気読み」は苦手ですが、明確な型(コンポーネント)と機械的な検査コマンド(check) を用意してあげると、驚くほど正確に一発で美しい記事を仕上げてくれるようになります。


まとめ:AIが迷わず書ける『型と道具』を先に作る

個人メディアや技術ブログを長く心地よく続けていく秘訣は、毎回の執筆で気合や手作業に頼らないことです。「スマホでも 5K でも絶対に崩れない Astro 図解コンポーネント 3 種」と「0.01 秒でミスを弾くスキャフォールド CLI」 という土台を一度作ってしまえば、あとは中身の一次検証と読者への価値提供だけに 100% 集中できるようになります。

🔧 ✅ 本アプローチで幸せになる人・向かない人
  • 導入して幸せになる人 : Astro で記事を継続発信しており、スマホでの図解の読みやすさと AI 執筆のスピード・品質を一気に引き上げたい方

  • 別の選択肢が向く人 : 記事数がごくわずかで図解もほとんど使わず、標準の箇条書きと表だけで十分な方

ご自身の Astro ブログにも同様の専用図解コンポーネントと執筆 CLI ツールキットを取り入れたい方は、以下のプロンプトを最上位モデルの AI エディタへ渡してカスタマイズしてみてください。

🔧 🤖 自分の環境に合わせてAIに構築させるコピペ用プロンプト

※CSS コンテナクエリや MDX パーサーと干渉しない AST・正規表現検査の設計には高い精度が求められるため、必ず 『Gemini 4 Argon』(または同等以上の最上位推論モデル)を選択して実行してください。

以下の記事の設計を参考に、私の Astro プロジェクトへ「クライアントJSゼロの専用図解コンポーネント3種(FlowDiagram / CompareDiagram / LayerDiagram)」と「記事スキャフォールド&高速プリフライト検査CLI」を導入してください。
参照URL: https://lab.chihouzakki.com/blog/review/astro-custom-diagrams-mermaid-alternative-scaffold/

【作業ルール(厳守)】
1. まず私のサイトの既存カラースキーム(ライト/ダークモードのCSS変数)と MDX ディレクトリ構造・フロントマター定義(src/content.config.ts 等)を確認し、デザインに自然に馴染む実装計画を提示して合意を得てください。
2. FlowDiagram は横並び時に display: contents と flex: 1 1 0% で全カード幅が均等になるようにし、スマホ幅や狭幅コンテナ(@container)では自動で縦積み+矢印90度回転するレスポンシブ設計にしてください。
3. プリフライト検査CLI(checkサブコマンド)には、見出し文字数チェック、未閉じタグ検出、画像ファイルの存在確認を含め、数ミリ秒で実行できるようにしてください。

「崩れない図解の器」と「迷わない道具箱」を揃えて、毎日の執筆をもっと楽しくクリエイティブな時間にしていきましょう!

お気に入りのベッドで手足を伸ばしてすやすや眠るノルウェージャンフォレストキャット

▲ 図解の崩れ直しから解放されれば、夜はぐっすり眠れます