SlideShare a Scribd company logo
1 of 37
Download to read offline
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by
Bitbucket を活用したコードレビュー改善事例
2016/09/27
ウルシステムズ株式会社
伊藤 昂祐
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 1
自己紹介
いとう こうすけ
伊藤 昂祐
kosuke.ito@ulsystems.co.jp
ウルシステムズ株式会社
https://www.ulsystems.co.jp/
インターネット広告事業会社の開発支援中
社内では、アジャイル推進活動中
認定スクラムマスタ
スノボとスープカレーを愛する
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 2
アジェンダ
1. プロジェクト紹介とインターネット広告の進歩について
2. Bitbucket を活用したコードレビュー改善事例
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 3
プロジェクト紹介とインターネット広告の
進歩について
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 4
プロジェクト紹介
クライアント
– ソネット・メディア・ネットワークス株式会社様
主な事業内容
– DSP事業
Logicad を提供
RTBを活用した広告配信最適化
機械学習・人工知能を活用したDMPによる広告配信精度の向上
プロジェクト支援概要
– DSP/RTBシステム開発支援
– 使用しているAtlassian製品は Confluence, Jira, Bitbucket
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 5
いろいろなインターネット広告
バナー広告
検索連動型
広告
アプリ広告
動画広告
ネイティブ広告
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 6
インターネット広告の進歩
Webサイト運営者 広告主
 商品を世の中に広めたい
 多くの見込み客に広告を出
したい
 自社メディア(Webサイト)
で収益をあげたい
広告業界における双方の欲求
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 7
インターネット広告の進歩
純広告
AD
広告代理店
Webサイト運営者
広告主
 広告主が期間・Webサイトを選び、広告を掲載する
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 8
インターネット広告の進歩
アドネットワーク
広告代理店 広告主
 多数のWebサイト上で広告配信する仕組み
 Webサイトの特性に合わせたターゲティングも可能
AD
AD
Webサイト運営者
AD
Webサイト運営者
Webサイト運営者
アドネットワーク
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 9
インターネット広告の進歩
アドエクスチェンジ
広告代理店 広告主
 アドネットワーク同士で広告枠を融通する
AD
Webサイト運営者
アドネットワーク
AD
AD
AD
アドエクスチェンジ
アドネットワーク
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 10
インターネット広告の進歩
SSP・DSP・RTB
広告代理店 広告主
 SSP(Supply Side Platform) – 広告枠の価値を最大化
 DSP(Demand Side Platform) – 広告主の利益を最大化
 RTB(Real Time Bidding) – リアルタイムで広告の競争入札する仕組み
AD
Webサイト運営者
アドネットワークAD
AD
AD
AD
AD
アドエクスチェンジ
DSPSSP
RTB
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 11
RTBの流れ
AD
ID=XYZ SSP事業者
DSP3
DSP2
DSP1
WebサイトA
WebサイトA に、XYZさんが来ました。
誰か広告を出したい方いませんか?
1円
2円
3円
WIN
PVから広告表示まで 0.1秒(100ミリ秒)で広告オークショ
ンが行われる
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 12
インターネット広告の進歩
DMP
広告代理店 広告主
AD
Webサイト運営者
アドネットワークAD
AD
AD
AD
AD
アドエクスチェンジ
DSPSSP
RTB
 データマネジメントプラットフォーム
 オーディエンスデータを蓄積・分析して広告配信に活用
DMP
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 13
DSP/RTB事業のシステム開発を行うにあたって
業界は急速に進歩していて、新機能を素早く開発することが
求められている
広告配信は24時間365日行われているため、可用性が高く高
品質なシステムが求められている
RTB入札の性能要求が厳しく、継続的な性能改善が求められ
る
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 14
Bitbucket を活用した
コードレビュー改善事例
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 15
コードレビューの目的は、ただコードの誤りを修正
するだけではありません。重要なのは、チーム全員
に同じ知識を共有させること、またコーディングに
おいて全員が守るべきガイドラインを確立すること
です。コードレビューを成功させるために最も有効
な方法は、レビューを楽しいものにすることです。
by Mattias Karlsson 「プログラマが知るべき97のこと」より
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 16
プロジェクトの前提
背景
– SVN から Git へ移行を行い、その後の運用についての話です
リポジトリ管理
– Bitbucket(Git) を使用
チーム
– チームは 5±2人で運用
– チームの Git 経験者はゼロに近い状態
– リリース周期は 1週間~1ヶ月
– アジャイルなチームを目指したフラットな組織
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 17
ブランチ戦略
要求
– プロダクトの安定稼動が出来ること
– 新規機能の開発を活発に行えること
– バグ発生時にバージョンを容易に戻せること
– 機能開発中にバグ修正を差し込めること
※ A Successful Git Branching Model より
http://nvie.com/posts/a-successful-git-
branching-model/
git-flow の採用
– 相反する要求を満たすブランチの運用
– メジャーリリース・マイナーリリースが混在する
プロダクトに有効
– Github Flow や GitLab Flow と比較すると多少
複雑で慣れるまで時間がかかる
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 18
SouceTree とは
https://ja.atlassian.com/software/sourcetree
Atlassian 社が提供
Gitクライアントツール
コマンドライン不要。GUIでリポジトリの運用可能
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 19
SouceTree の運用
リポジトリ操作がボタンひとつで簡単に出来る
コミットツリーの参照が可能
「Git Flow」ボタンにより、git-flow
に従った操作を行うよう助ける
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 20
SouceTree を使って良かったこと
 コマンドを使用することなく Gitリポジトリの
操作が容易に出来る
 開発スピードを落とすことなく、git-flow の
導入と学習を進めることが出来る
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 21
リポジトリ管理
https://bitbucket.org/
Atlassian 社が提供
Gitリポジトリ管理ツール
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 22
当初のコードレビューのやり方
プルリクエ
ストの作成
開発者
対面レビュー
プルリクエス
トのマージ
承認
レビュワー
修正が必要か
コードの修正
必要
不要
開発者
説明
指摘
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 23
プルリクエストの作成
タイトル
説明
レビュアー
タイトル・説明の入力・依頼するレ
ビュアーの選択を行いプルリクエスト
を作成する
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 24
プルリクエストの作成
説明
レビュアー
タイトル
 プルリクエスト駆動の開発でコードレビュー
が必須に
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 25
コードレビューの実施
インラインディスカッション
– インラインコメント・メンションを使用した
コミュニケーション
– マークアップシンタックス
コードの近くにフィードバックを書
くことで、レビュー効率アップ
横並び差分表示も可能
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 26
コードレビューに関する情報の表示
JIRAの課題ワークフローにレビュー中のステータスを追加
タスクかんばんの列に「レビュー中」を
追加。レビューステータスを可視化
開発ブランチの状態をひとまとめ
に表示。すぐに状況の認識が可能
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 27
プルリクエストのマージ
マージ方法
マージ条件の設定
承認者の人数・タスクの解決・ビルドの成功
を条件に設定することが出来る。
→開発者の独断で判断でマージすることを防
止する。
ブランチパーミッション
特定のブランチに対して、削除・変更を防
ぐ設定を行うことが出来る。
→ git flow で開発者に許可されていない操
作を事前に防止する。
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 28
Bitbucket(Git)の開発作業に慣れてきたころ、
コードレビューにいくつかの問題が・・・
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 29
こんなコードレビューはイヤだ
何を確認すれば良いかわからない
クソコードが大量発生する
なかなかレビューされない
レビューのコストが高すぎる
コードの誤りを指摘するだけになっている
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 30
タイトル・説明の記載をルール化する
プルリクエストの改善
1. 対面レビューは必要か
• 要 or 不要を記載
• 重要度やコードの複雑度によって開発者が判断
• 直接説明したほうが、はやいものも要と判断
2. 緊急度
• 高中低 or レビュー期限をブランチ特性から記載
3. 対応内容
• プルリクエストの単位を小さくする
• プルリクエストの目的を明確にする
• レビューの観点を明確にする
• 関連リンクを記載
説明
1. WIP(Work In Progress)の活用
2. RFC(Request For Comment)の活用
タイトル
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 31
コードレビューの改善
対面レビューは必要なものだけに限定して行う
その代わりにインラインディスカッションの質を上げる
– 誤りの指摘を書くだけではなく、気づきや質問も記載するよう啓蒙
– 意見募集の書き込み
– 新しい実装方法を提案と「いいね!」の使用
– 修正・調査が必要なコメントにはタスクの作成
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 32
改善による変化
何を確認すれば良いかわからない
→プルリクエストの説明改善でレビューポイントが明確に
クソコードが大量発生する
→WIP・RFC でリスクを事前につぶせるように
なかなかレビューされない
→プルリクエストを小さくすることでレビューが容易に
レビューのコストが高すぎる
→必要最低限の対面レビューをすることコスト削減
コードの誤りを指摘するだけになっている
→気付きや質問を書き込むことで徐々に議論が活発に
→議論の中から、知識の共有や新しいアイデアが出るように
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 33
現在のコードレビューのやり方
プルリクエ
ストの作成
対面レビュー
が必要か
開発者
対面レビュー
机上レビュー
プルリクエス
トのマージ
承認
レビュワー
修正が必要か
コードの修正
必要
必要
不要
不要
開発者
チーム全体で双方向的
コミュニケーション
重要なものに限定して、
対面レビュー
レビューに必要な情報を明確に
して、円滑なレビュー実施へ
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 34
プラグイン連携
Slack notifications plugin
– Bitbucket のイベントを Slack に通知する
Webhook to Jenkins for Bitbucket
– Bitbucket のイベントを Jenkins に通知する
ビルド・デプロイ・
自動テストの実行
イベントの通知結果通知
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 35
Slack への通知
 応答性の向上
 チームが知るべき情報の通知
– 障害Alert
– チームの予定
– ビルドデプロイ・自動テストの結果
– タスクのイベントを通知
ULS
Copyright © 2011-2016 UL Systems, Inc. All rights reserved.
Proprietary & Confidential Powered by 36
ありがとうございました

More Related Content

What's hot

[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーToru Makabe
 
DatadogでAWS監視やってみた
DatadogでAWS監視やってみたDatadogでAWS監視やってみた
DatadogでAWS監視やってみたtyamane
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)NTT DATA Technology & Innovation
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxShota Shinogi
 
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15Shuyo Nakatani
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうRyuji Tsutsui
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話NipponAlgorithm
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Masahito Zembutsu
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―Tomohiro Nakashima
 
Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Mineo Matsuya
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 

What's hot (20)

MLOps入門
MLOps入門MLOps入門
MLOps入門
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
DatadogでAWS監視やってみた
DatadogでAWS監視やってみたDatadogでAWS監視やってみた
DatadogでAWS監視やってみた
 
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
 
Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理Docker入門 - 基礎編 いまから始めるDocker管理
Docker入門 - 基礎編 いまから始めるDocker管理
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
広く知ってほしいDNSのこと ―とあるセキュリティ屋から見たDNS受難の10年間―
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 

Similar to Bitbucketを活用したコードレビュー改善事例

ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発政雄 金森
 
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発Takashi Watanabe
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304Shinichiro Arai
 
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨Amazon Web Services Japan
 
企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーションOsaka University
 
ERPのデータをフロントシステムでどう活かすか
ERPのデータをフロントシステムでどう活かすかERPのデータをフロントシステムでどう活かすか
ERPのデータをフロントシステムでどう活かすかRyuji Enoki
 
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹Insight Technology, Inc.
 
Cloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略について
Cloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略についてCloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略について
Cloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略についてJunji Nishihara
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedbackTakashi Ito
 
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方Takahiro Imanaka
 
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」アトラシアン株式会社
 
【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏
【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏
【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏Developers Summit
 
Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)Satoshi Konno
 
20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentation20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentationsaktomshu
 
いまさら聞けない Amazon EC2
いまさら聞けない Amazon EC2いまさら聞けない Amazon EC2
いまさら聞けない Amazon EC2Yasuhiro Matsuo
 
AWS Well-Architected Security とベストプラクティス
AWS Well-Architected Security とベストプラクティスAWS Well-Architected Security とベストプラクティス
AWS Well-Architected Security とベストプラクティスAmazon Web Services Japan
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 

Similar to Bitbucketを活用したコードレビュー改善事例 (20)

ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発
 
Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用Oss事例紹介資料20141111 明日の認証会議 掲載用
Oss事例紹介資料20141111 明日の認証会議 掲載用
 
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
 
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツールAWS における Microservices Architecture と DevOps を推進する組織と人とツール
AWS における Microservices Architecture と DevOps を推進する組織と人とツール
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション
 
ERPのデータをフロントシステムでどう活かすか
ERPのデータをフロントシステムでどう活かすかERPのデータをフロントシステムでどう活かすか
ERPのデータをフロントシステムでどう活かすか
 
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
20180124_ソフトウェアテストを効率的に実施するためのデータの仮想化と自動化とは? by 株式会社インサイトテクノロジー 益秀樹
 
Cloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略について
Cloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略についてCloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略について
Cloud Native市場動向およびRancher Labsが提供するKubernetes Everywhere戦略について
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedback
 
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
DevOps時代到来!Engine YardのPaaSで変わるシステムの開発と運用のあり方
 
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
2019年9月18日開催AWS Japan × Atlassianセミナー_セッション2「AmazonカルチャーとDevOps」
 
【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏
【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏
【17-D-6】「ソフトウェアの収益増大のためのセキュリティソリューション」小池康幸氏
 
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
 
Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)
 
20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentation20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentation
 
いまさら聞けない Amazon EC2
いまさら聞けない Amazon EC2いまさら聞けない Amazon EC2
いまさら聞けない Amazon EC2
 
AWS Well-Architected Security とベストプラクティス
AWS Well-Architected Security とベストプラクティスAWS Well-Architected Security とベストプラクティス
AWS Well-Architected Security とベストプラクティス
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 

Recently uploaded

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (10)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

Bitbucketを活用したコードレビュー改善事例

  • 1. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by Bitbucket を活用したコードレビュー改善事例 2016/09/27 ウルシステムズ株式会社 伊藤 昂祐
  • 2. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 1 自己紹介 いとう こうすけ 伊藤 昂祐 kosuke.ito@ulsystems.co.jp ウルシステムズ株式会社 https://www.ulsystems.co.jp/ インターネット広告事業会社の開発支援中 社内では、アジャイル推進活動中 認定スクラムマスタ スノボとスープカレーを愛する
  • 3. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 2 アジェンダ 1. プロジェクト紹介とインターネット広告の進歩について 2. Bitbucket を活用したコードレビュー改善事例
  • 4. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 3 プロジェクト紹介とインターネット広告の 進歩について
  • 5. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 4 プロジェクト紹介 クライアント – ソネット・メディア・ネットワークス株式会社様 主な事業内容 – DSP事業 Logicad を提供 RTBを活用した広告配信最適化 機械学習・人工知能を活用したDMPによる広告配信精度の向上 プロジェクト支援概要 – DSP/RTBシステム開発支援 – 使用しているAtlassian製品は Confluence, Jira, Bitbucket
  • 6. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 5 いろいろなインターネット広告 バナー広告 検索連動型 広告 アプリ広告 動画広告 ネイティブ広告
  • 7. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 6 インターネット広告の進歩 Webサイト運営者 広告主  商品を世の中に広めたい  多くの見込み客に広告を出 したい  自社メディア(Webサイト) で収益をあげたい 広告業界における双方の欲求
  • 8. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 7 インターネット広告の進歩 純広告 AD 広告代理店 Webサイト運営者 広告主  広告主が期間・Webサイトを選び、広告を掲載する
  • 9. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 8 インターネット広告の進歩 アドネットワーク 広告代理店 広告主  多数のWebサイト上で広告配信する仕組み  Webサイトの特性に合わせたターゲティングも可能 AD AD Webサイト運営者 AD Webサイト運営者 Webサイト運営者 アドネットワーク
  • 10. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 9 インターネット広告の進歩 アドエクスチェンジ 広告代理店 広告主  アドネットワーク同士で広告枠を融通する AD Webサイト運営者 アドネットワーク AD AD AD アドエクスチェンジ アドネットワーク
  • 11. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 10 インターネット広告の進歩 SSP・DSP・RTB 広告代理店 広告主  SSP(Supply Side Platform) – 広告枠の価値を最大化  DSP(Demand Side Platform) – 広告主の利益を最大化  RTB(Real Time Bidding) – リアルタイムで広告の競争入札する仕組み AD Webサイト運営者 アドネットワークAD AD AD AD AD アドエクスチェンジ DSPSSP RTB
  • 12. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 11 RTBの流れ AD ID=XYZ SSP事業者 DSP3 DSP2 DSP1 WebサイトA WebサイトA に、XYZさんが来ました。 誰か広告を出したい方いませんか? 1円 2円 3円 WIN PVから広告表示まで 0.1秒(100ミリ秒)で広告オークショ ンが行われる
  • 13. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 12 インターネット広告の進歩 DMP 広告代理店 広告主 AD Webサイト運営者 アドネットワークAD AD AD AD AD アドエクスチェンジ DSPSSP RTB  データマネジメントプラットフォーム  オーディエンスデータを蓄積・分析して広告配信に活用 DMP
  • 14. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 13 DSP/RTB事業のシステム開発を行うにあたって 業界は急速に進歩していて、新機能を素早く開発することが 求められている 広告配信は24時間365日行われているため、可用性が高く高 品質なシステムが求められている RTB入札の性能要求が厳しく、継続的な性能改善が求められ る
  • 15. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 14 Bitbucket を活用した コードレビュー改善事例
  • 16. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 15 コードレビューの目的は、ただコードの誤りを修正 するだけではありません。重要なのは、チーム全員 に同じ知識を共有させること、またコーディングに おいて全員が守るべきガイドラインを確立すること です。コードレビューを成功させるために最も有効 な方法は、レビューを楽しいものにすることです。 by Mattias Karlsson 「プログラマが知るべき97のこと」より
  • 17. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 16 プロジェクトの前提 背景 – SVN から Git へ移行を行い、その後の運用についての話です リポジトリ管理 – Bitbucket(Git) を使用 チーム – チームは 5±2人で運用 – チームの Git 経験者はゼロに近い状態 – リリース周期は 1週間~1ヶ月 – アジャイルなチームを目指したフラットな組織
  • 18. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 17 ブランチ戦略 要求 – プロダクトの安定稼動が出来ること – 新規機能の開発を活発に行えること – バグ発生時にバージョンを容易に戻せること – 機能開発中にバグ修正を差し込めること ※ A Successful Git Branching Model より http://nvie.com/posts/a-successful-git- branching-model/ git-flow の採用 – 相反する要求を満たすブランチの運用 – メジャーリリース・マイナーリリースが混在する プロダクトに有効 – Github Flow や GitLab Flow と比較すると多少 複雑で慣れるまで時間がかかる
  • 19. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 18 SouceTree とは https://ja.atlassian.com/software/sourcetree Atlassian 社が提供 Gitクライアントツール コマンドライン不要。GUIでリポジトリの運用可能
  • 20. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 19 SouceTree の運用 リポジトリ操作がボタンひとつで簡単に出来る コミットツリーの参照が可能 「Git Flow」ボタンにより、git-flow に従った操作を行うよう助ける
  • 21. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 20 SouceTree を使って良かったこと  コマンドを使用することなく Gitリポジトリの 操作が容易に出来る  開発スピードを落とすことなく、git-flow の 導入と学習を進めることが出来る
  • 22. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 21 リポジトリ管理 https://bitbucket.org/ Atlassian 社が提供 Gitリポジトリ管理ツール
  • 23. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 22 当初のコードレビューのやり方 プルリクエ ストの作成 開発者 対面レビュー プルリクエス トのマージ 承認 レビュワー 修正が必要か コードの修正 必要 不要 開発者 説明 指摘
  • 24. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 23 プルリクエストの作成 タイトル 説明 レビュアー タイトル・説明の入力・依頼するレ ビュアーの選択を行いプルリクエスト を作成する
  • 25. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 24 プルリクエストの作成 説明 レビュアー タイトル  プルリクエスト駆動の開発でコードレビュー が必須に
  • 26. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 25 コードレビューの実施 インラインディスカッション – インラインコメント・メンションを使用した コミュニケーション – マークアップシンタックス コードの近くにフィードバックを書 くことで、レビュー効率アップ 横並び差分表示も可能
  • 27. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 26 コードレビューに関する情報の表示 JIRAの課題ワークフローにレビュー中のステータスを追加 タスクかんばんの列に「レビュー中」を 追加。レビューステータスを可視化 開発ブランチの状態をひとまとめ に表示。すぐに状況の認識が可能
  • 28. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 27 プルリクエストのマージ マージ方法 マージ条件の設定 承認者の人数・タスクの解決・ビルドの成功 を条件に設定することが出来る。 →開発者の独断で判断でマージすることを防 止する。 ブランチパーミッション 特定のブランチに対して、削除・変更を防 ぐ設定を行うことが出来る。 → git flow で開発者に許可されていない操 作を事前に防止する。
  • 29. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 28 Bitbucket(Git)の開発作業に慣れてきたころ、 コードレビューにいくつかの問題が・・・
  • 30. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 29 こんなコードレビューはイヤだ 何を確認すれば良いかわからない クソコードが大量発生する なかなかレビューされない レビューのコストが高すぎる コードの誤りを指摘するだけになっている
  • 31. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 30 タイトル・説明の記載をルール化する プルリクエストの改善 1. 対面レビューは必要か • 要 or 不要を記載 • 重要度やコードの複雑度によって開発者が判断 • 直接説明したほうが、はやいものも要と判断 2. 緊急度 • 高中低 or レビュー期限をブランチ特性から記載 3. 対応内容 • プルリクエストの単位を小さくする • プルリクエストの目的を明確にする • レビューの観点を明確にする • 関連リンクを記載 説明 1. WIP(Work In Progress)の活用 2. RFC(Request For Comment)の活用 タイトル
  • 32. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 31 コードレビューの改善 対面レビューは必要なものだけに限定して行う その代わりにインラインディスカッションの質を上げる – 誤りの指摘を書くだけではなく、気づきや質問も記載するよう啓蒙 – 意見募集の書き込み – 新しい実装方法を提案と「いいね!」の使用 – 修正・調査が必要なコメントにはタスクの作成
  • 33. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 32 改善による変化 何を確認すれば良いかわからない →プルリクエストの説明改善でレビューポイントが明確に クソコードが大量発生する →WIP・RFC でリスクを事前につぶせるように なかなかレビューされない →プルリクエストを小さくすることでレビューが容易に レビューのコストが高すぎる →必要最低限の対面レビューをすることコスト削減 コードの誤りを指摘するだけになっている →気付きや質問を書き込むことで徐々に議論が活発に →議論の中から、知識の共有や新しいアイデアが出るように
  • 34. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 33 現在のコードレビューのやり方 プルリクエ ストの作成 対面レビュー が必要か 開発者 対面レビュー 机上レビュー プルリクエス トのマージ 承認 レビュワー 修正が必要か コードの修正 必要 必要 不要 不要 開発者 チーム全体で双方向的 コミュニケーション 重要なものに限定して、 対面レビュー レビューに必要な情報を明確に して、円滑なレビュー実施へ
  • 35. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 34 プラグイン連携 Slack notifications plugin – Bitbucket のイベントを Slack に通知する Webhook to Jenkins for Bitbucket – Bitbucket のイベントを Jenkins に通知する ビルド・デプロイ・ 自動テストの実行 イベントの通知結果通知
  • 36. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 35 Slack への通知  応答性の向上  チームが知るべき情報の通知 – 障害Alert – チームの予定 – ビルドデプロイ・自動テストの結果 – タスクのイベントを通知
  • 37. ULS Copyright © 2011-2016 UL Systems, Inc. All rights reserved. Proprietary & Confidential Powered by 36 ありがとうございました