DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
-
Upload
akihiro-sugeno -
Category
Technology
-
view
8.106 -
download
0
Transcript of DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1
![Page 1: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/1.jpg)
DB設計を静的解析するツールを作ってみた 菅野明洋
@ まべ☆てっく vol.1
![Page 2: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/2.jpg)
免責事項❖ 本発表における見解は、私自身の見解で行っております。❖ 所属する会社、団体の見解を反映したものではありませんので、ご了承ください。
今回は個人の活動として参加しております
![Page 3: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/3.jpg)
自己紹介❖ 名前
❖ 菅野 明洋 ( すげの あきひろ )❖ 所属
❖ 株式会社 Aiming 大阪スタジオ インフラチーム❖ 業務内容
❖ スマートフォン向けゲームのシステムを見守る❖ 最近は上海に行ってる
![Page 4: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/4.jpg)
今回発表するもの❖ 概要
❖ ER 図を静的解析し問題を指摘するツール❖ 作った目的
❖ 設計起因による問題の早期発見と設計レビューの負荷の軽減❖ ツールコンセプト
❖ 人の手による機械的作業の低減、意味のある設計の議論の時間確保
![Page 5: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/5.jpg)
環境❖ OS
❖ Windows10, 7
❖ プログラム❖ C,C++
❖ ライブラリ等❖ boost, hunspell, Xerces-C++, SimpleXmlWriter
![Page 6: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/6.jpg)
ツールが出来るまで
![Page 7: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/7.jpg)
ある日 (ちょっと昔話 )
❖ ある日、 DB レビューをしていました。
![Page 8: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/8.jpg)
よく有った問題毎回同じ指摘点がある
スペルミス
型設定ミス
リレーションシップが無い
インデックスが無い
ミスの見逃し
毎回報告書書くの面倒
![Page 9: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/9.jpg)
よく有った問題毎回同じ指摘点がある
スペルミス
型設定ミス
リレーションシップが無い
インデックスが無い
ミスの見逃し
毎回報告書書くの面倒
修正は後から出来るけど、出来れば早いうちに片付けたほうが開発の巻き戻りが少ない。
![Page 10: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/10.jpg)
考えた解決策
❖ そうだ、自動化しよう
![Page 11: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/11.jpg)
できた機能❖ 正規表現を用いた命名規則チェック❖ データ型と DDL オプションのチェック❖ ER 図の論理名、物理名のスペルチェック❖ リレーションシップの自己参照のチェック❖ リレーションシップの不足をチェック❖ インデックスの不足チェック❖ xlsx 形式のレポート出力
![Page 12: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/12.jpg)
使った結果❖ ケアレスミスの検知速度、フィードバックの時間短縮
❖ 細かい点の確認に数時間要するところ数秒まで短縮❖ スペルミスなど細かすぎる点のチェックも有用❖ インデックス、リレーションシップの貼り忘れの検知も偶に役に立った
❖ 機械的作業の軽減により、 ( 肉体的 & 精神的 ) 負荷が下がり、設計思想的な部分の議論の時間に割くように出来た。
![Page 13: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/13.jpg)
Demo
![Page 14: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/14.jpg)
そして、 OSS化してみた❖ Source code
❖ https://github.com/asugeno/saferドキュメントは鋭意作成中❖ Binary
❖ https://github.com/asugeno/safer_binary
![Page 15: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/15.jpg)
将来的にやりたいこと (目標 )❖ 短期目標 ( 直近の作業 )
❖ 対応フォーマットの追加❖ MySQL Workbench 等
❖ ドキュメントの拡充❖ 中期目標 ( 一年以内 ?)
❖ Mac,Linux 対応❖ Jenkins 対応❖ 設定ファイルを生成する GUI ツール実装❖ JavaScript による追加処理の定義機能追加
![Page 16: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1](https://reader035.fdocument.pub/reader035/viewer/2022062218/586f711a1a28ab10258b4e4f/html5/thumbnails/16.jpg)
最後に
株式会社 Aimingでは各種人材を絶賛募集中です!一緒にゲームを作りませんか?