SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
いつまでクソコードを
書き続けるの?
デキるプログラマだけが知っている
コードレビュー7つの秘訣
SonicGarden Inc. 西見 公宏
2014/8/23 DevLove甲子園 東日本大会 技トラック 5回裏
DevLove甲子園 東日本大会 技トラック	
  
西見 公宏
Nishimi Masahiro
2	
  
自己紹介
DevLove甲子園 東日本大会 技トラック	
  
西見 公宏 Masahiro Nishimi
@mah_lab
昭和58年生まれ 東京育ち
2児(双子)の父親です
3	
  
ブログ
http://blog.mah-lab.com/
DevLove甲子園 東日本大会 技トラック	
   4	
  
•  納品のない受託開発
–  プログラマがお客様の顧問としてビジネスを支える
ITをサポート
•  自社サービス開発
–  youRoom (グループ内コミュニケーション)
–  SKIP (社内SNS)
–  Remotty (リアルタイムコミュニケーション)
DevLove甲子園 東日本大会 技トラック	
   5	
  
今日の話の位置づけ
•  SonicGardenでは技術者の教育、プロダ
クトの保守性向上施策など、全てコードレ
ビューを中心に行っています。
•  そんな現場ノウハウを元に、より良いコード
にしていくために、どんなコードレビューを
すれば良いか?ということをお話します。
DevLove甲子園 東日本大会 技トラック	
   6	
  
DevLove甲子園 東日本大会 技トラック	
   7	
  
この7つの秘訣を聞いた人の声
http://ppworks.hatenablog.jp/entry/2014/08/19/145723
今日お話する内容
1. クソコードとは何か?
2. 優れたプログラマとは何か?
3. コードレビューが改善の近道
4. コードレビュー7つの秘訣
DevLove甲子園 東日本大会 技トラック	
   8	
  
DevLove甲子園 東日本大会 技トラック	
  
1. クソコードとは何か?
9	
  
DevLove甲子園 東日本大会 技トラック	
  
そもそもクソコードって
なんだと思いますか?
今から30秒の間、皆さん頭のなかで考えてみてください
10	
  
DevLove甲子園 東日本大会 技トラック	
  
「クソコード」とは・・・
11	
  
DevLove甲子園 東日本大会 技トラック	
  
「クソコード」とは・・・
読む人を怒りの渦に
叩きこむコードである
12	
  
クソコード3つの特徴
1. 読めないコード
–  変数名が暗号/制御フローが無駄に複雑/メソッド名と処理の
内容が合ってない etc...
2. 要領の悪いコード
–  言語レベルで用意されている機能を素直に使わない(例:Go
を使っているのにゴルーチンを使わない) etc...
3. 意図がわからないコード
–  フレームワークのレールに従っていない etc...
DevLove甲子園 東日本大会 技トラック	
   13	
  
DevLove甲子園 東日本大会 技トラック	
   14	
  
例
	
  def	
  checkadmin?	
  
	
  	
   	
  if	
  session[:login].admin	
  then	
  
	
  	
   	
   	
  return	
  true	
  
	
  	
   	
  else	
  
	
  	
   	
   	
  redirect_to	
  '/members/'	
  +	
  session[:login].id.to_s	
  
	
  	
   	
   	
  return	
  false	
  
	
  	
   	
  end	
  
	
  	
  end
クソコードかどうかは
読まれるまで分からない
•  シュレディンガーの猫
•  読んだ人の当事者感によって度合いが変わ
る(例:「え、このコード、俺がメンテするの!?」)
•  自分で読んでダメだと思うなら、最初から
直して・・・。
DevLove甲子園 東日本大会 技トラック	
   15	
  
DevLove甲子園 東日本大会 技トラック	
  
2. 優れたプログラマとは何か?
16	
  
優れたプログラマ3つの特徴
1. 「読めないコード」を書かない。
–  読みやすいコードを書く。
2. 「要領の悪いコード」を書かない。
–  言語の特性を活かした要領の良いコードを書く。
3. 「意図のわからないコード」を書かない。
–  設計の意図が明確である。
DevLove甲子園 東日本大会 技トラック	
   17	
  
優れたプログラマを見極める簡単な試験
書いたコードの1行1行に対して、
以下の項目を質問する。
l どういう処理なのか?
l どういう意図で書いたのか?
DevLove甲子園 東日本大会 技トラック	
   18	
  
DevLove甲子園 東日本大会 技トラック	
  
3. コードレビューが改善の近道
19	
  
まずは読まれなければはじまらない
DevLove甲子園 東日本大会 技トラック	
   20	
  
読む人に怒りをもたらすのが
クソコード
ならば
読む人がいなくては
はじまらない
誰に読まれるのがベストか?
DevLove甲子園 東日本大会 技トラック	
   21	
  
優れたプログラマ
何故優れたプログラマが読むべきなのか?
DevLove甲子園 東日本大会 技トラック	
   22	
  
•  単純に同じレベルのプログラマが指摘しても、
指摘の内容に限界があるため。
限界の壁
優れたプログラマは限界を引き上げます
DevLove甲子園 東日本大会 技トラック	
   23	
  
•  レビューの中で小手先のテクニックに終始しない「優れ
たプログラマの考え方」を伝えていくことで、チームの
限界を引き上げていきます。
•  いくら優れたプログラマと言えども、闇雲にレビューを
するのでは効果がありません。
ただし・・・
DevLove甲子園 東日本大会 技トラック	
   24	
  
・・・
•  ソニックガーデンでも新しく入ったプログラマを教育す
る手段としてコードレビューを取り入れています。
•  その中で気付いたポイントをいくつかピックアップしま
した。
•  それが今からお伝えする「7つの秘訣」です。
より効果を上げるために
DevLove甲子園 東日本大会 技トラック	
   25	
  
DevLove甲子園 東日本大会 技トラック	
   26	
  
コードレビューの心技体
•  心:今日お話する「7つの秘訣」
•  技:コードレビューの技術的観点
•  体:コードレビューを実践すること
DevLove甲子園 東日本大会 技トラック	
  
4. コードレビュー7つの秘訣
27	
  
1. レビューの観点を明確にすること
DevLove甲子園 東日本大会 技トラック	
   28	
  
1. レビューの観点を明確にすること
•  リリース前レビューの話なのか、コード品
質の話なのか。
•  読む側も漠然と読んで、漠然とコメントを
書くのでは効果を生まない。
– 観点を明確にしてレビューすることで指摘す
る側の精度も上がります。
DevLove甲子園 東日本大会 技トラック	
   29	
  
•  コーディングスタイルの観点
•  セキュリティの観点
•  保守性の観点
•  トランザクションの観点(リカバリ等)
•  リリース時に事故が起きないか?の観点
DevLove甲子園 東日本大会 技トラック	
   30	
  
1. レビューの観点を明確にすること
  (具体例)
DevLove甲子園 東日本大会 技トラック	
   31	
  
HOUND CI
2. 我が身に返ることを恐れずに指摘す
ること
DevLove甲子園 東日本大会 技トラック	
   32	
  
2. 我が身に返ることを恐れずに指摘するこ
と
•  自分のことは棚に上げる!
•  鋭くツッコミを入れられないなら、レ
ビューの意味は無い。
•  指摘して自分の耳が痛いなら、自分にとっ
ても成長のチャンスだと捉える。
DevLove甲子園 東日本大会 技トラック	
   33	
  
3. 何故悪いコードなのかを論理的に
説明すること
DevLove甲子園 東日本大会 技トラック	
   34	
  
3. 何故悪いコードなのかを論理的に説明す
ること
•  「何となく汚い」は指摘ではない。
•  悪いコードだと判断したなら、相手が納
得できるように、論理的に説明する。
•  論理的に説明できないなら指摘をすべきで
はない。
DevLove甲子園 東日本大会 技トラック	
   35	
  
4. 良いコードについて共通認識を持つ
こと
DevLove甲子園 東日本大会 技トラック	
   36	
  
4. 良いコードについて共通認識を持つこと
•  コードレビューのあとに雰囲気が悪くなるの
はチームで「良いコード」の認識が揃ってい
ない証拠。
•  「良いコード」を共有することでチームとし
て成長する。
•  認識を揃えるためには、あるコードを題材に
ディスカッションの機会を設けると良い。
DevLove甲子園 東日本大会 技トラック	
   37	
  
DevLove甲子園 東日本大会 技トラック	
   38	
  
チームでディスカッションの
機会を持つ例
DevLove甲子園 東日本大会 技トラック	
   39	
  
ディスカッションの差分
5. 小さい単位でレビューを繰り返すこ
と
DevLove甲子園 東日本大会 技トラック	
   40	
  
5. 小さい単位でレビューを繰り返すこと
•  大きな単位だとレビューする側もされる
側も出番が回ってきにくい。
– 機会を増やすことでみんながレビュー体験を
する/小口化することで習慣化する
•  ソニックガーデンでは30分∼1時間程度
で見れる分量を基準にしている。
DevLove甲子園 東日本大会 技トラック	
   41	
  
6. 指摘は素直な気持ちで受け入れるこ
と
DevLove甲子園 東日本大会 技トラック	
   42	
  
6. 指摘は素直な気持ちで受け入れること
•  指摘を素直に受け止められないと成長で
きない。
•  受け入れた後は同じ失敗を繰り返さない。
– 漠然とコードレビューを受けて、その場はそ
の場で何とかやり過ごして、また同じ失敗を
繰り返すメンタルモデルではダメ。
DevLove甲子園 東日本大会 技トラック	
   43	
  
7. 指摘は人格否定でないことを理解す
ること
DevLove甲子園 東日本大会 技トラック	
   44	
  
7. 指摘は人格否定でないことを理解するこ
と
•  自分が一生懸命書いたコードに対して手厳
しく指摘を受けるのは辛いこと。。
•  でも、指摘するのはコードであって、あな
たの人格を否定しているわけではありませ
ん!
•  お互いに「コード」の話をしている、とい
うことを理解した上で指摘をしましょう。
DevLove甲子園 東日本大会 技トラック	
   45	
  
DevLove甲子園 東日本大会 技トラック	
  
まとめ
46	
  
今日お話した内容
1. クソコードとは何か?
2. 優れたプログラマとは何か?
3. コードレビューが改善の近道
4. コードレビュー7つの秘訣
DevLove甲子園 東日本大会 技トラック	
   47	
  
今日お話した内容
•  クソコードとは読む人を怒りの渦に叩き
こむコードである。
•  優秀なプログラマに読まれる機会があれ
ば、その人のコードは劇的に改善する。
 (※ 効用には個人差があります)
DevLove甲子園 東日本大会 技トラック	
   48	
  
今日お話した内容
1.  レビューの観点を明確にすること
2.  我が身に返ることを恐れずに指摘すること
3.  何故悪いコードなのかを論理的に説明すること
4.  良いコードについて共通認識を持つこと
5.  小さい単位でレビューを繰り返すこと
6.  指摘は素直な気持ちで受け入れること
7.  指摘は人格否定でないことを理解すること
DevLove甲子園 東日本大会 技トラック	
   49	
  
DevLove甲子園 東日本大会 技トラック	
   50	
  
ソニックガーデンで
一緒にはたらく仲間を募集しています!
http://www.sonicgarden.jp/jobs
転職を考えている方はコチラ!
DevLove甲子園 東日本大会 技トラック	
   51	
  
一緒に納品のない受託開発をしてくれる
仲間も募集しています!
http://www.sonicgarden.jp/guild
•  既に立ち上げている会社の事業として「納品のない受託開発」を検討
している方
•  フリーランスの仕事の一つとして「納品のない受託開発」に興味のあ
る方
上記に当てはまる方は下記のURLにアクセス!
DevLove甲子園 東日本大会 技トラック	
   52	
  
SonicGarden Study
Ustreamでテクニカルな情報を配信しています。
コードレビューの心技体の続き、
技と体を次回以降配信する予定です。
次回は9月中旬を予定。見てね!
http://sonicgarden.doorkeeper.jp/
DevLove甲子園 東日本大会 技トラック	
  
ご静聴ありがとうございました!
53	
  

Mais conteúdo relacionado

Mais procurados

なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)Mikiya Okuno
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道nishio
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 Hiroshi Ito
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Takayuki Shimizukawa
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safetyTokoroten Nakayama
 
型安全性入門
型安全性入門型安全性入門
型安全性入門Akinori Abe
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説Hironori Washizaki
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方Shigenori Sagawa
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるRDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるMikiya Okuno
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないCarnot Inc.
 

Mais procurados (20)

なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
If文から機械学習への道
If文から機械学習への道If文から機械学習への道
If文から機械学習への道
 
WayOfNoTrouble.pptx
WayOfNoTrouble.pptxWayOfNoTrouble.pptx
WayOfNoTrouble.pptx
 
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3 データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety心理的安全性の構造 デブサミ2019夏 structure of psychological safety
心理的安全性の構造 デブサミ2019夏 structure of psychological safety
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説(修正)機械学習デザインパターン(ML Design Patterns)の解説
(修正)機械学習デザインパターン(ML Design Patterns)の解説
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
RDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考えるRDBにおけるバリデーションをリレーショナルモデルから考える
RDBにおけるバリデーションをリレーショナルモデルから考える
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
ChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くないChatGPTは思ったほど賢くない
ChatGPTは思ったほど賢くない
 

Destaque

「管理」をなくせばうまくいく
「管理」をなくせばうまくいく「管理」をなくせばうまくいく
「管理」をなくせばうまくいくYoshihito Kuranuki
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いKen Morishita
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方CData Software Japan
 
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-Unity Technologies Japan K.K.
 
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017tty fky
 
4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗toshihiro ichitani
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyTakakiyo Tanaka
 
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチJavaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチCData Software Japan
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜aha_oretama
 
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てRyosuke Uchitate
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Kohei Saito
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座Yusuke Suzuki
 
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Youtarou TAKAHASHI
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccYujiSoftware
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugMasatoshi Tada
 

Destaque (18)

「管理」をなくせばうまくいく
「管理」をなくせばうまくいく「管理」をなくせばうまくいく
「管理」をなくせばうまくいく
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
 
とにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたいとにかく楽してVue.jsでTypeScriptを使いたい
とにかく楽してVue.jsでTypeScriptを使いたい
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
 
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
【Unity道場スペシャル 2017札幌】最適化をする前に覚えておきたい技術 -札幌編-
 
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
 
4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗4つの戦犯から考えるサービスづくりの失敗
4つの戦犯から考えるサービスづくりの失敗
 
Open Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere LibertyOpen Liberty: オープンソースになったWebSphere Liberty
Open Liberty: オープンソースになったWebSphere Liberty
 
Javaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチJavaアプリケーションの モダナイゼーションアプローチ
Javaアプリケーションの モダナイゼーションアプローチ
 
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
 
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立てユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
 
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
 
JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座JJUG初心者のためのJava/JJUG講座
JJUG初心者のためのJava/JJUG講座
 
Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜Selenide or Geb 〜あなたはその時どちらを使う〜
Selenide or Geb 〜あなたはその時どちらを使う〜
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 

Semelhante a デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)

初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first timeYusuke Yamada
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」Shuji Morisaki
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるのYoshitaka Seo
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜Katsuhiro Miura
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜Koichi ITO
 
神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422Aya Tokura
 
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?Akira Hatsune
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsTakashi Hatamoto
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるYou&I
 
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTatsuya Ishikawa
 
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?Yasuhiko Yamamoto
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れIkeda Yosuke
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2Ryohei Kamiya
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能TomomitsuKusaba
 
人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜Yukei Wachi
 
KPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブKPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブAtsushi Harada
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1MinGeun Park
 
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~日本マイクロソフト株式会社
 
スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31Sukusuku Scrum
 

Semelhante a デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版) (20)

初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
初めての拡張機能リリースまでの歩み / Road to publishing extension for the first time
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
LightSwitch 結局何ができるの
LightSwitch 結局何ができるのLightSwitch 結局何ができるの
LightSwitch 結局何ができるの
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
 
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
 
神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422
 
初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?初音玲の流儀 - なんでプログラミングしているの?
初音玲の流儀 - なんでプログラミングしているの?
 
Adminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発TipsAdminとうまく共存するためのApex開発Tips
Adminとうまく共存するためのApex開発Tips
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみる
 
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transitionTest automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
 
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
Visual Studio 2015 の新機能: Pex はユニットテストの福音となるか!?
 
connpass特徴と開発の流れ
connpass特徴と開発の流れconnpass特徴と開発の流れ
connpass特徴と開発の流れ
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜人が作るソフトウェア 〜今組織パターンを読む意味〜
人が作るソフトウェア 〜今組織パターンを読む意味〜
 
KPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブKPT発表会 - アジャイルひよこクラブ
KPT発表会 - アジャイルひよこクラブ
 
[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1[141004] cedec 2014 참관기 & 강연 리뷰 #1
[141004] cedec 2014 참관기 & 강연 리뷰 #1
 
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
【BS5】帰ってきたハードコアデバッギング ~.NET6 を添えて~
 
スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31
 

Mais de Masahiro Nishimi

2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 KeynoteMasahiro Nishimi
 
技術的負債を生み出す構造とその対処について
技術的負債を生み出す構造とその対処について技術的負債を生み出す構造とその対処について
技術的負債を生み出す構造とその対処についてMasahiro Nishimi
 
「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組み「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組みMasahiro Nishimi
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組みMasahiro Nishimi
 
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09Masahiro Nishimi
 
ソニックガーデン流 無駄のないシステム開発
ソニックガーデン流 無駄のないシステム開発ソニックガーデン流 無駄のないシステム開発
ソニックガーデン流 無駄のないシステム開発Masahiro Nishimi
 
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来Masahiro Nishimi
 
Agile samurai達が現場を変える
Agile samurai達が現場を変えるAgile samurai達が現場を変える
Agile samurai達が現場を変えるMasahiro Nishimi
 
Agile Samurai インセプションデッキ
Agile Samurai インセプションデッキAgile Samurai インセプションデッキ
Agile Samurai インセプションデッキMasahiro Nishimi
 

Mais de Masahiro Nishimi (9)

2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote2019/09/15 大阪Ruby会議02 Keynote
2019/09/15 大阪Ruby会議02 Keynote
 
技術的負債を生み出す構造とその対処について
技術的負債を生み出す構造とその対処について技術的負債を生み出す構造とその対処について
技術的負債を生み出す構造とその対処について
 
「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組み「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組み
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
 
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
実践DevOps!SonicGarden流Herokuガチ運用術!SonicGarden Study #09
 
ソニックガーデン流 無駄のないシステム開発
ソニックガーデン流 無駄のないシステム開発ソニックガーデン流 無駄のないシステム開発
ソニックガーデン流 無駄のないシステム開発
 
[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来[RubyMotion LT] nitronに見るiosアプリ開発の未来
[RubyMotion LT] nitronに見るiosアプリ開発の未来
 
Agile samurai達が現場を変える
Agile samurai達が現場を変えるAgile samurai達が現場を変える
Agile samurai達が現場を変える
 
Agile Samurai インセプションデッキ
Agile Samurai インセプションデッキAgile Samurai インセプションデッキ
Agile Samurai インセプションデッキ
 

デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)