• 検索結果がありません。

劇的ビフォーアフター

コードレビュー

効率化

コードレビュー・ビフォー

» FaceToFaceが基本。開発者のローカルにしかないソースコードを

WinMergeなどのDiffViewerを用いて説明する

⋄ 時間、場所の制約が発生する

⋄ 議事録を適宜手動で取る必要がある(エクセルに)

コードレビュー・アフター

» PRによるレビュー

⋄ レビュアーが自分のスケジュールに合わせて ブラウザ上でレビューできる 効率化!

⋄ ブランチはPush済みなので、

開発者は次の開発を進められる 効率化!!

PRがそのまま議事録となる 効率化!!!

ちょっとまって!

会社の風土に合わせる必要があった

» 弊社ではコードレビュー議事録の中に重要度の項目がある

(致命欠陥、重欠陥、軽欠陥、その他(改善要望等))

⋄ PJの品質見える化、の観点では重要

» PRでは単にコメントとなり、それがわからない

どうやって解決した?

» 求められたゴールはPR毎に

以下のようなデータを得られること

⋄ 重欠陥XX件、軽欠陥XX件、、、

» せっかく効率化のために導入したGitHub、 レビュアーの負担は極力減らしたい

» GitHubAPIを活用する

⋄ GitHubは機能の殆どをWebAPIとして提供している

解決策

» リポジトリを指定し、期間、ラベルに関連するPRのコメントを 集計、CSV出力するWebアプリ(Angular + TypeScript)

» GitHubPagesの機能を使って公開

⋄ GitHubPages...GitHub上のファイルを静的なWebPageとし て公開できる機能

定型文を必ずレビュー後に入力

GitHubAPIを使って取得し、集計する

ん?コメントいれるの忘れそう?

» 社内標準ツールGoogleChromeの拡張機能を自作 PRのレビュー欄にデフォルトで入力される

⋄ jQueryでDOMに定型文を流し込む

PR ベースでの品質の見える化を達成!

» デイリーでPJの品質確認可能

(ソースコードレビューによる不具合の前倒し摘出)

» 社内ルールにGitHubを溶け込ませることに成功した

⋄ 次はGraphQL APIへ対応したい

CSV

各種ツールとの

連携によるマージ効率化

各種ツールとの連携・ビフォアー

» 課題管理、静的解析ツール、CIツール、の連携が特になされて いなかった

» 課題管理と結ばれていないから、なぜその修正が入ったか、

背景がわからない

» マージするまでテストやビルドの結果がわからない

マージコスト増

各種ツールとの連携・アフター

デプロイ自動化 が次の課題

● 課題管理

● 静的解析

● CI

● チャット

● リポジトリ管理

マージ時にコミットメッセージ に対応するチケットNo入力

Redmineに自動でリンク

チケットに関連するコミットがすぐに分かる

PRと連動し、自動テスト、静的解析を実施。マージ前の品質を 確保でき、レビュアーの負担が軽減

⋄ 大量のマージに耐えられる開発体制

静的解析結果はPR上に表示

開発者はすぐに気づいて修正できる

NGステータスの場合、

マージできない

チーム風土の変化

チーム風土の変化

 コードレビューの変化

コードレビューの殺伐さが消えた

» 静的解析、自動テスト、各種ツールの活用、により

ストレスからの解放(効率化)と精神的安定を手に入れた

» コードレビューにも変化が起きた

コードレビューの殺伐さが消えた

» 良いコードには称賛を。気軽にイイネしあえる関係

» サンプルコードの提示、アドバイスも

⋄ ソースコードへのアクセスが容易

⋄ Markdownドキュメントの可読性の高さ

コードレビューの意識改革

» レビュアー VSレビューイ、から、

解決しなければならない課題 VS チーム全員

という意識の変化が生まれた

» 良い雰囲気は良いコードを生む

VS

チーム 課題

チーム風土の変化

 提案活動活発化

GitHub を運用して出てきた課題

» PRベースのコードレビューは便利だが、気づかぬうちに溜 まっていってしまう、ということも

» レビュー漏れ(レビューしないとマージできないので、最終的 に漏れることはないが、スケジュールに影響を与える)が発 生

若手エンジニアが自発的に課題解決

» レビュアー抽出・一覧化ツールを開発

⋄ GitHubのおかげで参考ソースへのアクセスが容易

⋄ PRでのやりとりでモチベーションアップ

チーム風土の変化

 改善活動活発化

早朝プチリファクタマラソン

» 自動テスト、静的解析でのチェック機構により、小規模な改 善がやりやすくなった

» そこでチームで早朝プチリファクタリングマラソン、を実施した

⋄ 静的解析指摘、不足している自動テストの拡充、

など技術負債をコツコツ返済していくのが大目的

» コーディングにかける時間は毎朝の15分

» 出来たらその日のうちにPR、レビュアーはその日のうちにレビューする。

貯めない

» 改修量は50step以内

» レビュアーは改修内容にのみ集中する

» 1stepでも改修できれば良い、という気持ちで

効果

» 静的解析指摘の修正、不足テストの追加によりデイリーで内 部品質が改善

» 新規メンバーの教育にも効果あり

プロジェクトへの効果

技術課題の解決が加速

» GitHubは自由に試せる、すぐに共有できる場

» プロジェクト中に発生する様々な技術課題に対して、

プロト実装、レビュー、本番導入、

という流れができあがった

提案・プロト作成 議論・設計レビュー コードレビュー・マージ

» チームのスキルアップにもつながった

4. まとめ

今日お話したこと

当初の想定通りの効果

» ブランチのマージコスト低下 クリア!

» コードレビュー文化の繁栄 クリア!!

» CIツール、課題管理ツールなどとの連携 クリア!!!

  つまり、まとめると?

GitHubEnterprise を導入して得られた効果

» 組織全体での開発効率が向上した

導入前後で生産性は約4倍に

» ソフトウエアの内部品質が向上した

導入前後で市場問い合わせ件数は約1/2

システムテスト以降での不具合密度は約1/5

» 使えることがメリットではない、

使えないことがデメリットなんだと実感しています

これからも私達は

GitHub を愛しながら

開発していきます

ご清聴ありがとうございました

関連したドキュメント