Slide 1

Slide 1 text

Github  vs  Gerrit   -­‐  最終決戦    -­‐ @shibuya.rb   近藤うちお   2012-­‐10-­‐17

Slide 2

Slide 2 text

@udzura  -­‐  近藤うちお •  エイミングでレールズ書いています   •  社内でパデュリーノはじまりました   – でも、ぼくのプロジェクトはレールズ…   •  最近Elixir再開しつつある   •  最近見てるアニメはゆるゆりです   •  h;p://udzura.jp     提供

Slide 3

Slide 3 text

[PR] •  Web+DB  Press  vol.71   •  書いた   •  今回のテーマは    Pry  です!!!     •  (Thanks  @ainame)

Slide 4

Slide 4 text

今日 •  レビューツールの話です   •  ここはシブヤ・ルビー……   •  いや、ルビーでの開発で使っていますので

Slide 5

Slide 5 text

コードレビュー •  してますか?

Slide 6

Slide 6 text

プルリクエスト •  してますか?

Slide 7

Slide 7 text

あなたと

Slide 8

Slide 8 text

プルリクエストで •  初めて人のコ〜ドをちゃんと見たな〜   •  レビュ〜初めてだったわ〜   •  という方?

Slide 9

Slide 9 text

コードレビュー •  古典的イメージ   – インスペクション   – ウォークスルー   – あっ、この用語   基本情報処理技術者試験で見たやつだ!   –   レビュー会議する   – ウォーターフォールのいち工程   –   コストがヤバい   – ダルそう……

Slide 10

Slide 10 text

いま、プルリクエスト •  本質はコードのレビューだと思います   •  「ソーシャルコーディング」は、コードレビュー   というプラクティスを   – 対等   – 双方向的   – 軽量   •  に変えるのに役立ったと思っていて   とてもすばらしい  

Slide 11

Slide 11 text

突然のプルリクエスト •  PR、確かにコードレビューを身近にしたけど   •  で、いきなり「レビューしてください」   •  できるもんなの?   •  地味にみんな戸惑ったのではないかと   思っている  

Slide 12

Slide 12 text

もっとレビューの話をしたい

Slide 13

Slide 13 text

ぼくのレビュー事始め •  Gerrit  code  review   – h;p://code.google.com/p/gerrit/    

Slide 14

Slide 14 text

Gerrit  Code  Reviewとの出会い •  入社前から存在は知っていたけど、某A社に   入ってから使い始めた   •  入社1日目にモヒカン1さんとペアプロをし、   数日後モヒカン2さんによりレビュー→直し   •  レビューされる → レビューする側にも _人人人人人人_
 > 突然の斧 <
  ̄^Y^Y^Y^Y^Y^ ̄

Slide 15

Slide 15 text

Gerrit  Code  Review •  GoogleのMondrianの   •  クローンのRietveld(独自言語製)   •  のforkらしい   •  ジャバ言語と言う言語で   書かれている   •  Android、Qt  あたりが採用   •  Gerrit  Rietveld  さんどんだけ   偉いのか……   •  h;p://code.google.com/p/gerrit/wiki/Background  

Slide 16

Slide 16 text

利用例:  Androidの開発 h;ps://android-­‐review.googlesource.com  

Slide 17

Slide 17 text

一方 •  は、Githubを使いやがった……

Slide 18

Slide 18 text

gerrit  と github •  比べてみた   •  Githubも(社内で)少し触って、   「えっ」とか「うーん」って   なったところとかを交えつつ

Slide 19

Slide 19 text

gerritのいいな〜ってところ •  Patchsetの存在

Slide 20

Slide 20 text

Patchset? •  コミット一つ一つに対して「Change-­‐ID」が割り 振られる   •  gerritは、 Change-­‐IDが同じコミットは、SHA1 の値が違っていても「同一のコミット」と見なす   •  Change-­‐IDが同じコミット群は変更履歴が残る   •  各コミットのdiffを参照できるし、過去のコメン トも消えない

Slide 21

Slide 21 text

Patchsetの状態ごとに   チェックアウトできる

Slide 22

Slide 22 text

議論が拡散しない •  コミットとPatchsetの記録のおかげで、   「コミットへのコメント」がそのコミットに集約する   •  h;ps://twi;er.com/kyanny/status/257670367504654336  

Slide 23

Slide 23 text

歴史改変 •  git  rebase  -­‐i  で履歴を奇麗に保つ運用と   親和性が高い   •  h;p://d.hatena.ne.jp/sinsoku/20110925/1316933393

Slide 24

Slide 24 text

歴史改変  in  github •  rebaseとかしたらgit  push  -­‐fとかになる   – 他の方法があるかもしれないが……   多くの人がこのやり方を推奨する旨書いてる   – 恐ろしい……   •  もしくはコミットをあとから追加していく     – 一度上げちまったプルリクは改変しない

Slide 25

Slide 25 text

c.f.  消しゴム vs  破り捨て •  “この間ちょうどオフィスで「アメリカ人はなんでシャー ペンの良さが分からないんですか?」って話があった んだけど、これもまさに象徴的なことだよね。アメ リカ ではそもそも消しゴム全然使わないから、書いた後に 直すっていうコンセプトが無い。シリコンバレーでもな んでもそうだけど、作ってとりあえずリリース する。消 しゴム、ないんだよね。この国。(笑)だけど日本人は 直して直して、完璧になるまでなかなか出さない。ダメ だったら破って次に進めばいいんだよ。”   •  h;p://blog.btrax.com/jp/2012/05/09/int-­‐designer/  

Slide 26

Slide 26 text

もしかして •  あんまりrebase  -­‐i  でコミット直すのって   •  みんなやってない?   •  Githubの人ってrebase  -­‐i使わなさそう…

Slide 27

Slide 27 text

gerrit  merit •  無料です   – Githubの利用もロックインはロックインなのです   – まあ、Bitbucketとかもありますけど……   •  連携プラグインとか   – gerrit  -­‐>  Jenkins   – h;p://developer.aiming-­‐inc.com/ci/jenkins-­‐gerrit-­‐ trigger-­‐plugin-­‐usage/     – gerrit  はコマンドラインAPIもあるよ  

Slide 28

Slide 28 text

クラウドに置けない系開発 •  主にアイピーモノですね   •  Github  Enterprise?いいと思いますよ   •  h;ps://enterprise.github.com/pricing   •  お金で躊躇して導入できない   とかであれば、まずは   gerritを試すといいのでは

Slide 29

Slide 29 text

ソーシャルコーディングへの橋渡し •  Githubほどのオープンっぽさが無いので   そこが逆にいいかも   •  Aimingでは、そんなにwebッ子じゃない   エンジニアにも普及している   •  文化が違うエンジニアだっているという話 tool social

Slide 30

Slide 30 text

gerrit  cons •  社内でホストするのってやっぱ大変……   – 重くなったり……   – アップデート……   •  UIはやっぱりGithubの方が良い  :bomb:   •  「複数コミットのつながり」へのコメントが   できない   •  ミサワリンクが画像展開されない

Slide 31

Slide 31 text

まとめ •  gerritのよいところ   – オ〜プンソ〜ス   – Patchsetの存在   – マニー   – クローズドから始められる   •  「ソーシャルなんて……」と躊躇するなら   いっそgerritから始めてはいかが?  

Slide 32

Slide 32 text

see  also •  藤村さん(卒業)の発表   •  「AimingのGitHubを使った開発フロー」   •  h;ps://speakerdeck.com/u/fujimura/p/ aiminggithub      

Slide 33

Slide 33 text

ask  him •  gerrit  →  github  なプロジェクトに移行した   •  彼もきっといいことを言ってくれるはず……