1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kintone で Mermaid 図を「解像度を落とさず」拡大・移動できるようにした話 〜会議で“使える”図を目指して〜

Posted at

はじめに

Mermaid はとても便利な記法です。
テキストで図が書けて、構造も分かりやすい。

一方で、業務で使っているとこんな場面に出会います。

  • 図は描けたけど、会議で拡大すると文字が潰れる
  • 全体を俯瞰したいのに、スクロールと拡大を繰り返すことになる
  • 「ちょっとここ見せて」と言われた瞬間に詰まる

「描画できる」ことと
「会議で使える」ことは別なんだな、というのを痛感しました。


背景:Notion での運用が限界だった

当初は、Mermaid コードを Notion で管理していました。

  • コード管理はしやすい
  • 図も表示できる

ただし、会議で使うと問題が顕在化します。

  • 拡大すると文字・線が潰れる
  • 全体像を見せたいのに解像度が足りない
  • 「どこを見ているか」が共有しづらい

拡大・移動自体は可能でも、
解像度と操作感が会議用途に耐えないと、結果的に使われなくなる
という点が一番の課題でした。

観点 Notionでの実際の挙動
解像度 拡大すると文字や線が潰れ、可読性が下がる
操作性 スクロール移動が中心で、直感的なパン操作がしづらい
会議利用 「今どこを見ているか」が共有しづらい

mermaid.js 本来の思想に立ち返る

mermaid.js 自体は、

  • SVG ベース
  • 拡大縮小前提
  • 劣化しないことが前提の設計

という思想を持っています。

つまり、

「拡大しても読める」
「全体を俯瞰しながら確認できる」

という使い方が 本来の姿 です。

であれば、

kintone 上でも、その体験を壊さずに使いたい

というのは、自然な発想だと思いました。


目指した利用シーン

このプラグインで一番重視したのは、次のシーンです。

  • 会議・レビューの場
  • 図を見ながら説明・確認する
  • 「ここを拡大」「全体を見たい」が即座にできる

そのために、以下を必須要件にしました。

  • SVG をそのまま描画する
  • 拡大・縮小しても解像度を落とさない
  • マウスホイールでズームできる
  • ドラッグで直感的に移動できる

「高機能化」ではなく、
“本来あるべき使い勝手”を取り戻すことが目的です。

mermaid-viewer.gif


実装のポイント(技術)

1. Mermaid は SVG を直接レンダリング

Mermaid の render() を使い、
SVG をそのまま DOM に差し込みます。

  • Canvas 化しない
  • 画像として扱わない

これだけで、解像度劣化の問題は回避できます。

2. viewBox を内容に合わせて正規化

Mermaid が生成する SVG は、
初期状態だと viewBox が最適でない場合があります。

そこで、

  • getBBox() で描画内容を取得
  • padding を加えた viewBox を再設定

これにより、

  • 初期表示で図が切れない
  • 画面中央に収まりやすい

状態を作っています。

3. panzoom による拡大・移動

SVG に対して panzoom を適用します。

  • マウスホイールでズーム
  • ドラッグで移動
  • 解像度は常に維持

ここで重要なのは、

「ズームできる」より「ズームしても読める」

という点です。

4. kintone プラグインとしての設計

  • 複数の Mermaid フィールドに対応
  • レイアウトの SPACE 要素を描画先に指定
  • 全画面表示モードも用意

設定は最低限にして、
会議中に操作に迷わないことを優先しています。


なぜ無料で公開するのか

このプラグインは無料公開しています。

理由はシンプルで、

  • Mermaid × SVG × pan/zoom
  • kintone プラグインでの扱い方

これらの 実装例として参考にしてほしいからです。

無料だからといって、
UX の基本品質を下げたつもりはありません。

むしろ、

「無料でも、ここまでは当たり前にやる」

というラインを示したかった、という気持ちがあります。


AI と UX について少しだけ

最近は、AI でコードを書くこと自体は簡単になりました。

でも、

  • 会議中にどう使われるか
  • 一瞬の「見づらさ」がどう影響するか
  • どこで使うのを諦められるか

こういう判断は、
実際に使って、失敗してみないと分からない。

今回のプラグインは、

  • Notion で試して
  • 会議で使って
  • 「これはダメだ」と判断した結果

生まれたものです。

こうした実際の使い心地 = UX 作りでは、
まだまだ AI に負けていないと思っています。


おわりに

このプラグインは、

  • Mermaid を描画するだけのツールではありません
  • 会議で「ちゃんと使える」図を目指しています

もし、

  • Mermaid を業務で使っている
  • 図を見ながら説明することが多い
  • 拡大すると読めなくて困ったことがある

という方がいれば、
試してみてもらえると嬉しいです。

コードも公開していますので、
実装の参考としても自由に使ってください。

GitHub リポジトリ

ソースコード・README・使い方はこちらです。

👉 https://github.com/youtotto/kintone-Mermaid-Viewer-Plugin

不具合報告・改善案・PR も歓迎しています。

このリポジトリは、 kintone プラグイン開発におけるUX設計の一例としても公開しています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?