Skip to main content

ER図可視化ライブラリ - SVGとdraw.io形式での出力をサポート

Project description

in4viz - ER図可視化ライブラリ

Python製のER図専用可視化ライブラリ。SVGとdraw.io形式での出力をサポートします。

特徴

  • 2つの出力形式: SVGとdraw.io (mxGraph XML)
  • 統合されたコアアーキテクチャ: 共通のデータモデルとレイアウトエンジン
  • 自動レイアウト: FK関係を考慮した階層的配置
  • 日本語対応: 論理名・物理名の両方表示
  • カーディナリティ表示: IE記法でのカーディナリティ表現
  • 複数の線種: 直線、クランク、スプライン

インストール

pip install in4viz

基本的な使い方

SVG出力

from in4viz import ERDiagram, Table, Column, LineType, Cardinality

# SVGバックエンドでER図を作成
diagram = ERDiagram(backend='svg')

# テーブルを定義
users_table = Table(
    name='users',
    logical_name='ユーザー',
    columns=[
        Column('id', 'ID', 'INT', primary_key=True, nullable=False),
        Column('name', '名前', 'VARCHAR(100)', nullable=False),
        Column('email', 'メール', 'VARCHAR(255)', nullable=False, index=True),
    ]
)

posts_table = Table(
    name='posts',
    logical_name='投稿',
    columns=[
        Column('id', 'ID', 'INT', primary_key=True, nullable=False),
        Column('user_id', 'ユーザーID', 'INT', nullable=False, foreign_key=True),
        Column('title', 'タイトル', 'VARCHAR(200)', nullable=False),
        Column('content', '本文', 'TEXT'),
    ]
)

# テーブルを追加
diagram.add_table(users_table)
diagram.add_table(posts_table)

# FK関係を追加
diagram.add_edge(
    'posts', 'users',
    line_type=LineType.CRANK,
    cardinality=Cardinality(from_side='*', to_side='1')
)

# SVGファイルとして保存
diagram.save('er_diagram.svg')

draw.io出力

from in4viz import ERDiagram, Table, Column

# draw.ioバックエンドでER図を作成
diagram = ERDiagram(backend='drawio')

# テーブルを追加(同じTableオブジェクトを使用)
diagram.add_table(users_table)
diagram.add_table(posts_table)
diagram.add_edge('posts', 'users')

# draw.ioファイルとして保存
diagram.save('er_diagram.drawio')

バックエンド直接指定

特定のバックエンドを直接使用することもできます:

from in4viz.backends.svg import SVGERDiagram
from in4viz.backends.drawio import DrawioERDiagram

# SVG専用
svg_diagram = SVGERDiagram()
svg_diagram.add_table(users_table)
svg_diagram.save_svg('output.svg')

# draw.io専用
drawio_diagram = DrawioERDiagram()
drawio_diagram.add_table(users_table)
drawio_diagram.save_drawio('output.drawio')

アーキテクチャ

in4viz/
├── core/                  # 共通コア(80%)
│   ├── models.py         # データモデル(Table, Column, LineType, Cardinality)
│   ├── layout.py         # レイアウトアルゴリズム(階層構築、自動配置)
│   └── text_metrics.py   # 文字幅計算
├── backends/             # 出力形式別実装(20%)
│   ├── svg/             # SVG出力
│   │   ├── canvas.py
│   │   ├── stencil.py
│   │   └── renderer.py
│   └── drawio/          # draw.io出力
│       ├── canvas.py
│       ├── stencil.py
│       ├── renderer.py
│       └── generator.py
└── er_diagram.py        # ユーザーAPI

主要機能

データモデル

  • Table: テーブル定義(論理名・物理名)
  • Column: カラム定義(型、制約、PK/FK/Index)
  • LineType: 線種(STRAIGHT, CRANK, SPLINE)
  • Cardinality: カーディナリティ(1, 0..1, *, 1..*など)

レイアウトエンジン

  • FK関係を考慮した階層的自動配置
  • 逆トポロジカルソートによる階層構築
  • 関連テーブルの隣接配置
  • 動的キャンバスサイズ調整

表示機能

  • テーブル名:論理名 (物理名)
  • カラム:論理名 (物理名) 型 [制約]
  • PKカラムの境界線表示
  • NOT NULLマーカー(黒四角)
  • FK、Indexの制約表示

ライセンス

MIT License

開発

# 開発モードでインストール
cd packages/in4viz
pip install -e .

# テスト実行
pytest

貢献

プルリクエストを歓迎します!バグ報告や機能要望はIssueでお願いします。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

in4viz-0.6.0.tar.gz (27.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

in4viz-0.6.0-py3-none-any.whl (33.8 kB view details)

Uploaded Python 3

File details

Details for the file in4viz-0.6.0.tar.gz.

File metadata

  • Download URL: in4viz-0.6.0.tar.gz
  • Upload date:
  • Size: 27.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/5.15.136-tegra

File hashes

Hashes for in4viz-0.6.0.tar.gz
Algorithm Hash digest
SHA256 64bd33d40d135f89b506623218c2b3c49191f76b3af268db754d061265218018
MD5 9db816747744881a494b65cab2b420f1
BLAKE2b-256 28e0323ca41e199e11396269b510e3b56012c57121c79d94f656e79a2ae28a1b

See more details on using hashes here.

File details

Details for the file in4viz-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: in4viz-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 33.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/5.15.136-tegra

File hashes

Hashes for in4viz-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bb06de06081028abf512ee66d237857d4ec1dcdc7330a36bbd2cab9c6a3f640f
MD5 83115171591b40865b3db37bbec5082d
BLAKE2b-256 f5040c88985b18d423f27f1ef06605abeb0f26addc8574f360202194a57c44fa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page