16
DB 設設設設設設設設設 設設設設設設設設設 設設設設 @ 設設 設設設 vol.1

DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

Embed Size (px)

Citation preview

Page 1: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

DB設計を静的解析するツールを作ってみた 菅野明洋

@ まべ☆てっく vol.1

Page 2: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

免責事項❖ 本発表における見解は、私自身の見解で行っております。❖ 所属する会社、団体の見解を反映したものではありませんので、ご了承ください。

今回は個人の活動として参加しております

Page 3: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

自己紹介❖ 名前

❖ 菅野 明洋 ( すげの あきひろ )❖ 所属

❖ 株式会社 Aiming 大阪スタジオ インフラチーム❖ 業務内容

❖ スマートフォン向けゲームのシステムを見守る❖ 最近は上海に行ってる

Page 4: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

今回発表するもの❖ 概要

❖ ER 図を静的解析し問題を指摘するツール❖ 作った目的

❖ 設計起因による問題の早期発見と設計レビューの負荷の軽減❖ ツールコンセプト

❖ 人の手による機械的作業の低減、意味のある設計の議論の時間確保

Page 5: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

環境❖ OS

❖ Windows10, 7

❖ プログラム❖ C,C++

❖ ライブラリ等❖ boost, hunspell, Xerces-C++, SimpleXmlWriter

Page 6: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

ツールが出来るまで

Page 7: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

ある日 (ちょっと昔話 )

❖ ある日、 DB レビューをしていました。

Page 8: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

よく有った問題毎回同じ指摘点がある

スペルミス

型設定ミス

リレーションシップが無い

インデックスが無い

ミスの見逃し

毎回報告書書くの面倒

Page 9: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

よく有った問題毎回同じ指摘点がある

スペルミス

型設定ミス

リレーションシップが無い

インデックスが無い

ミスの見逃し

毎回報告書書くの面倒

修正は後から出来るけど、出来れば早いうちに片付けたほうが開発の巻き戻りが少ない。

Page 10: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

考えた解決策

❖ そうだ、自動化しよう

Page 11: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

できた機能❖ 正規表現を用いた命名規則チェック❖ データ型と DDL オプションのチェック❖ ER 図の論理名、物理名のスペルチェック❖ リレーションシップの自己参照のチェック❖ リレーションシップの不足をチェック❖ インデックスの不足チェック❖ xlsx 形式のレポート出力

Page 12: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

使った結果❖ ケアレスミスの検知速度、フィードバックの時間短縮

❖ 細かい点の確認に数時間要するところ数秒まで短縮❖ スペルミスなど細かすぎる点のチェックも有用❖ インデックス、リレーションシップの貼り忘れの検知も偶に役に立った

❖ 機械的作業の軽減により、 ( 肉体的 & 精神的 ) 負荷が下がり、設計思想的な部分の議論の時間に割くように出来た。

Page 13: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

Demo

Page 14: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

そして、 OSS化してみた❖ Source code

❖ https://github.com/asugeno/saferドキュメントは鋭意作成中❖ Binary

❖ https://github.com/asugeno/safer_binary

Page 15: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

将来的にやりたいこと (目標 )❖ 短期目標 ( 直近の作業 )

❖ 対応フォーマットの追加❖ MySQL Workbench 等

❖ ドキュメントの拡充❖ 中期目標 ( 一年以内 ?)

❖ Mac,Linux 対応❖ Jenkins 対応❖ 設定ファイルを生成する GUI ツール実装❖ JavaScript による追加処理の定義機能追加

Page 16: DB設計を静的解析ツールを作ってみた @まべ☆てっく vol.1

最後に

株式会社 Aimingでは各種人材を絶賛募集中です!一緒にゲームを作りませんか?