プルリクエスト活用法。工数増大・見落としを防ぐ5つの方法|東京のWEB制作会社・ホームページ制作会社|株式会社GIG
BLOG
ブログ
プルリクエスト活用法。工数増大・見落としを防ぐ5つの方法
2023-10-19 勉強会
こんにちは、株式会社GIG広報の宮﨑(カントク)です。GIGでは毎月さまざまなテーマで勉強会を開催しています。
今回はLeadGrid事業部の曽我部 祐作さんに「レビュワーのことを考えたプルリクエスト」をテーマにお話いただきました。以下でその内容をくわしくご紹介します。
曽我部 祐作(そがべ ゆうさく):LeadGrid事業部開発Unit1エンジニア。立命館大学情報理工学部を卒業後、新卒でGIGに入社。大学在学時は学生団体や学部の勉強、web制作会社でのアルバイトなどをして過ごす。
プルリクエストとは
プルリクエストは、1つのブランチから別のブランチへの変更を提案する方法です。
これによりコードの差分をメンバー内で確認して改善点を探したり、理解を深めたりすることができます。
プルリクエストの利点としては、以下が挙げられます。
・コードの品質向上
・知識の共有
・コードの履歴
プルリクエストにおける課題
プルリクエストにおける課題について、現在LeadGridチームで実際に発生している課題を元に紹介します。
課題1. プルリクエストの肥大化
プルリクエストの肥大化とは、複数の目的がプルリクエスト内に含まれてしまっている状態です。
プルリクエストが肥大化することで、下記の問題が発生します。
・スプリントの終盤にコードレビューが集中する
・コードレビューにまとまった時間が必要になる
・バグや良くない仕様の見落とし
LeadGridチームでは、2週間でスプリントを区切っていますが、後半にコードレビューが集中してしまっています。
またコードレビューに時間がかかってしまっている点も問題です。1時間ごとに5分ずつなど、こまめにレビューができる人であれば問題ありませんが、コード量が多いと、どうしても最後にまとめてレビューしがち。これにより、見落としが頻発してしまいます。
また、「LGTM(多分いい感じ)」という判断で承認してしまうことも。これではレビューの意味がなくなってしまいます。
課題2. 説明不足
プルリクエストでは、タイトルや概要などに説明文を補足で記載できます。しかし、その記述が甘く、説明不足になっているケースも。
これによって、
・レビュワーがコードの仕様把握に時間がかかる
・後からプルリクエストを見返した時に意図がわからない
といった問題が発生します。
これらの課題が発生している原因としては、自分が楽だからと「レビュワーのことを考えられていない」ことが考えられます。
課題の解決策
これらの課題を解決するために、LeadGridチームで取り組んでいる解決策を紹介します。
肥大化の解決策1. JIRAの有効活用
まず1つ目は、JIRAの有効活用です。
LeadGridチームでは、タスク管理にJIRAを使用しています。
JIRAに登録したチケット(タスク)が多い場合に、このチケットをサブタスクに分けて、サブタスクからブランチを切り、プルリクエストを立てるというアプローチを試しています。
チーム内で、タスクを細分化していこう、というのは以前から行っていましたが、プルリクエストにすると粒度が大きい場合がありました。
そのため、従来以上にタスクを細分化することで、プルリクエストごとの粒度も小さくしていくという流れです。
上記を例にすると、まず「それぞれのコンテンツの編集画面内で、コンテンツ詳細のデフォルトSEO設定値の上書きができるようになる」というタスクがあります。
この大きなタスクを、それぞれ5つのタスクに分解しました。
そしてそれぞれにプルリクエストを立てることで、各プルリクエストの内容がわかりやすくなり、コード量も減ってレビューもしやすくなりました。
肥大化の解決策2. 方針の策定
2つ目の解決策は方針の策定です。
これまでも、作成の指針は設定していましたが、差分や粒度の方針については明記していなかったため、これについて再度策定を行うようにしました。
ただこれはあくまで目安です。たとえば上記では「一度のプルリクエストの変更行数を300行以内に制限します」と策定していますが、300行以内に抑えるために実装の内容を変えたりしたら元も子もなくなってしまいます。
それでも、共通認識として定めることで、チーム全体で「コードの差分自体は減らしていこう」と意識できるようになります。
説明不足の解決策1. AIによる概要の自動生成のサポート
1つ目の解決策は、AIによる概要の自動生成のサポートです。
プルリクエストの作成時に、GPTでコードの差分の要約をプルリクエストのコメントに追加する、というものを現在試しています。
これを実装するだけで説明文が不要になるというわけではないので、レビュワーのためにわかりやすい説明文を自分で書く必要はありますが、内容理解のサポートにはつながると思います。
今後はプロンプトの部分をブラッシュアップしていく予定です。
また、細かいプルリクエストだと出力の精度も上がる傾向にあるので、プルリクエストの肥大化を防ぐことで、この対策もより活きてくるかなと思います。
説明不足の解決策2. テンプレートの使用
2つ目の解決策は、テンプレートの使用です。
テンプレートは、プルリクエストを作成するときの説明文の初期値のようなものですね。このテンプレートを設定することで、作成者によって記載内容や書き方に違いが出てしまうことを防げるようになります。
ただ、テンプレートの作り込みが不十分だと、結局説明文が書きづらくなってしまうこともあるので、テンプレート自体も随時アップデートする必要があります。
その他の解決策1. コードレビュー会の実施
LeadGridチームでは、朝会の終了後に30分ほど実施しています。
このレビュー会内で、マージまでしてしまうことでプルリクエストが溜まってしまうことを防げます。
プルリクエストのレビュー時間を確保したり、レビューすることへの心理的なハードルを下げたりすることもこのレビュー会の目的の1つです。
その他の解決策2. コードフォーマッターの導入
もう1つの解決策は、コードフォーマッターの導入です。
コード規約の確認をツールやシステムに任せることで、人側がするレビューが、ロジックや設計に集中できるようになります。
フロントでは、huskyを活用することでlinterを通して、コード規約の確認。さらにPrettierを使ってコードの整形まで行うようにしています。
プルリクエストを作成するときは、常にレビュワーのことを考えるようにすると、見やすいプルリクエストになるかと思います。
まだまだLeadGridチームでもそれぞれの解決策を実践中なので、今後もより良い方法を模索しながら進めていきます。
DX支援なら株式会社GIG
今回の勉強会では「レビュワーのことを考えたプルリクエスト」について、LeadGrid事業部の曽我部 祐作さんに詳しくお話いただきました。
株式会社GIGは、ナショナルクライアントからスタートアップまで、Webコンサルティング、UI/UXデザイン、システム開発など、DX支援をおこなうデジタルコンサルティング企業です。また、45,000人以上が登録するフリーランス・副業向けマッチングサービス『Workship』や、7,000人以上が登録するデザイナー特化エージェントサービス『クロスデザイナー』、リード獲得に必要な機能を備えたCMS『LeadGrid』、UXコンサルティングサービス『UX Design Lab』などを展開しています。
WebやDX支援のご相談はいつでもご連絡ください。
■株式会社GIG
お仕事のお問い合わせはこちら
会社紹介資料のダウンロードはこちら
採用応募はこちら(GIG採用サイト)
採用応募はこちら(Wantedly)
WebやDXで困っている方、お気軽にご相談ください
宮﨑 駿(カントク)
フリーランス編集/ライター。GIGのメディア事業部で複数メディアの運営に参加中。キャリア、働き方に関する記事を中心に執筆。ジブリの知識には自信ありません。