Slide 1

Slide 1 text

Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止 2023.08.24 @DBRE Summit2023 ふくま(@fkm_y)/ 株式会社アンドパッド テーブル定義変更のレビューを 効率化するための仕組み作り

Slide 2

Slide 2 text

ANDPAD Inc. DBRE Who I am @fkm_y @fkmy Yuki Fukuma 好きな車種:アクア

Slide 3

Slide 3 text

Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. 無断転載・無断複製の禁止 3 「建築・建設業に特化したクラウドサービス」 ANDPADは、現場の効率化から経営改善まで 一元管理できるシェアNo.1※クラウド型建設 プロジェクト管理サービスです。 ※「クラウド型施工管理サービスの市場動向とベンダーシェア (ミックITリポート2021年10月号)」(デロイト トーマツ ミック経済研究所調べ) 事業概要

Slide 4

Slide 4 text

今日話すこと DBREとして 開発者の開発効率を最大化させるために テーブル定義変更のレビューへ焦点を当て仕組み化したこと を話します

Slide 5

Slide 5 text

● はじめに ● 導線作成の自動化 ● テーブル定義レビューの自動化 ● まとめ アジェンダ

Slide 6

Slide 6 text

はじめに Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止

Slide 7

Slide 7 text

背景 プロダクトチームがテーブル定義変更をする場合、 DBREがレビューする運用 Product Team DBRE Team Pull Request

Slide 8

Slide 8 text

課題 ● DBREの工数の3割くらいがレビューで取られている ● 全てのプロダクトのレビューはできていない ● プロダクトはこれからも増えていく スケール可能なレビュー効率化の 仕組みを作ることが必要

Slide 9

Slide 9 text

調査 DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの

Slide 10

Slide 10 text

進め方 DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの 小さくリリースして早期に成果を得ながら進めたかったため 段階的に対応することにした ① ②

Slide 11

Slide 11 text

導線作成の自動化 Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止

Slide 12

Slide 12 text

DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの 導線作成の自動化

Slide 13

Slide 13 text

前提 データベース利用規約は既に作成されていましたが、 あまり読まれていないと感じていました 仮説 必要になるまで読まないし存在を忘れるので見られない 必要なタイミングで表示される導線を作る 導線作成の自動化

Slide 14

Slide 14 text

開発者 PR作成 テーブル定義が変更されたらPRへコメント 導線作成の自動化

Slide 15

Slide 15 text

DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの 既存資源への導線を作るコストのみで指摘頻度が減少した 導線作成の自動化

Slide 16

Slide 16 text

テーブル定義レビューの自動化 Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止

Slide 17

Slide 17 text

DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの テーブル定義レビューの自動化

Slide 18

Slide 18 text

DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの 機械的にチェックできるなら機械に任せて自動化 テーブル定義レビューの自動化

Slide 19

Slide 19 text

PR作成 reviewdogとsemgrepを使った仕組み 開発者 テーブル定義を静的解析してPRへコメント

Slide 20

Slide 20 text

reviewdogとは? 各種Linter解析の検出結果をGitHubなどのコードホスティングサービス へレビューコメントとして投稿してくれるツール https://github.com/reviewdog/reviewdog

Slide 21

Slide 21 text

semgrepとは? 脆弱性の静的解析や、コード標準の適用などに使われる静的解析ツール 様々な言語に対応しており、構文木をベースに置換や検索ができ独自の ルールを作ることができます。 https://github.com/returntocorp/semgrep

Slide 22

Slide 22 text

PR作成 Semgrepへカスタムルールを追加 reviewdogとsemgrepを使った仕組み 開発者 テーブル定義を静的解析してPRへコメント

Slide 23

Slide 23 text

PR作成 reviewdogとsemgrepを使った仕組み 開発者 テーブル定義を静的解析してPRへコメント

Slide 24

Slide 24 text

開発者 PR作成 reviewdogとsemgrepを使った仕組み テーブル定義を静的解析してPRへコメント

Slide 25

Slide 25 text

RubyにはRuboCopという静的解析ツールがあります 少し複雑な条件を解析できないか試してみました

Slide 26

Slide 26 text

RuboCopを使ったケース 開発者 PR作成 ローカル か CI にてテーブル定義を静的解析 冗長なインデックスであることを警告 静的解析 Rubocopへカスタムルールを追加

Slide 27

Slide 27 text

DBREから開発者へのレビューコメントを分類すると… ● データベース利用規約に記載されていないもの ● データベース利用規約に記載されているもの ○ かつ 機械的なチェックが難しそうなもの ○ かつ 機械的にチェックできるもの 自動化したものへ指摘することがなくなった テーブル定義レビューの自動化

Slide 28

Slide 28 text

まとめ Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止

Slide 29

Slide 29 text

● 導線の設計次第で開発者のドキュメント利用率を向上できる ● SemgrepやRuboCopのカスタムルールを書くことで DBのLinterとしても活用できる ● スケールできる仕組みを作ったのでレビュー効率化だけでなく レビュー出来ていなかったプロダクトにも横展開できた まとめ DBREとしてテーブル定義レビューの自動化ができました

Slide 30

Slide 30 text

ご清聴ありがとうございました! Copyright © 2020 Present ANDPAD Inc. This information is confidential and was prepared by ANDPAD Inc. for the use of our client. It is not to be relied on by and 3rd party. Proprietary & Confidential 無断転載・無断複製の禁止