もう、いい加減にパワポで構成図など作るのをやめよう PlantUMLでETL構成図っぽいことを書く ソース管理でガバナンスを効かせよう


背景や課題感

パワーポイント・Googleスライド等で作った資料のバージョン管理って、みなさんどうしていますか?
同時編集できるGoogleスライドはまだしも、ローカルで作業するパワーポイントなんて、チームでの作業にほんと向いていない…
さらに、Googleスライドを外部メンバーに開放していないって、もう、プロジェクトのスピード感なくなりますよね?
DXってなんだよ?って思いますよね?
考え方がDXじゃない…
ほんと、イケてない…
私はそう思っています。

解決策

そこで、構成図等もソースコードで管理して、ガバナンスを効かせるのが、ベストプラクティスだと個人的には考えています。
もう、いい加減にパワーポイント・Googleスライドでお絵描きから卒業しようじゃありませんか

どう管理するのか?

  • PlantUMLのソースコード管理はGithubなど
  • PlantUMLのエディターは Visual Studio Code ATOM なんでもいいです。お好きなものを使いましょう。
  • PlantUMLで使うアイコンはPlantUML Icon-Font Spritesを使います。便利なので。

前提条件

  • Macしかわからないので、Mac前提
  • Homebrew本体をインストール済み
  • Homebrewで plantuml をインストール済み
  • いずれも最新版をインストールしている
  • エディター AtomVisual Studio Code をインストール済み
  • 各エディターで、PlantUMLを描画するプラグイン等をインストール済み
  • Azure Synapseでの STORED PROCEDURE でETL処理を想定

例(ETL処理フロー図)

@startuml
title ETL処理フロー図
scale 1.0
top to bottom direction

' hide the spot
hide circle

' avoid problems with angled crows feet
skinparam linetype ortho

!define ICONURL https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/v2.2.0

!includeurl ICONURL/common.puml
!includeurl ICONURL/font-awesome-5/database.puml
!includeurl ICONURL/font-awesome-5/code.puml

FA5_CODE(CODE0,STORED PROCEDURE\nprocessing_flow) {
  FA5_CODE(CODE1,T1 processing flow\n\n一時テーブルT1の処理フロー\n処理の内容などはメモする) {
    FA5_DATABASE(DB1,DB1)
    FA5_DATABASE(DB2,DB2)
    FA5_DATABASE(DB3,DB3)
    FA5_DATABASE(DB,DB)
  }
  FA5_CODE(CODE2,T2 processing flow\n\n一時テーブルT2の処理フロー\n処理の内容などはメモする) {
    FA5_DATABASE(T1,T1)
    FA5_DATABASE(DB4,DB4)
  }
  FA5_DATABASE(T2,T2)
  FA5_DATABASE(DB_ETL,ETL後のDB)
}

' リレーション
DB1 --> DB : LEFT JOIN\nON key
DB2 --> DB : LEFT JOIN\nON key
DB3 --> DB : LEFT JOIN\nON key
CODE1 --> T1
DB4 --> T1 : LEFT JOIN\nON key
CODE2 --> T2
T2 --> DB_ETL

@enduml

PlantUMLで画像をジェネレート

Atom でコードを保存すると、画像が勝手にジェネレートされるので、便利です。

ソースコードはGithubなどで管理

ソースコード管理方法については記載しませんが、Githubなどで管理すればいいですね。
変更箇所が一目瞭然。チーム開発に最適。というか、これ以外の選択肢はない。

まとめ

もう、いい加減に、パワーポイント・Googleスライドでのドキュメント管理はやめよう。
不毛だ。

追記

併せて、エクセル方眼紙でのテーブル定義書とか仕様書も、この世から撲滅したい。
↑センスがない。
そのベストプラクティスは、 Markdown (じゃなくてもいいが…)形式のファイルをHTML等にいい感じに変換してくれて、やはりソースコード管理だと個人的には考えている。
これは、また別の機会に…