SlideShare a Scribd company logo
1 of 47
Download to read offline
開発者は仕事で
       リーダブルなコードを
           書けるのか?
                                     須藤功平
                          株式会社クリアコード
                          Developer Migration 2013
                                        2013/03/02
開発者は仕事でリーダブルなコードを書けるのか?                   Powered by Rabbit 2.0.7
対象




                     開発者

開発者は仕事でリーダブルなコードを書けるのか?        Powered by Rabbit 2.0.7
リーダブルな
 コード?
例1: リーダブル?

                   class Person
                     def initialize
                       @mutex = Mutex.new
                     end
                     def name=(name)
                       @mutex.synchronize do
                         @name = name
                       end
                     end
                   end


開発者は仕事でリーダブルなコードを書けるのか?                        Powered by Rabbit 2.0.7
例2: リーダブル?

                      class Person
                        def initialize
                          @mutex = Mutex.new
                        end
                        def name=(name)
                          synchronize do
                            @name = name
                          end
                        end
                        def synchronize
                          @mutex.synchronize do
                            yield
                          end
                        end
                      end




開発者は仕事でリーダブルなコードを書けるのか?                           Powered by Rabbit 2.0.7
参考


              Ruby コードの感想戦
  ✓ http://jp.rubyist.net/magazine/?0040-CodePostMortem
  ✓ http://jp.rubyist.net/magazine/?0041-CodePostMortem



開発者は仕事でリーダブルなコードを書けるのか?                         Powered by Rabbit 2.0.7
ヒント

  ✓ コードはコンピューターが
    実行するだけではない
  ✓ 読む人がいる
  ✓ コードは書いた人の意図を語る


開発者は仕事でリーダブルなコードを書けるのか?         Powered by Rabbit 2.0.7
リーダブルなコード

  ✓ わかりやすい(書いた人の意図が)
  ✓ 直しやすい
  ✓ 調べやすい
  ✓ 試しやすい


開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
で?
リーダブルな
 コードって
うれしいの?
開発者として



      ストレスが減る
         (1)

開発者は仕事でリーダブルなコードを書けるのか?    Powered by Rabbit 2.0.7
ストレス


       なにしてるか
      全然わからない
        んだけど!
開発者は仕事でリーダブルなコードを書けるのか?      Powered by Rabbit 2.0.7
ストレス


       なにしたいか
      全然わからない
        んだけど!
開発者は仕事でリーダブルなコードを書けるのか?      Powered by Rabbit 2.0.7
開発者として



                     楽しい
                      (2)

開発者は仕事でリーダブルなコードを書けるのか?     Powered by Rabbit 2.0.7
楽しい



              すぐに
             対応できる

開発者は仕事でリーダブルなコードを書けるのか?         Powered by Rabbit 2.0.7
すぐに対応

  ✓ こういうのが欲しいんだけど
      ✓ あ、ちょっと待ってください。
      ✓ こんな感じですか?
      ✓ →そう!こういうの!
      ✓ →あぁ、こうなるのかぁ。
        じゃあ、なしで!


開発者は仕事でリーダブルなコードを書けるのか?     Powered by Rabbit 2.0.7
すぐに対応



             オレってば
              スゲー感
        http://kitaj.no-ip.com/tdiary/20040404.html#p05




開発者は仕事でリーダブルなコードを書けるのか?                           Powered by Rabbit 2.0.7
オレってばスゲー感を



  ✓ 他の人のコードで、じゃなく
  ✓ 自分たちのコードで!



開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
作らないのがいい?

  ✓ 本当に必要?検討しましょう!
      ✓ 必要?本当に?本当に?

  ✓ 考えている間に試したら?
      ✓ コードを書かない事が目指す事?
      ✓ 必要ないものに時間をかけない事
        じゃない?


開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
コストが
下がれば
試せる
コストが下がる


  ✓ 実サーバー → 仮想マシン
      ✓ すぐに追加できる
      ✓ すぐに削除できる




開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
試せる


  ✓ 実サーバー → 仮想マシン
      ✓ どのくらいあらかじめ用意する? →
      ✓ いつどうやって増減させる?




開発者は仕事でリーダブルなコードを書けるのか?         Powered by Rabbit 2.0.7
コード
だって
同じ
リーダブルなコードなら



              素早く
             対応できる

開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
素早い対応


         うわぁ!
         こんなに素早く対応して
         もらえるなんて!
         ありがとう!


開発者は仕事でリーダブルなコードを書けるのか?     Powered by Rabbit 2.0.7
素早くない対応

  ✓ このくらいで終わりそう
      ✓ でも、なんかあったらイヤだなぁ
      ✓ バッファで2倍かかることにしよう

  ✓ 困ったらすぐ相談じゃダメ?
      ✓ 全体でよくなるように進めないの?


開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
信用


       いつも素早く対応してくれる
      人が時間がかかるっていうんだ
      から大変なんだろう。



開発者は仕事でリーダブルなコードを書けるのか?        Powered by Rabbit 2.0.7
チームとして




          誰でも直せる

開発者は仕事でリーダブルなコードを書けるのか?    Powered by Rabbit 2.0.7
誰でも直せる

  ✓ あるべき設計を維持できる
      ✓ ×担当じゃないからわからない…
      ✓ ×自分のところでなんとかするか…

  ✓ 助け合える


開発者は仕事でリーダブルなコードを書けるのか?    Powered by Rabbit 2.0.7
誰でも直せる?

  ✓ 直せても直しちゃダメ?
      ✓ エンバグしたら責任が…

  ✓ できる人にだけ負荷がかかる?
      ✓ できる人ほどツライ…
      ✓ できない人の方が得?


開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
開発者は
 仕事で
リーダブルな
 コードを
書けるのか?
ムリ?
コードレビュー


       リーダブルなコードにするた
      めにコードレビューっていうの
      を導入したいけど他の人が読ん
      でくれないからできない。


開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
答え



         まず、
         あなたが読んでみませんか?



開発者は仕事でリーダブルなコードを書けるのか?        Powered by Rabbit 2.0.7
時間がない



       自分は他の人のコードを読ん
      でいる時間ないし…



開発者は仕事でリーダブルなコードを書けるのか?     Powered by Rabbit 2.0.7
答え


       時間を決めて読んでみません
      か?
      ペースがわかったらどうやって
      取り組んでいけばよいかアイデ
      ィアが浮かぶと思いますよ。


開発者は仕事でリーダブルなコードを書けるのか?        Powered by Rabbit 2.0.7
でも



         でも、でも、でも…




開発者は仕事でリーダブルなコードを書けるのか?        Powered by Rabbit 2.0.7
コミットへの
             コメントサービス
       クリアコードは、よいコード
      を書くことを当たり前にするた
      めには、まず「みんながみんな
      のコードを読む」文化にするこ
      とからはじめるのがよいと考え
      ます。
     http://www.clear-code.com/services/commit-comment.html

開発者は仕事でリーダブルなコードを書けるのか?                            Powered by Rabbit 2.0.7
B2D
Business to
 Developer
なんで読むの?

  ✓ 読まないと
    読みやすいコードは書けない
  ✓ 読む人を想像しろなんてムリ
  ✓ 自分が読む人になる


開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
あなたが読む事を支援
  ✓ どうやって読むの?
      ✓ よいところを学ぶ
      ✓ 悪いところ探しではない!

  ✓ どういうタイミングで?
      ✓ pushとかcommitした後
      ✓ 一区切り付いているでしょ?

開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
みんなが読む事を支援
  ✓ こうすると読みやすいですよ
      ✓ 読みにくいコードばかりだと
        続けられない

  ✓ よいコードを見た!→
    真似してコミット
      ✓ いいね!しているだけじゃない
      ✓ 行動しているからより本物

開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
コミットコミュニケーション
  ✓ 他の人が何をしているかわかる
      ✓ あの人はあそこらへん詳しそう
      ✓ 相談してみよう

  ✓ 他の人が困っていないかわかる
      ✓ この1時間ひとつもコミットしていな
        いけど大丈夫?
      ✓ このコミットすごいごちゃごちゃし
        てるけど悩んでる?
開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
毎日↓をコミット
  ✓ 今日どれくらい読めたか
      ✓ 感覚で。70%とか。

  ✓ 今日印象に残ったコミット
      ✓ メモリリーク直った!

  ✓ 今日の一言感想
      ✓ 自分のコミットが真似されていた!

開発者は仕事でリーダブルなコードを書けるのか?   Powered by Rabbit 2.0.7
さいごに

  ✓ リーダブルなコードが大事そう
    な気がしましたか?
  ✓ 仕事でリーダブルなコードを書
    けそうですか?
  ✓ 支援があれば書けそうですか?

開発者は仕事でリーダブルなコードを書けるのか?      Powered by Rabbit 2.0.7
いや、でも…



       自分の会社は横のつながりを
      推奨していないので…



開発者は仕事でリーダブルなコードを書けるのか?    Powered by Rabbit 2.0.7
答え


       オープンソースソフトウェア
      の開発に参加してみませんか?
      そこで体験してよかったら自分
      の言葉で説明できるはず。


開発者は仕事でリーダブルなコードを書けるのか?        Powered by Rabbit 2.0.7

More Related Content

What's hot

Rails on Dockerとの戦い
Rails on Dockerとの戦いRails on Dockerとの戦い
Rails on Dockerとの戦いYasutomo Uemori
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonadKouji Matsui
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるpospome
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:codeKouji Matsui
 
コーディング入門以前
コーディング入門以前コーディング入門以前
コーディング入門以前Yutaka Kinjyo
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話Hiroshi Kikuchi
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?pospome
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発Hiroshi Kikuchi
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LTTakako Miyagawa
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
Kiwi 入門 | iOS RDD テストフレームワーク
Kiwi 入門 | iOS RDD テストフレームワーク Kiwi 入門 | iOS RDD テストフレームワーク
Kiwi 入門 | iOS RDD テストフレームワーク Yuki Tanabe
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKMasahiro Wakame
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドIosif Takakura
 
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
ぐるぐるDDD(ドメイン駆動設計)に参加してみましたぐるぐるDDD(ドメイン駆動設計)に参加してみました
ぐるぐるDDD(ドメイン駆動設計)に参加してみましたTakuya Kawabe
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみたYasushi Kato
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)Masahiro Nishimi
 
リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめKouhei Sutou
 

What's hot (20)

Rails on Dockerとの戦い
Rails on Dockerとの戦いRails on Dockerとの戦い
Rails on Dockerとの戦い
 
C#でわかる こわくないMonad
C#でわかる こわくないMonadC#でわかる こわくないMonad
C#でわかる こわくないMonad
 
アプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考えるアプリケーションコードにおける技術的負債について考える
アプリケーションコードにおける技術的負債について考える
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
Async deepdive before de:code
Async deepdive before de:codeAsync deepdive before de:code
Async deepdive before de:code
 
The evolution of c#
The evolution of c#The evolution of c#
The evolution of c#
 
コーディング入門以前
コーディング入門以前コーディング入門以前
コーディング入門以前
 
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?
 
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
 
2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT2011 PHPカンファレンス関西 懇親会LT
2011 PHPカンファレンス関西 懇親会LT
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
Kiwi 入門 | iOS RDD テストフレームワーク
Kiwi 入門 | iOS RDD テストフレームワーク Kiwi 入門 | iOS RDD テストフレームワーク
Kiwi 入門 | iOS RDD テストフレームワーク
 
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDKGoogle Glassでできること XE12版 最新開発情報 Mirror API & GDK
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライド
 
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
ぐるぐるDDD(ドメイン駆動設計)に参加してみましたぐるぐるDDD(ドメイン駆動設計)に参加してみました
ぐるぐるDDD(ドメイン駆動設計)に参加してみました
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
デキるプログラマだけが知っているコードレビュー7つの秘訣(DevLove版)
 
リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめ
 

Viewers also liked

Evolucionando Locapedias
Evolucionando LocapediasEvolucionando Locapedias
Evolucionando LocapediasAlfredo Romeo
 
Media participativos 5 e 6 - cidadania e instituições
Media participativos 5 e 6 - cidadania e instituiçõesMedia participativos 5 e 6 - cidadania e instituições
Media participativos 5 e 6 - cidadania e instituiçõesPedro Almeida
 
Signature Outdoor Concepts
Signature Outdoor ConceptsSignature Outdoor Concepts
Signature Outdoor Conceptshaywoodj1000
 
Office Postures - Pls follow
Office Postures - Pls followOffice Postures - Pls follow
Office Postures - Pls followaginfo1
 
Apresentação PDMMEDU - temas I&D
Apresentação PDMMEDU - temas I&DApresentação PDMMEDU - temas I&D
Apresentação PDMMEDU - temas I&DPedro Almeida
 

Viewers also liked (8)

Evolucionando Locapedias
Evolucionando LocapediasEvolucionando Locapedias
Evolucionando Locapedias
 
Vision Poster
Vision PosterVision Poster
Vision Poster
 
Media participativos 5 e 6 - cidadania e instituições
Media participativos 5 e 6 - cidadania e instituiçõesMedia participativos 5 e 6 - cidadania e instituições
Media participativos 5 e 6 - cidadania e instituições
 
domingo 7
domingo 7domingo 7
domingo 7
 
Signature Outdoor Concepts
Signature Outdoor ConceptsSignature Outdoor Concepts
Signature Outdoor Concepts
 
Amizade
AmizadeAmizade
Amizade
 
Office Postures - Pls follow
Office Postures - Pls followOffice Postures - Pls follow
Office Postures - Pls follow
 
Apresentação PDMMEDU - temas I&D
Apresentação PDMMEDU - temas I&DApresentação PDMMEDU - temas I&D
Apresentação PDMMEDU - temas I&D
 

Similar to 開発者は仕事でリーダブルなコードを書けるのか?

リーダブルコードを読んだ後
リーダブルコードを読んだ後リーダブルコードを読んだ後
リーダブルコードを読んだ後Kouhei Sutou
 
リーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジリーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジKouhei Sutou
 
SEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめSEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめKouhei Sutou
 
リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要Kouhei Sutou
 
リーダブルコードワークショップ(パイオニア向け)のコードチェンジ
リーダブルコードワークショップ(パイオニア向け)のコードチェンジリーダブルコードワークショップ(パイオニア向け)のコードチェンジ
リーダブルコードワークショップ(パイオニア向け)のコードチェンジKouhei Sutou
 
プログラマー
プログラマープログラマー
プログラマーKouhei Sutou
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジKouhei Sutou
 
クリアなコードの作り方 - How to make clear code
クリアなコードの作り方 - How to make clear codeクリアなコードの作り方 - How to make clear code
クリアなコードの作り方 - How to make clear codeKouhei Sutou
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジKouhei Sutou
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」Serverworks Co.,Ltd.
 
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送るvolpe_hd28v
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジKouhei Sutou
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
Should bee
Should beeShould bee
Should beeReo Mori
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6健太 田上
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_opsume3_
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話simotin13 Miyazaki
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめKyota Yasuda
 
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)Ryuji Tamagawa
 

Similar to 開発者は仕事でリーダブルなコードを書けるのか? (20)

リーダブルコードを読んだ後
リーダブルコードを読んだ後リーダブルコードを読んだ後
リーダブルコードを読んだ後
 
リーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジリーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジ
 
SEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめSEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめ
 
リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要
 
リーダブルコードワークショップ(パイオニア向け)のコードチェンジ
リーダブルコードワークショップ(パイオニア向け)のコードチェンジリーダブルコードワークショップ(パイオニア向け)のコードチェンジ
リーダブルコードワークショップ(パイオニア向け)のコードチェンジ
 
プログラマー
プログラマープログラマー
プログラマー
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ
 
クリアなコードの作り方 - How to make clear code
クリアなコードの作り方 - How to make clear codeクリアなコードの作り方 - How to make clear code
クリアなコードの作り方 - How to make clear code
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ
 
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
 
趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る趣味プロダクトで楽しいコードライフワークを送る
趣味プロダクトで楽しいコードライフワークを送る
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジ
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
Should bee
Should beeShould bee
Should bee
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
 
C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話C・C++用のコードカバレッジツールを自作してみた話
C・C++用のコードカバレッジツールを自作してみた話
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめ
 
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 

開発者は仕事でリーダブルなコードを書けるのか?

  • 1. 開発者は仕事で リーダブルなコードを 書けるのか? 須藤功平 株式会社クリアコード Developer Migration 2013 2013/03/02 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 2. 対象 開発者 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 4. 例1: リーダブル? class Person def initialize @mutex = Mutex.new end def name=(name) @mutex.synchronize do @name = name end end end 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 5. 例2: リーダブル? class Person def initialize @mutex = Mutex.new end def name=(name) synchronize do @name = name end end def synchronize @mutex.synchronize do yield end end end 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 6. 参考 Ruby コードの感想戦 ✓ http://jp.rubyist.net/magazine/?0040-CodePostMortem ✓ http://jp.rubyist.net/magazine/?0041-CodePostMortem 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 7. ヒント ✓ コードはコンピューターが 実行するだけではない ✓ 読む人がいる ✓ コードは書いた人の意図を語る 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 8. リーダブルなコード ✓ わかりやすい(書いた人の意図が) ✓ 直しやすい ✓ 調べやすい ✓ 試しやすい 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 11. 開発者として ストレスが減る (1) 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 12. ストレス なにしてるか 全然わからない んだけど! 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 13. ストレス なにしたいか 全然わからない んだけど! 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 14. 開発者として 楽しい (2) 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 15. 楽しい すぐに 対応できる 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 16. すぐに対応 ✓ こういうのが欲しいんだけど ✓ あ、ちょっと待ってください。 ✓ こんな感じですか? ✓ →そう!こういうの! ✓ →あぁ、こうなるのかぁ。 じゃあ、なしで! 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 17. すぐに対応 オレってば スゲー感 http://kitaj.no-ip.com/tdiary/20040404.html#p05 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 18. オレってばスゲー感を ✓ 他の人のコードで、じゃなく ✓ 自分たちのコードで! 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 19. 作らないのがいい? ✓ 本当に必要?検討しましょう! ✓ 必要?本当に?本当に? ✓ 考えている間に試したら? ✓ コードを書かない事が目指す事? ✓ 必要ないものに時間をかけない事 じゃない? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 21. コストが下がる ✓ 実サーバー → 仮想マシン ✓ すぐに追加できる ✓ すぐに削除できる 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 22. 試せる ✓ 実サーバー → 仮想マシン ✓ どのくらいあらかじめ用意する? → ✓ いつどうやって増減させる? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 24. リーダブルなコードなら 素早く 対応できる 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 25. 素早い対応 うわぁ! こんなに素早く対応して もらえるなんて! ありがとう! 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 26. 素早くない対応 ✓ このくらいで終わりそう ✓ でも、なんかあったらイヤだなぁ ✓ バッファで2倍かかることにしよう ✓ 困ったらすぐ相談じゃダメ? ✓ 全体でよくなるように進めないの? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 27. 信用 いつも素早く対応してくれる 人が時間がかかるっていうんだ から大変なんだろう。 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 28. チームとして 誰でも直せる 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 29. 誰でも直せる ✓ あるべき設計を維持できる ✓ ×担当じゃないからわからない… ✓ ×自分のところでなんとかするか… ✓ 助け合える 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 30. 誰でも直せる? ✓ 直せても直しちゃダメ? ✓ エンバグしたら責任が… ✓ できる人にだけ負荷がかかる? ✓ できる人ほどツライ… ✓ できない人の方が得? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 33. コードレビュー リーダブルなコードにするた めにコードレビューっていうの を導入したいけど他の人が読ん でくれないからできない。 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 34. 答え まず、 あなたが読んでみませんか? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 35. 時間がない 自分は他の人のコードを読ん でいる時間ないし… 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 36. 答え 時間を決めて読んでみません か? ペースがわかったらどうやって 取り組んでいけばよいかアイデ ィアが浮かぶと思いますよ。 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 37. でも でも、でも、でも… 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 38. コミットへの コメントサービス クリアコードは、よいコード を書くことを当たり前にするた めには、まず「みんながみんな のコードを読む」文化にするこ とからはじめるのがよいと考え ます。 http://www.clear-code.com/services/commit-comment.html 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 40. なんで読むの? ✓ 読まないと 読みやすいコードは書けない ✓ 読む人を想像しろなんてムリ ✓ 自分が読む人になる 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 41. あなたが読む事を支援 ✓ どうやって読むの? ✓ よいところを学ぶ ✓ 悪いところ探しではない! ✓ どういうタイミングで? ✓ pushとかcommitした後 ✓ 一区切り付いているでしょ? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 42. みんなが読む事を支援 ✓ こうすると読みやすいですよ ✓ 読みにくいコードばかりだと 続けられない ✓ よいコードを見た!→ 真似してコミット ✓ いいね!しているだけじゃない ✓ 行動しているからより本物 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 43. コミットコミュニケーション ✓ 他の人が何をしているかわかる ✓ あの人はあそこらへん詳しそう ✓ 相談してみよう ✓ 他の人が困っていないかわかる ✓ この1時間ひとつもコミットしていな いけど大丈夫? ✓ このコミットすごいごちゃごちゃし てるけど悩んでる? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 44. 毎日↓をコミット ✓ 今日どれくらい読めたか ✓ 感覚で。70%とか。 ✓ 今日印象に残ったコミット ✓ メモリリーク直った! ✓ 今日の一言感想 ✓ 自分のコミットが真似されていた! 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 45. さいごに ✓ リーダブルなコードが大事そう な気がしましたか? ✓ 仕事でリーダブルなコードを書 けそうですか? ✓ 支援があれば書けそうですか? 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 46. いや、でも… 自分の会社は横のつながりを 推奨していないので… 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7
  • 47. 答え オープンソースソフトウェア の開発に参加してみませんか? そこで体験してよかったら自分 の言葉で説明できるはず。 開発者は仕事でリーダブルなコードを書けるのか? Powered by Rabbit 2.0.7