株式会社waja 安藤様 登壇資料

Post on 15-Apr-2017

2.011 Views

Category:

Engineering

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

コードレビューシステム構築~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の継続的インテグレーションツール)

4. 設計との親和性

作業フロー適正化

UnitTest結果、レビュー結果の通知自動化

マージ後のステージング環境デプロイ自動化

(今後)コードメトリクス自動収集

開発に集中

4. 設計との親和性

設計・仕様に立ち返ることができる

Testからレビュー

システムサポート(行・ファイルコメント)

チャットツール・立ち話との併用

議論の活発化

4. 設計との親和性

具体的なメリット

不具合が減った

(気分的にも)修正しやすくなった

コードを人に見せても良いと思い始めた

品質向上!

5. まとめ

肥大化したシステムを運用しやすく

アプリ分割・設計洗練

時間を捻出し、開発に集中する

ツールのサポート・自動化

5. まとめ

TDD/DDDが向いている

PMF(Product Market Fit)を超えたアプリケーション

スタートアップ、フロントアプリには向かない

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

top related