Google スプレッドシートから概念モデル図を作った話

アソビュー! Advent Calendar 2022の1日目です。

事業者向けSaaSアプリケーションのバックエンドの開発を担当している東郷です。 今日は表ベースの資料から概念モデル図を作る機会があったので紹介したいと思います。

はじめに

モチベーション

現在、開発中のプロジェクトではRDRAを使って要件定義をまとめています。 tech.asoview.co.jp

概念モデルはGoogle スプレッドシート(表ベース)で管理されているため、 図にして俯瞰したいと感じていました。

概念モデル図とは

関心領域における概念と概念の関係を表す図のことで、 関心領域を俯瞰して見たい場合やER図の作成のためのインプットとして使われます。

今回の例

ユーザーストーリー

簡易なECショップを題材に事業者の準備〜顧客の注文までのユーザーストーリーから概念モデル図を作成してみます。

  • 事業者は店舗を持つことができる
  • 店舗で商品を扱うことができる
  • 顧客は商品を注文できる
  • 注文した商品毎に配送先を設定できる

完成図

概念図

準備

実行環境

  • Mac
  • Python(3.9.9)
  • graphviz(7.0.1)

graphvizとは

グラフ構造を描画するためのツールです。 Python上で簡単に扱えるので今回はこちらを利用します。 graphviz.org

graphvizのインストール

brew install graphviz
pip install graphviz

実行方法

コード

# generate_diagram.py

import csv
import sys
from graphviz import Digraph

filename = sys.argv[1] #1

with open(filename, mode='r', newline='', encoding='utf-8') as f:
        r = csv.reader(f, delimiter='\t') #2
        data = [row for row in r]
        del data[0] #3 

G = Digraph(format="png") #4
G.attr(rankdir="BT") #5
for source, destination in data:
        G.edge(source, destination) #6

G.render("tree", outfile="concept_diagram.png") #7
  1. 読み込むファイル名を取得する
  2. TSVファイルとして読み込む
  3. ヘッダは不要なので削除する
  4. 出力フォーマットにPNGを設定する
  5. 下から上にレイアウト設定する
  6. From→Toの関係を矢印として定義する
  7. 木構造のレイアウトでconcept_diagram.pngを出力する

入力ファイルの準備

Google スプレッドシートから概念Fromと概念To列をコピーしてTSVとして保存する。

input.tsv

概念From   概念To
店舗  事業者
商品  店舗
注文商品    商品
注文商品    注文
注文  顧客
配送先   注文商品

実行

python generate_diagram.py input.tsv

concept_diagram.pngが生成されます。

まとめ

概念関係をGoogle スプレッドシートなどの表ベースで管理することで情報を管理しやすくなる一方、 概念関係を俯瞰しづらくなるので、今回のような方法で見える化できるようにすると良いと思います。

今回は概念モデル図を作成しましたがFrom-Toの関係であれば、図にすることができるので 、 外部連携用のIFファイルの取り込み〜書き出しまでの関連を整理して依存関係を整理したり、 応用が効く方法ではないかと思います。

おわりに

小さなことですが、やってみると意外と簡単だったり、応用できそうなことが見えてきたりして、 個人的には良い開発体験ができたかなと思っています。

アソビューの開発についてもっと聞いてみたいという方はこちらもぜひご覧ください。カジュアル面談もあります。 www.asoview.com