Slide 1

Slide 1 text

プルリクサイズが大きいと警 告してくれる君
 を作りました!
 やまもとひろや


Slide 2

Slide 2 text

自己紹介
 ● やまもとひろや
 ● NE株式会社 開発部マネージャー
 ○ NE株式会社は本カンファレンスのシルバースポンサーです。
 ○ 温泉の素を配っていた会社です!
 ○ エンジニア募集中ですのでご興味あれば声かけてください!
 ● twitter: @HiroyaYamamoto1
 ● Qiita: @yamamoto_hiroya
 
 ● 登壇実績
 ● PHP Conference Japan 2021
 ○ カンファレンスはフィードバックが大事
 ● PHPerKaigi 2023
 ○ 安全にプロセスを停止するためにシグナル制御を学ぼう!
 ○ ベストフィードバッカー殿堂入り


Slide 3

Slide 3 text

動機
 ● プルリクのサイズは小さい方が良い。 
 ● 小さく細かくデプロイしていき生産性 (デプロイ数)を上げたい。
 ● ただし大きい/小さいの定義は人それぞれ。
 ● 大きいかな?小さいかな?を自身で気付くタイミングがない。 
 
 
 ● ということで組織全体として大きい /小さいを定義し
 ● プルリク作成時に気付ける仕組みを作ってみました! 


Slide 4

Slide 4 text

作ったもの
 https://github.com/yamamoto-hiroya/pull_request_size_checker
 プルリクを作ると差分を自動で集計し、閾値を超えているかどうかを教えてくれます。 
 閾値を超えていない場合 
 閾値を超えている場合 


Slide 5

Slide 5 text

導入の仕方
 1. 自身のリポジトリ設定にてGithub Actionsを有効化して ください。
 a. その際、書き込み権限も許可してください。
 2. 本スクリプトを.github/workflows/配下に設置してくだ さい。
 3. リポジトリの環境変数に以下を定義してください。 
 a. PULL_REQUEST_LIMIT_FILES: 警告を出す差分ファイル数の閾 値
 b. PULL_REQUEST_LIMIT_LINES: 警告を出す差分行数の閾値
 c. EXCLUDE_PATH: 除外するパス
 4. プルリクエストを作成すると発火し差分を計算してコメント をつけてくれます。


Slide 6

Slide 6 text

仕組みの解説
 ● GitHub Actions自体の仕組みの解説は割愛します。 
 ● featureをmainに入れるプルリクの場合
 今回で言うとmain
 今回で言うとfeature
 featureブランチの最新のコミット 
 featureとmainの最新共通コミット


Slide 7

Slide 7 text

仕組みの解説
 ● 差分の追加行数・削除行数を算出してその合計を差分行数とする 
 ● ここの差分比較時にexcludeで特定のパスを除外している
 ● numstatで行数だけのフォーマット化
 ● パイプで繋いでawkにて追加行・削除行で分けて算出している 
 ● 見えないと思うので後でスライド見てください! 
 ● 差分ファイル数も同様です


Slide 8

Slide 8 text

仕組みの解説
 ● ポイント
 ● 環境変数によって警告を出す閾値が調整できます。 
 ○ ちなみにうちは 10ファイル・ 500行の設定です。
 ○ とりあえず今試しで入れてるところで、閾値は調整の余地あり。
 ● 除外パスを設定することで、例えばユニットテストの差分は除外する、などが実現できます。 
 ● テストをたくさん書いたがために警告される、というのは本来やりたいことではないですよね。 
 ● GitHubの差分の出し方についてはこちらの記事で解説しています。 
 ● Qiita「GitHubの差分の出し方、完全に理解した。」 
 ○ https://qiita.com/yamamoto_hiroya/items/3353005ebd9491321715


Slide 9

Slide 9 text

導入後の効果
 この仕組みを入れる前後でのプルリク数を比べてみようと思います。 
 
 
 3166/2312 = 1.36937716263
 約1.37倍
 導入前後で比べて1.37倍もプルリクが増えました!
 もちろんこの仕組みだけの要因ではないとは思いますが、少なくとも「プルリクを小さくすることを意識 する」という点で貢献できたように思います。 
 導入前の一定期間のPR数 導入後の一定期間のPR数 2312 3166

Slide 10

Slide 10 text

まとめ
 ● プルリクサイズを意識できるような仕組みを作りました。 
 ● 今は警告を出すだけですが、いずれマージ禁止までやりたい …!
 ● プルリクサイズを小さくしデプロイ頻度を上げ、生産性を上げていきましょう! 
 ● 同様の内容がブログにあがっていますので良ければそちらもご参照ください! 
 ○ https://zenn.dev/neinc_tech/articles/af86505df7a8d9


Slide 11

Slide 11 text

No content