Inicio
Explorar
Enviar búsqueda
Cargar
Iniciar sesión
Registrarse
Publicidad
Check these out next
グルーミングしながら進めるプロダクト開発
Takafumi ONAKA
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
開発速度が速い #とは(LayerX社内資料)
mosa siru
日本語テストメソッドについて
kumake
見やすいプレゼン資料の作り方 - リニューアル増量版
yutamorishige50
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
1
de
62
Top clipped slide
「速」を落とさないコードレビュー
28 de Jan de 2017
•
0 recomendaciones
419 recomendaciones
×
Sé el primero en que te guste
ver más
•
55,236 vistas
vistas
×
Total de vistas
0
En Slideshare
0
De embebidos
0
Número de embebidos
0
Descargar ahora
Descargar para leer sin conexión
Denunciar
Tecnología
Forkwell Meetup #3 https://forkwell.connpass.com/event/48147/
Takafumi ONAKA
Seguir
Publicidad
Publicidad
Publicidad
Recomendados
短期間で新技術を学ぶ技術
Takafumi ONAKA
26.7K vistas
•
47 diapositivas
世界一わかりやすいClean Architecture
Atsushi Nakamura
45.2K vistas
•
77 diapositivas
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
22.4K vistas
•
40 diapositivas
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
76.2K vistas
•
33 diapositivas
TLS, HTTP/2演習
shigeki_ohtsu
12.8K vistas
•
129 diapositivas
Oss貢献超入門
Michihito Shigemura
28.9K vistas
•
145 diapositivas
Más contenido relacionado
Presentaciones para ti
(20)
グルーミングしながら進めるプロダクト開発
Takafumi ONAKA
•
10.9K vistas
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
•
16.5K vistas
開発速度が速い #とは(LayerX社内資料)
mosa siru
•
57.9K vistas
日本語テストメソッドについて
kumake
•
19.9K vistas
見やすいプレゼン資料の作り方 - リニューアル増量版
yutamorishige50
•
5.4M vistas
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
•
149K vistas
ビジネスパーソンのためのDX入門講座エッセンス版
Tokoroten Nakayama
•
52.1K vistas
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
•
10.5K vistas
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
•
86.3K vistas
データマイニングの話詰め合わせ
Tokoroten Nakayama
•
17.1K vistas
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
•
31.8K vistas
目grep入門 +解説
murachue
•
87.2K vistas
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
•
64.1K vistas
心理的安全性を 0から80ぐらいに上げた話
Yusuke Hisatsu
•
101.6K vistas
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
•
40.9K vistas
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
•
7.9K vistas
シリコンバレーの「何が」凄いのか
Atsushi Nakada
•
182.8K vistas
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Shin Ohno
•
2.5K vistas
Redisの特徴と活用方法について
Yuji Otani
•
98.6K vistas
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
•
143.1K vistas
Similar a 「速」を落とさないコードレビュー
(20)
プログラマが欲しい仕様書とは
Katsutoshi Makino
•
90.3K vistas
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
Shuji Morisaki
•
1.6K vistas
リモートチームとふりかえり改善フレームワーク
Maehana Tsuyoshi
•
1.1K vistas
connpass特徴と開発の流れ
Ikeda Yosuke
•
1.5K vistas
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
Masahiro Nishimi
•
71.4K vistas
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
•
31 vistas
議論を描く技術「ファシリテーショングラフィック」
nishikawa_makoto7
•
26K vistas
TDDBC osaka 2012/06/02
Hiro Yoshioka
•
2.8K vistas
Intalio japan special cloud workshop
Daisuke Sugai
•
720 vistas
わんくま同盟 大阪勉強会 #46
Atsuo Yamasaki
•
953 vistas
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
•
9 vistas
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
•
30 vistas
Scrum,Test,Metrics #sgt2016
kyon mm
•
20.1K vistas
アジャイルソフトウェア開発の道具箱
Koichi ITO
•
5.8K vistas
機能追加を行う際に考慮したい3つのポイント
Miwa Kuramitsu
•
6.6K vistas
Hiroshima Ruby Conference発表資料
Kakigi Katuyuki
•
525 vistas
大規模ソフトウェア開発とテストの経験について
Rakuten Group, Inc.
•
4.7K vistas
今さら聞けない人のためのDevOps超入門
VirtualTech Japan Inc./Begi.net Inc.
•
42 vistas
今なぜサーバーレスなのか
真吾 吉田
•
4.1K vistas
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO
•
6.6K vistas
Publicidad
Más de Takafumi ONAKA
(20)
不正のトライアングルとコードベースの治安維持
Takafumi ONAKA
•
514 vistas
技術記事を書く&楽しむチームの作り方
Takafumi ONAKA
•
8.8K vistas
Hatena::Letの式年遷宮
Takafumi ONAKA
•
6K vistas
pt-query-digest は Perl!!
Takafumi ONAKA
•
1.3K vistas
アプリケーションを作るときに考える25のこと
Takafumi ONAKA
•
24K vistas
cpanfileがRubyでパースできることに気づいた俺たちは
Takafumi ONAKA
•
3.5K vistas
Perl使いの国のRubyist
Takafumi ONAKA
•
8.6K vistas
ApplicationTemplateのススメ
Takafumi ONAKA
•
1.4K vistas
RSpecしぐさ
Takafumi ONAKA
•
12.2K vistas
ふつうのRailsアプリケーション開発
Takafumi ONAKA
•
30.6K vistas
クローズドソースから始めるオープンソース
Takafumi ONAKA
•
33.3K vistas
Application Bootstrap
Takafumi ONAKA
•
2.6K vistas
ドリコム×ピクシブ 社会人交換留学説明資料
Takafumi ONAKA
•
8.7K vistas
すこやかRails
Takafumi ONAKA
•
19.3K vistas
マジカルsvnとキュアgit
Takafumi ONAKA
•
17.8K vistas
Github Enterprise じゃなくてもいいじゃん
Takafumi ONAKA
•
23.4K vistas
ターミナルで画像確認するヤツ作った
Takafumi ONAKA
•
1.7K vistas
Webアプリケーションは難しい
Takafumi ONAKA
•
136K vistas
Rails3.2ってどう変わるの?
Takafumi ONAKA
•
4.4K vistas
ドリコム的Railsアプリ開発流儀
Takafumi ONAKA
•
10.1K vistas
Último
(20)
20230601_Visual_IoTLT_vol14_kitazaki_v1.pdf
Ayachika Kitazaki
•
57 vistas
SoftwareControl.pdf
ssusercd9928
•
15 vistas
【2023年5月】平成生まれのためのUNIX&IT歴史講座
法林浩之
•
16 vistas
ChatGPT + LlamaIndex 0 .6 による チャットボット の実装
Takanari Tokuwa
•
46 vistas
触感に関わる共感覚的表現と基本6感情の対応関係の検証
Matsushita Laboratory
•
14 vistas
統計学の攻略_正規分布ファミリーの全体像.pdf
akipii Oga
•
201 vistas
Oracle Cloud Infrastructure:2023年5月度サービス・アップデート
オラクルエンジニア通信
•
31 vistas
社内ソフトスキルを考える
infinite_loop
•
84 vistas
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
Deep Learning JP
•
34 vistas
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
6 vistas
Forguncy製品概要.pptx
フォーガンシー
•
58 vistas
SoftwareControl.pdf
ssusercd9928
•
6 vistas
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
0 vistas
ネットワークパケットブローカー市場.pdf
HinaMiyazu
•
7 vistas
AIEXPO_CDLE名古屋紹介
KotaMiyano
•
3 vistas
3Dプリンタって いいね
infinite_loop
•
56 vistas
統計学の攻略_統計的仮説検定の9パターン.pdf
akipii Oga
•
200 vistas
MC-800DMT intrusion detector manual
Vedard Security Alarm System Store
•
3 vistas
モバイル・クラウド・コンピューティング-データを如何に格納し、組み合わせ、情報として引き出すか
Masahiko Funaki
•
2 vistas
20230516 @Mix Leap Hirohiko_Suwa
Masashi Nakagawa
•
91 vistas
Publicidad
「速」を落とさないコードレビュー
「速」を落とさない コードレビュー 2017-01-28 Forkwell Meetup
#3 Productivity Engineering 大仲 能史 a.k.a. @onk
自己紹介 • 大仲 能史
a.k.a. @onk • 株式会社ドリコム 11年目 – アプリケーションスペシャリスト – Rails 歴が一番長くて 8 年ぐらい • 趣味 – コードを読むこと • 社内リポジトリ 1800 のうち 300 ぐらい watch 中 – 社内ツール作成 1
宣伝 • ドリコムは Elixir
CONF Japan 2017 の Gold Sponsor です – セッションもあるよ • Elixir, Ruby エンジニアに限らず 色んな職種を積極採用中なので 交流タイムに声かけてください! 2
今日の話 ユーザに 価値を 届ける 3 最低限の 品質を 保つ レビュー の基盤を 作る
前提 • 事業会社の話 – 人月単価ではないサービスを提供している •
Pull Request 駆動開発をしている – これができていない場合は 「マジカルsvnとキュアgit」 を見てください 4 http://www.slideshare.net/takafumionaka/20130322-svngit
やってしまったレビュー風景 5
やってしまったレビュー風景 6
100コメントにかかる時間 • Pull Request
が出る • 気づく (5min) • やりたいことを把握する (5min) • コメントする (10min) • レスがある or 修正のコミットがある (120min) • ↑をn往復 (10~20hour) • 何も成果がリリースされないまま1日が終わる 7
何もリリースできない徒労感 かつ ひたすら指摘され続けて疲弊 8
このコードレビューでは 何をやっていたのか 9
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 10 • コードが仕様を満たして いるか • 仕様に考慮漏れが無いか • エンバグは無いか • 良い設計をしているか
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 11 • スペースとかインデン トとか typo とか = の右に半角スペースが2つあります シングルクォートじゃなくダブル クォートを使うようにしてください regist m9(^Д^)プギャー
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 12 • メソッドの長さとか ネストの深さとか http://postd.cc/code-review-without-your-glasses/
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 13 • メソッド/変数名とか 簡潔なロジックとか guard 句で早めに raise したい Array#detect 使うともっとシンプル score って変数に kind の値が入っ てるけど score じゃないような
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 14 ユーザ入力をそのまま ORDER BY に 入れたらダメです。asc, desc かど うかを確かめてから HTML を自前で組み立てていて、 XSS 脆弱性があります validate するようにしてください UNIQUE 制約忘れずにー
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 15 N+1 気を付けてー 不要なインスタンスを作らない 二重ループになっているけど、工夫 したらループ1回で済みます
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 16 • コードが仕様を満たして いるか • 仕様に考慮漏れが無いか • エンバグは無いか • 良い設計をしているか
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 17 最低限の守りたい品質
コードレビューでやったこと リリースしたら価値が届 く、本来レビューすべき だったもの 18 • コードが仕様を満たして いるか • 仕様に考慮漏れが無いか •
エンバグは無いか • 良い設計をしているか
コードレビューでやったこと • コードフォーマット • 眼鏡を外してレビュー •
記述が分かりやすいか • セキュリティ担保 • パフォーマンス担保 19 最低限を満たしていな いと、違和感が酷くて 本来のレビューに入る ことができない
「最低限の水準を保とう」 という話をし過ぎると スピードが低下する 20
でも最低限の水準にはなる 21
最低限を満たすのにレビューは要るのか • コードフォーマット – コードフォーマッタで自動修正 –
スタイルガイドを作って配布 • 眼鏡を外したレビュー – 行数やネスト、循環的複雑度やABC Metric等、機械的に指摘 できる • Rubyらしさとか、他のメソッド名との整合性とか – まだレビューが必要だが、数年後には自動化できそう 22
最低限を満たすのにレビューは要るのか • セキュリティ担保 – まだレビューが必要だが、良いフレームワークを使うことで 足元を撃ち抜かない書き方を強制できる •
パフォーマンス担保 – まだレビューが必要だが、例えば N+1 を自動検出するツール は存在するので上手に使おう 23
最低限の品質を 機械的にチェック することができる 24
機械相手に試行錯誤する環境を 作るとレビューコストが大幅減 25
本来レビューすべきだったもの リリースしたら価値が届 く、本来レビューすべき だったもの 26 • コードが仕様を満たして いるか • 仕様に考慮漏れが無いか •
エンバグは無いか • 良い設計をしているか
本来レビューすべきだったもの もっと短縮できないだろうか? 27
コード差分の理由を書く 28 http://techlife.cookpad.com/entry/2015/03/30/174713
僕がよく使うフォーマット • 目的 • 方針 •
実装 • テスト • 相談 29
僕がよく使うフォーマット • 目的 • 方針 •
実装 • テスト • 相談 30 • この PR をマージすると以下のことが できるようになりまぁす! • 仕様書や Issue があればリンクを貼る
僕がよく使うフォーマット • 目的 • 方針 •
実装 • テスト • 相談 31 • 何を考えてこの PR を作ったのか、み たいなのがあれば • 考えた結果、除外したものがあれば 書いて欲しい • 例) 「GitLab に似たような画面が あったので同じ model 構造にした」 「1 万件程度なので LIKE 検索で十分 実用に耐える速度が出せると判断」
僕がよく使うフォーマット • 目的 • 方針 •
実装 • テスト • 相談 32 • 方針に沿って実装していく中でレ ビュアーに伝えるべきものがあれば 補足 • コードだけだと実装意図を読み解き づらい場合に図や疑似コードで流れ を説明するとか
僕がよく使うフォーマット • 目的 • 方針 •
実装 • テスト • 相談 33 • マージボタンを押してもらうための 安心できる材料 • 例) 「実機で一覧表示を確認した」 「DBA にクエリを見てもらって OK 貰ってます」
僕がよく使うフォーマット • 目的 • 方針 •
実装 • テスト • 相談 34 • 書いてみたものの自信が無いところ とか • diff の中にラインコメントの形で書い ても良い
PRの目的とコード差分が分かるように もっと短縮できないだろうか? 35
レビューの前提条件を提示する • レビュアーに求めているレビュー内容を書いておく – 例)
リリース直前なので、ブロッカーになるような不具合が無 いかどうかのチェックをお願いします • これによって減るレビュー – typo の指摘 – そもそも論 36
不要なレビューが減った もっと短縮できないだろうか? 37
成果物が見える状態でレビューする • Before/After のスクリーンショットを貼る –
変化する対象がより分かりやすくなるので マージしやすくなる • Pull Request 単位で自動デプロイする – 動作確認がサクッと終わるので マージしやすくなる 38
マージまでが速くなった もっと短縮できないだろうか? 39
方針の段階でレビューする • 生煮え Pull
Request (WIP) – 「migration と routes 書いたら push してね」 – 全体を書く前にレビューすることができるので 無駄になるコード量が激減する 40 https://speakerdeck.com/ken_c_lo/pull-request-4-designers- githubwoshi-tutapuroguramatodezainafalseitereteibunakai-fa- huro
方針の段階でレビューする • 設計レビュー – 設計のみを
Markdown で書いて Pull Request する – description に書く場合と違い • ラインコメントができる • コメントに対する修正がコミットになり、追いやすい 41 http://blog.shibayu36.org/entry/2016/08/05/103000
もっと短縮できないだろうか? 42
サービス開発はゴールが分からないのが前提 • 不確実な状況下にある – ユーザが本当に欲しいものって分かってる? •
今見えるゴールが正解である保証も無い • リリース後が 8 割 • サービスのリリースはスタートにすぎない 43 速い馬!
リリースを躊躇しない • Pragmaticであること Dogmaticにならないこと • リリースしてから Be
Professional Day で 綺麗にする 44 https://speakerdeck.com/hirak/mercariday2017-api
ここまでのまとめ 45 レビュー の基盤を 作る ユーザに 価値を 届ける 最低限の 品質を 保つ
最低限の品質を保つ • コーディング規約を用意する • 機械に指摘させることで –
一人で試行錯誤できる状況を作る 46
ユーザに価値を届ける • レビューは「改善する」行為 – 改善は損失を減らすが、何かを作ってはいない •
レビューによってリリースが遅くなるのは本末転倒 • 素早くマージできる状態を作っていこう – レビュアーとの意思疎通に気を払ってPull Requestを出す 47
レビューの基盤を作る 48
レビューの目的はさまざま • 最低限の品質担保 • 不安の解消 •
属人化を防ぐ • レビュイーの教育 • チームビルド • etc… 49
関係性のアンチパターンがある 50 http://www.songmu.jp/riji/entry/2014-01-19-cross2014.html
レビュアー・レビュイーの関係性 • 問題 vs.
私たち、という大前提 – レビュイーは人格攻撃と受け取らない – レビュアーは権威的になってはいけない • フィードバックは感情を押し付けるも のではなく、受け手が成果物をより良 くするために必要な情報を届けること 51
心理的安全性 • 不具合のある状態でリリースしたい人は居ない – レビュイーは悪意でバグを作っているわけではない –
レビュアーは悪意で指摘しているわけではない • というのを分かりやすくするために – レビュイーは前提をしっかり提示する – レビュアーは伝え方を丁寧にする 52
レビューは取り込むもの • 本来コードレビュー文化のあるべき正しき姿はチーム間 で議論をしてサービスにとって最終的に良いと判断した ことを取り込むこと • レビュアーからレビュイーへの一方的な指摘にしない –
納得をして「取り込む」 – 納得していれば「指摘対応」というコミットメッセージには ならない 53 http://yutokyokutyo.hatenablog.com/entry/20161213/148159 0322
レビューは取り込むもの • 納得していなかったら同じ指摘を繰り返すことになる • レビュイーは納得していない指摘を繰り返し受ける –
やらされる感++ – 自己効力感— • 権威に頼りつつレビューする – 「条件式が分かりづらいです。リーダブル コード 7.1 参照」 – リーダブルコード、リファクタリングがド安定 54
レビュアーが固定されている • 常にベテラン →
ルーキーの方向のレビューしか無い状態 は健全ではない – ベテランの無駄遣い問題 • レビューコストを外して開発に専念して欲しい – ベテランを信用しすぎ問題 – ルーキーの成長が悪い問題 • レビューはする側に回った方が教育効果が大きい 55
レビュイーからレビュアーへ • 二段階レビューを導入 – ルーキーがレビューして、その後ベテランがレビューする –
ルーキーが見落としするたびに心に爪痕が残り、学ぶ – ルーキーで役に立つのか?は、やり方次第 • 「ここよく分かんないです」を言うだけで価値がある • 分かりづらい部分はだいたい怪しい • テスト書いてなくね?も言って欲しい • ルーキーから指摘する障壁をどんどん取り除きたい 56
レビュイーからレビュアーへ • レビュータイムを設ける – 全員がレビュアーとなる –
ルーキーからレビューする 障壁を外す – 溜まったレビュー待ちの Pull Request が消化される 良い副作用もある • 最初はそちらを目的にしていた 57
まとめ 58
今日の話 ユーザに 価値を 届ける 59 最低限の 品質を 保つ レビュー の基盤を 作る
レビューの基盤を作る • レビュイーとレビュアーの関係性に気を遣う – 「問題
vs. 私たち」 – 「空気を導入しない」 • レビュイーが育っていく道筋を敷く – ルーキーだからレビュアーになれないわけではない 60
ご清聴ありがとうございました 61
Publicidad