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

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

on

  • 692 views

DevLove甲子園 東日本大会でお話した内容です。 ...

DevLove甲子園 東日本大会でお話した内容です。
http://devlove.doorkeeper.jp/events/11792

-----
優れたプログラマだけが優れたソースコードを書くことができます。

では優れたプログラマになるにはどうすれば良いでしょうか。

自分の書いたコードを、優れたプログラマに指摘してもらうことが一番の近道です。それがコードレビューです。たった一人でコードレビューも受けずに、ただ書き続けてもクソコードはクソコードのままなのです。

そこで今回は、良いコードが書けるプログラマになるための、コードレビューを上手に実践する秘訣を話します。

Statistics

Views

Total Views
692
Views on SlideShare
659
Embed Views
33

Actions

Likes
4
Downloads
1
Comments
0

2 Embeds 33

https://twitter.com 36
http://blog.hatena.ne.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • いつまでクソコードを 書き続けるの? デキるプログラマだけが知っている コードレビュー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