概要
oxdraw は、 Mermaid記法 を用いた高品質なダイアグラム作成を支援するツール Rust製CLI と ReactベースWebインターフェース で構成 視覚的な調整を 宣言的コード としてソースに反映、 バージョン管理 と 再現性 を両立 Mermaid互換を維持しつつ、 Lucidchart並みのカスタマイズ性 を実現 AI生成ダイアグラム編集など 現代的ワークフロー にも対応
oxdrawの概要
- oxdraw は 宣言的かつ再現可能な記法 で高品質なダイアグラム作成を実現
- Mermaid記法 でチャートを記述、Webインターフェースで細部調整可能
- 視覚的な変更は 宣言的コード としてソースへ保存、 バージョン管理 や 再現性 を確保
- Mermaidファイルに コメントとして変更を保存、他ツールとの互換性維持
- Rust製CLI で.mmdファイルを画像化、 ReactベースWebエディタ で編集
開発の背景とビジョン
- Mermaid は手軽だが、 細かな調整が困難 でLucidchart等へ移行が必要になる課題
- コード生成系ダイアグラム の利便性と ダイアグラムソフトの柔軟性 の両立を目指す
- AIによる.mmdファイル生成 を活用し、 ユーザーが細部をカスタマイズ できるワークフロー
- 複雑なアーキテクチャ図作成 や 大規模コードベースの可視化 を高速化
- コミュニティからのフィードバックや機能要望 も歓迎
基本的な使い方
- Cargoからインストール
cargo install oxdraw
- ファイルからダイアグラムを画像化
oxdraw --input flow.mmd
- インタラクティブエディタの起動
oxdraw --input flow.mmd --edit
CLIフラグ一覧
-i, --input <PATH>:Mermaidソースファイル指定(-でstdin対応)-o, --output <PATH>:出力先指定、デフォルトは<input>.svg--png:PNG形式で出力--scale <FACTOR>:PNG出力時のスケール倍率(デフォルト10.0)--edit:エディタを起動--serve-host <ADDR>:エディタ時のバインドアドレス指定(デフォルト127.0.0.1)--serve-port <PORT>:エディタ時のポート指定(デフォルト5151)-b, --background-color <COLOR>:背景色指定(SVGのみ対応)-q, --quiet:標準出力の情報メッセージ抑制
フロントエンド機能
- ノードやエッジの削除 (Delete/Backspaceキー対応)
- ノードごとの色指定 (ダブルクリックでリセット)
- ノードスタイルのリセット
- エッジの色・線種・矢印方向指定
- エッジの制御点追加・削除によるルート調整
- エッジスタイルのリセット (ダブルクリックで手動パス解除)
- ノードのドラッグ で位置調整(グリッドスナップ・ガイドあり)
- エッジハンドルやラベルハンドルのドラッグ でルート編集
- サブグラフ単位での移動 (ノード・エッジをまとめて移動)
- ソースパネル でMermaidファイルのミラーリング・自動保存・状態表示
- ツールバーでの状態表示 (ロード・保存・編集中ファイルパス)
ダイアグラム描画アルゴリズム
- パス描画アルゴリズム は最適解が一意でなく、好みが分かれる設計
- 滑らかな線 派と、 明確なエッジ 派の両方に対応を模索
- 重複線回避 と 線の長さのバランス も考慮
- ノードの移動やエッジ削除時 に自動で再計算
- 今後も改良予定
今後の展望とコミュニティへの呼びかけ
- Mermaid.js のような宣言的生成と Lucidchart のような柔軟編集の両立を目指す
- AIによる初稿生成 → ユーザーの細部調整 という新しいダイアグラム作成フロー
- 建築図やコードベース可視化 の効率化を実現
- フィードバック・機能要望 を歓迎、 GitHub Issue での提案も推奨