アソビュー! 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
- 読み込むファイル名を取得する
- TSVファイルとして読み込む
- ヘッダは不要なので削除する
- 出力フォーマットにPNGを設定する
- 下から上にレイアウト設定する
- From→Toの関係を矢印として定義する
- 木構造のレイアウトで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