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.2.0.tar.gz (23.6 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.2.0-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: in4viz-0.2.0.tar.gz
  • Upload date:
  • Size: 23.6 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.2.0.tar.gz
Algorithm Hash digest
SHA256 bdcacc6a15a4cd1a189495300b0352dd2a9eee9cfe2519458f7d75f3679fc475
MD5 4a1aa6ffbfa339afb904da4a27617222
BLAKE2b-256 e7b500fbee961f9cdbb6f24e087433e1864871773193476c8fa1ade31851ad09

See more details on using hashes here.

File details

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

File metadata

  • Download URL: in4viz-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 28.1 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b68730903fbdd9142fdf86f8266d9d0984b589405aa85cb1e0e6bfda0bec57e8
MD5 a756829e18da2aeab328cd795d72a2d1
BLAKE2b-256 e9632581dc1df4129ce21e8c834331ae76e701e63ebddeb34ba953e1227572b0

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