Slide 1

Slide 1 text

プロになるためのレビューのススメ
 Tama Ruby会議01, 2019/07/06
 @konchan_x


Slide 2

Slide 2 text

Yuki Kondo(@konchan_x)
 
 # 所属 
 DeNA ヘルスケア
 
 # やってること 
 サーバーサイドエンジニア
 Ruby, Rails
 Go, GAE, Firestore
 Vue.js, Nuxt.js, Flutter
 
 # 前職
 SIer, SE, Dive into Code


Slide 3

Slide 3 text

Rubyistとしての成長...
 
 いつした?


Slide 4

Slide 4 text

レビューされた or した
 
 => 成長を実感


Slide 5

Slide 5 text

レビューされるメリット


Slide 6

Slide 6 text

ベテランのチェックでコード品質&スキルUP
 01
 User.all.each do |user|...
 
 > 全件取得でオンメモリになってまうで...
 User.find_each do |user|...


Slide 7

Slide 7 text

見てもらうために読みやすいコードを意識する
 02
 # 命名規則
 ユーザーのメールアドレスを取得したい
 NG: user.get_email
 OK: user.email
 
 # メソッド定義のシグネチャ
 ユーザーIDに該当するユーザーを取得したい
 NG: def find_by_id(user)
 OK: def find_by_id(user_id)


Slide 8

Slide 8 text

レビューするメリット
 オススメ


Slide 9

Slide 9 text

プロの技を盗める
 01
 ・責務分割
 ・delegate(移譲)
 ・||= (自己代入)
 ・DI(依存性注入)
 ・開発Contextごとの実装の違い
 class User
 attr_reader :id
 delegate :name, to: :profile
 
 def initialize(id)
 @id = id
 end
 
 private
 
 def profile
 @profile ||= ::Profile.new(self)
 end
 end
 
 class Profile
 def initialize(user)
 @user = user
 end
 
 def name
 "#{@user.id}: konchan"
 end
 end
 


Slide 10

Slide 10 text

コードから始まるコミュニケーションが増える
 02
 あそこの
 アーキテクチャどう なってた?
 コンポーネントの認 証について教えて 欲しいっす
 外部連携データの
 フォーマットどうなっ てる?
 二日酔いやばい...


Slide 11

Slide 11 text

プロジェクトの状況を把握する力がつく
 03
 A案件
 B案件
 C案件
 日頃からタスクや仕様を確認する
 むりぽ...


Slide 12

Slide 12 text

・命名
 ・デザインパターン
 ・責務
 ・アーキテクチャ
 ・DDD
 ・パフォーマンス
 ・セキュリティ
 自分ならどう実装するか比較する
 04


Slide 13

Slide 13 text

レビューサイクルのメリット


Slide 14

Slide 14 text

適切な単位でPRを作成するようになる
 01
 変更ファイル50ファイル
 
 差分+2000行, -500行
 修行かな?
 変更ファイル5ファイル
 
 差分+100行, -20行


Slide 15

Slide 15 text

相手に理解してもらうために資料を用意する
 02
 ・シーケンス図
 ・業務フロー図
 ・ER図
 ・アーキテクチャ図
 ・API仕様
 ...
 PlantUML
 Swagger, OpenAPI
 便利なツールも覚える


Slide 16

Slide 16 text

レビュー...めっちゃええやん


Slide 17

Slide 17 text

個人
 チーム
 プロダクト
 スキルアップ
 開発力アップ
 品質アップ


Slide 18

Slide 18 text

レビューおすすめしてきたが...
 注意すること


Slide 19

Slide 19 text

過度に細かくレビューすることが
 良い訳ではない
 
 ・相手のコンテキストを理解する
 ・開発状況を理解する
 ・許容できるレベルかどうか判断する


Slide 20

Slide 20 text

何を達成したいかが重要


Slide 21

Slide 21 text

価値をユーザーに届けること


Slide 22

Slide 22 text

用法・用量を守って適切なレビュー