狠狠撸

狠狠撸Share a Scribd company logo
コードレビューシステム構築
~Gerrit, Jenkinsを用いた自動化、およびTDD, DDDによる設計洗練手法導入まで~
2015/10/29
株式会社waja エンジニア
安藤?大輔
目次
1. wajaご紹介
2. 今までのコードレビュー
3. コードレビューシステム
4. 設計との親和性
5. まとめ
C2Cマーケットプレイス
海外ファッション通販
フルフィルメントサービス
http://www.waja.co.jp/
1. wajaご紹介
1. wajaご紹介
ほぼ100%内製
インフラ/ネットワーク構築など、一部委託
開発体制
デザイナ3名
エンジニア2名+新人1名(+10月JOIN 2名)
スタッフ33名中
男性8名(24%)
1. wajaご紹介
ファーストコミット:2005年9月(Subversion)
同じコードベース、同じ技術
Java1.4 → Java7
Tomcat5.5 → Tomcat7
Spring1.x → Spring4.x
PostgreSQL7.4 → PostgreSQL9.2
肥大化!
2. 今までのコードレビュー
やりたいときに、やりたい人が、やりたい分だけ!
少人数だし。。
忙しいときは。。(ごにょごにょ
テスト?おいしいの?
2. 今までのコードレビュー
気づき
実装が絡み合って修正がツラい
影響範囲がワカラない(読めない)
出続けるバグ、運用と開発の板挟み
開発者が増えたら???
変わろう!
3. コードレビューシステム
解決方針
長期運用しても設計を保つ
デグレードしにくい
影響範囲の見極め?見積しやすい
現行システムを複数のアプリに分割
3. コードレビューシステム
採用を決めたモノ
DDD(ドメイン駆動設計)
TDD(テスト駆動開発)
Gerrit(OSSのレビューツール)
Jenkins(OSSの継続的インテグレーションツール)
20151029 ヒカラホ?講演資料
4. 設計との親和性
作業フロー適正化
UnitTest結果、レビュー結果の通知自動化
マージ後のステージング環境デプロイ自動化
(今後)コードメトリクス自動収集
開発に集中
4. 設計との親和性
設計?仕様に立ち返ることができる
Testからレビュー
システムサポート(行?ファイルコメント)
チャットツール?立ち話との併用
議論の活発化
4. 設計との親和性
具体的なメリット
不具合が減った
(気分的にも)修正しやすくなった
コードを人に見せても良いと思い始めた
品質向上!
5. まとめ
肥大化したシステムを運用しやすく
アプリ分割?設計洗練
時間を捻出し、開発に集中する
ツールのサポート?自動化
5. まとめ
TDD/DDDが向いている
PMF(Product Market Fit)を超えたアプリケーション
スタートアップ、フロントアプリには向かない
ご清聴ありがとうございました

More Related Content

20151029 ヒカラホ?講演資料