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

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