MermaidLayoutFinisher
公開中Mermaidのフローチャートを自動レイアウトで描画し、直しきれない配置をドラッグと整列で仕上げてから、SVG・PNG・PowerPointへ書き出すWebツール。データはブラウザ内にのみ保存されます
公開日

対象ユーザー
- Mermaidで描いた図を資料に貼る前に配置を整えたい人
- AIが生成したフローチャートをそのまま使えず困っている人
Mermaidの自動レイアウトは、たいてい8割まで正しい図を作ってくれます。問題は残りの2割です。この線がここをまたがなければ、このノードがあと少し右なら、と思っても、コードでは手の出しようがありません。MermaidLayoutFinisherは、その「あと少し」をドラッグで仕上げて、SVG、PNG、PowerPointへ書き出すためのWebツールです。
解決する課題
Mermaidはテキストから図を生成できる記法として定着し、ChatGPTのようなAIもフローチャートをMermaidで返すようになりました。図の内容を文字で管理できるのは大きな利点です。
一方で、レイアウトはアルゴリズム任せです。ノードの数が増えると、線の交差や不自然な配置がどうしても残ります。描き直せるツールへ図を作り直すと、今度はコードとの対応が切れて、修正のたびに図を触り直すことになります。
MermaidLayoutFinisherは、コードを正としたまま見た目だけを直せるようにしました。図の内容(ノード、つながり、ラベル)はコードが唯一の入力源で、キャンバスで変更できるのはノードの位置と線の経路だけです。コードを編集しても、手で調整した配置は保たれます。
主な機能
コードを貼ると、フローチャートを解析して自動レイアウトで描画します。AIの回答を丸ごと貼っても、Mermaidのコードブロックだけを自動で抽出します。そこからノードをドラッグして動かし、複数選択、整列(左右上下、等間隔)、グリッド吸着で整えます。線は直角、直線、曲線を切り替えられ、線をクリックすれば折れ点の追加や、ノードのどの辺から出入りするかの指定、ラベル位置の移動もできます。
手で全部を並べ直すのが面倒な図には、レイアウト最適化があります。おまかせ最適化は、複数の配置候補を、実際に描画される線で測ったスコア(線とノードの重なり、線同士の交差、曲がり角、総延長、面積)で比較して、最良のものだけを適用します。どのモードでもノード同士の重なりは許さず、現在より悪化する結果は返しません。改善する箇所がなければ「現在の配置が最良でした」と正直に答えます。
書き出しはSVG、PNG、PowerPointの3形式です。PowerPointは画像ではなく、角丸四角形やひし形といったネイティブ図形としてスライドに配置するため、貼り付けたあとにPowerPoint上で色や位置を編集できます。作った図はブラウザに自動保存され、プロジェクトファイル(.json)や共有リンクでも持ち運べます。
開発の背景
このツールは、BenriWorks自身の困りごとから生まれました。設計資料やブログの図解をMermaidで書き、仕上がりに満足できず、最後はドローツールで描き直す。この繰り返しの中で、欲しいのは高機能な作図ツールではなく、自動レイアウトの結果を少しだけ動かせる「仕上げ工程」だと気づきました。
だからこのアプリは、図を描く機能を持ちません。内容の編集はコードに、配置の仕上げは手に、と役割を分けることが設計の中心です。
技術と設計
Next.jsとTypeScriptで実装した静的なWebアプリで、Vercelで配信しています。ページはすべてビルド時にプリレンダリングされ、実行時のサーバー処理はありません。
Mermaidの解釈には、flowchart系の実用サブセットを対象にした独自パーサを使っています。既存のMermaidレンダラを使わないのは、ノードの位置や線の経路を後から操作できるデータ構造が必要だからです。未対応の記法は黙って無視せず、行番号つきのエラーや警告として表示します。
配置の扱いにも判断があります。手で置いたノードは絶対座標で保持し、コードにノードを追加したときは、固定済みノードを動かさずに空いている場所へ新しいノードを配置します。線は毎回ノードの現在位置から計算し直すため、どこへ動かしても線は必ずつながります。画面のSVGをそのまま複製して書き出すので、画面と出力が食い違うこともありません。
入力したコードと配置はブラウザのlocalStorageにのみ保存され、サーバーへの送信はありません。共有リンクも図の内容を圧縮してURLに埋め込む方式で、サーバーを経由しない設計です。
現在の状態と既知の課題
公開中で、BenriWorksの資料づくりでも日常的に使っています。対応しているのはflowchart系の図だけで、シーケンス図などの他の図種別はエラーになります。PowerPoint書き出しには形式上の制約がいくつかあり、たとえば傾きが逆向きの平行四辺形はPowerPoint側に対応する図形がないため、反転しない側の形で出力されます(該当時は件数を通知します)。
書き出した図をプレゼン資料に貼るという用途では、日本地図を塗り分けてPowerPointへ書き出す「白地図 Studio」が兄弟のような関係にあります。どちらも「資料の中で編集を続けられる形式で渡す」ことを大事にしています。
スクリーンショット

MermaidLayoutFinisherの編集画面。左にMermaidコードのエディタ、右に自動レイアウトされた承認フローの図が表示され、線の形を直角・直線・曲線から選ぶツールバーが並ぶ
分野・使用技術
関連記事

ガイド公開
白地図をパワポ資料に使う方法 — 塗り分けから貼り付けまでと権利の注意点
営業資料や報告書に日本地図を載せるときの実務手順を解説します。地図画像の著作権・利用条件の確認ポイント、塗り分け地図の作り方、PowerPointで崩れない貼り付け方をまとめます
#白地図#資料作成関連アプリ: 白地図 Studio

ガイド公開
高圧受電とは — 低圧との違いとキュービクルの基本
建物の電気の受け方には低圧受電と高圧受電があります。契約電力による使い分け、キュービクルの役割と中身、保安管理の義務、CB形とPF-S形の違いまで、基本を一気に解説します
#高圧受電#キュービクル関連アプリ: 高圧受電設備 単線結線図ジェネレータ

開発記事公開
LLMの読み取り結果を、検算を通ったときだけ信じる
構造化スタジオで、見積書の算術的な冗長性を利用し、決定論の検算を通過したデータだけを蓄積する設計を紹介します
#LLM活用#個人開発関連アプリ: 構造化スタジオ

開発記事公開
音声認識ストリームの時間制限を、利用者に見せずに乗り越える
対話支援アプリLiveBriefで、クラウド音声認識のストリーム上限や無音切断を透過的なローテーションで吸収した実装を紹介します
#音声認識#個人開発関連アプリ: LiveBrief
関連アプリ

ベータ版
白地図 Studio
日本の都道府県・市区町村を塗り分けて、プレゼン資料向けの白地図を書き出すWebアプリ。ExcelやCSVの貼り付けから一括で色分けでき、PNG・PPTX・PSD・SVGで出力できます。編集はブラウザ内で完結します
業務効率化

公開中
NanoBanana Play
Gemini APIを使って、画像の生成・編集・合成をブラウザで試せるプレイグラウンド。プロンプトと元画像を差し替えながら、生成AIで画像がどこまで扱えるかを手を動かして確かめられます
業務効率化

プロトタイプ
LiveBrief
対面の商談やヒアリング中の音声をリアルタイムに文字起こしし、会話中の判断を支えるカードを提示する個人向け対話支援アプリ
業務効率化

公開中
AI Detective
暗号化された現場記録を観察し、証言や物、時系列の食い違いと、その記録がどこから来たのかを検証していく静かなSF推理ゲーム。3ステージ・全14事件を収録し、根拠が足りなければ「保留」も正式な選択肢です
ゲーム