SlideShare a Scribd company logo
1 of 53
Download to read 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	
  

More Related Content

What's hot

導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来についてshinjiigarashi
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門Masahito Zembutsu
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring土岐 孝平
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]DeNA
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話Koichiro Matsuoka
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれlestrrat
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかKoichiro Matsuoka
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術Takafumi ONAKA
 

What's hot (20)

導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring
 
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
 

Viewers also liked

「管理」をなくせばうまくいく
「管理」をなくせばうまくいく「管理」をなくせばうまくいく
「管理」をなくせばうまくいく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
 
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
 

Viewers also liked (17)

「管理」をなくせばうまくいく
「管理」をなくせばうまくいく「管理」をなくせばうまくいく
「管理」をなくせばうまくいく
 
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
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 

Similar to デキるプログラマだけが知っているコードレビュー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
 
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
 
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000daiザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000daikyon mm
 

Similar to デキるプログラマだけが知っているコードレビュー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
 
ザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000daiザ・ジェネラリスト #5000dai
ザ・ジェネラリスト #5000dai
 

More from 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
 

More from 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版)