SlideShare a Scribd company logo
1 of 36
Download to read offline
リーダブルコードを
                     読んだ後
                        須藤功平
                  株式会社クリアコード
                      DevLOVE 2012
                          2012/12/16

リーダブルコードを読んだ後               Powered by Rabbit 2.0.5
やること



      クリアコードの
      開発方法を体験

リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
目標


           リーダブルコードを
      当たり前にする

リーダブルコードを読んだ後        Powered by Rabbit 2.0.5
イベントのテーマ




リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
目標


                あなたが
           リーダブルコードを
      当たり前にする
リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
やること

   ✓ クリアコードの開発方法を体験
      ✓ 対象: 野生のフリーソフトウェア

   ✓ 読む人を「想像」しない
   ✓ 読む人を「思い出す」


リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
想像上の誰か


       想像上の誰かが自分のコード
      を理解しやすいかなんて考える
      のは大変なことだ。
      [「リーダブルコード 1.5 でもやるんだよ」より引用
                                ]




リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
想像しない



   ✓ 読む人を「想像」しない
   ✓ 読む人を「思い出す」



リーダブルコードを読んだ後           Powered by Rabbit 2.0.5
思い出すには?




          読む人になる

リーダブルコードを読んだ後             Powered by Rabbit 2.0.5
クリアコードの開発方法
   ✓ コミットメールが全員に届く
       (diff入り)

      ✓ 全員が読む

   ✓ 気になったらコメント
       (プロジェクト外の人でも)

   ✓ 「昨日印象に残ったコミット」
     を朝会で報告

リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
ポイント
   ✓ 全員が書く人で読む人
   ✓ 書く時:
      ✓ 読む時の事を思いながら
          (こう書くと読みやすいんだよな。)


   ✓ 読む時:
      ✓ 書く時の事を思いながら
          (これ読みやすいから今度同じように書こう。)


リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
当日は
省略
なぜリーダブルコード?



                 開発を
                続けるため

リーダブルコードを読んだ後           Powered by Rabbit 2.0.5
メリット

   ✓ メンテナンスコストを低く保つ
       (開発を続けるわりにあわなくなってしまう)

   ✓ 機能追加・変更をしやすくする
       (使われないものになって開発する必要がなくなる)

   ✓ プログラマーの意欲を保つ
       (プログラマーも人です)




リーダブルコードを読んだ後                  Powered by Rabbit 2.0.5
注意


   ✓ すべてを解決するわけではない
      ✓ よりよくする重要な方法の1つ

   ✓ トレードオフ



リーダブルコードを読んだ後            Powered by Rabbit 2.0.5
メンテナンスコスト


       メンテナンスコストを低く保
      つためにずっとリファクタリン
      グをし続けると…高いメンテナ
      ンスコスト


リーダブルコードを読んだ後      Powered by Rabbit 2.0.5
素早い変更

       素早く機能追加・変更できる
      よう、リーダブルコードにする
      ために必要な時間を確保して開
      発しているのに、機能を追加し
      たいというと必ず1週間以上は
      必要だと言われる…素早くない
      変更

リーダブルコードを読んだ後           Powered by Rabbit 2.0.5
ゴール
   ✓ 本末転倒にならないように!
   ✓ リーダブルコードを書くことは
     ゴールじゃない
      ✓ 効率よく目的を実現するのがゴール
          (今だけ効率がよければよいのではない。念のため。)


   ✓ 手早くリーダブルコードを
     書けるようになろう!

リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
なぜコミットメール?



          ペアプロより
          スケールする

リーダブルコードを読んだ後   Powered by Rabbit 2.0.5
ペアプロ

   ✓ 常にコードレビュー
   ✓ 2人だけ
   ✓ 時間をあわせる
   ✓ 距離をあわせる
   ✓ プロジェクトをあわせる

リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
コミットメール

   ✓ 常にコードレビュー
   ✓ 2人以上も読める
   ✓ 時間がずれてもよい
   ✓ 距離がずれてもよい
   ✓ プロジェクトがずれてもよい

リーダブルコードを読んだ後             Powered by Rabbit 2.0.5
コミット


    ペアプロしているように!
   ✓ 小さくコミット
   ✓ 意図が伝わるコミット


リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
ペアプロの方がよいこと

      全体の設計とかもみれる
   ✓ コミットメールだけだとムリ
   ✓ pull requestだけでもムリ
   ✓ 一緒に書いていないとムリ
       (同じプロジェクトだといけそう)



リーダブルコードを読んだ後             Powered by Rabbit 2.0.5
ここまで
 飛ばす
確認




                事前課題

リーダブルコードを読んだ後          Powered by Rabbit 2.0.5
事前課題
    1. リーダブルコードを読む
    2. Rubyコードの感想戦を読む
    3. github://clear-code/git-utils
       をfork
    4. commit-email.rbを読む
          ✓ Rubyコードの感想戦のように読む

リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
事前課題確認1
    1. リーダブルコードを読む
    2. Rubyコードの感想戦を読む
    3. github://clear-code/git-utils
       をfork
    4. commit-email.rbを読む
          ✓ Rubyコードの感想戦のように読む

リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
事前課題確認2
    1. リーダブルコードを読む
    2. Rubyコードの感想戦を読む
    3. github://clear-code/git-utils
       をfork
    4. commit-email.rbを読む
          ✓ Rubyコードの感想戦のように読む

リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
事前課題確認3
    1. リーダブルコードを読む
    2. Rubyコードの感想戦を読む
    3. github://clear-code/git-utils
       をfork
    4. commit-email.rbを読む
          ✓ Rubyコードの感想戦のように読む

リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
事前課題確認4
    1. リーダブルコードを読む
    2. Rubyコードの感想戦を読む
    3. github://clear-code/git-utils
       をfork
    4. commit-email.rbを読む
          ✓ Rubyコードの感想戦のように読む

リーダブルコードを読んだ後                 Powered by Rabbit 2.0.5
むずかしい?



   ✓ 「うまくできない」は今のうち
   ✓ 聞けば答えます



リーダブルコードを読んだ後            Powered by Rabbit 2.0.5
進め方

   ✓ 読み手になる: 15分
      ✓ 事前課題をやっていない人:   Rubyコードの感想戦を読
          む


   ✓ 読み手目線で書く: 15分
      ✓ 事前課題をやっていない人:   読み手になる


   ✓ 質疑応答: 10分

リーダブルコードを読んだ後                    Powered by Rabbit 2.0.5
読み手になる: 15分
    1. 数人のグループを作る
    2. グループ用のgit-utilsをclone
    3. 読んでcommit & push
          ✓ リーダブルなら理由をコメントと
            して書く
          ✓ リーダブルじゃないなら直してコ
            ミットメッセージで理由を説明

リーダブルコードを読んだ後             Powered by Rabbit 2.0.5
読み手目線で書く: 15分
    1. 他のグループのリポジトリの
       コミットを確認
          コミットメールが届いているはず

          ✓ 自分達にピンとこないものを選ぶ
          ✓ 直してメッセージで理由を説明
          ✓ コードで伝える

    2. 自分たちのリポジトリを確認
    3. 繰り返す
リーダブルコードを読んだ後               Powered by Rabbit 2.0.5
質疑応答: 10分


   ✓ 気になったコミットは?
   ✓ やってみて困ったことは?
   ✓ 実践すると困りそうなことは?



リーダブルコードを読んだ後               Powered by Rabbit 2.0.5
宣伝
      コミットへのコメントサービス
   https://www.clear-code.com/services/#commit-comment


       お客様の開発プロジェクトの
      コミットを読んでコメントする
      ことにより、お客様の開発チー
      ムが「当たり前のようにクリア
      なコードを書く文化」を育むこ
      とを支援します。
リーダブルコードを読んだ後                                Powered by Rabbit 2.0.5

More Related Content

What's hot

負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)Yohei Hamada
 
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性Yamamoto Reki
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみToshihiro Nakamura
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡Shintaro Kurachi
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラムamusementcreators
 
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方Kouhei Sutou
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事Manabu Koga
 
スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張
スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張
スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張Kosuke Futamata
 
今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発Kazunori Hamamoto
 
第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」Hiromu Shioya
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめpospome
 
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼンゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン光晶 上原
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよkumake
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?pospome
 

What's hot (20)

負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)負荷がたかいいんだから~♪(仮)
負荷がたかいいんだから~♪(仮)
 
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
Blazor0.6.0を用いたスクリプトレスWebアプリ開発の可能性
 
Doma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみDoma SQLテンプレートのしくみ
Doma SQLテンプレートのしくみ
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡PHPでAIプログラミングコンテスト準優勝するまでの軌跡
PHPでAIプログラミングコンテスト準優勝するまでの軌跡
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム読みやすいプログラム、書き換えやすいプログラム
読みやすいプログラム、書き換えやすいプログラム
 
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
リーダブルコードワークショップ(パイオニア向け) - 課題の実装の進め方
 
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
 
スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張
スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張
スタイル変換技術による対訳コーパスから同時通訳コーパスへの拡張
 
今からでも遅くないC#開発
今からでも遅くないC#開発今からでも遅くないC#開発
今からでも遅くないC#開発
 
第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」第4部「Tddとペアプロのめざめ」
第4部「Tddとペアプロのめざめ」
 
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめトランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
 
ゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼンゲーム開発プロセスカイゼン
ゲーム開発プロセスカイゼン
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ2015-12-16 某S社、出直しDDDってるってよ
2015-12-16 某S社、出直しDDDってるってよ
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
どこに何を書くのか?
どこに何を書くのか?どこに何を書くのか?
どこに何を書くのか?
 

Similar to リーダブルコードを読んだ後

開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?Kouhei Sutou
 
SEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジSEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジKouhei Sutou
 
リーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジリーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジKouhei Sutou
 
リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要Kouhei Sutou
 
SEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめSEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめKouhei Sutou
 
リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめKouhei Sutou
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジKouhei Sutou
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジ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
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえりKouhei Sutou
 
SEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめSEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめKouhei Sutou
 
SEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめSEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめKouhei Sutou
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
プログラマー
プログラマープログラマー
プログラマーKouhei Sutou
 
リーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりリーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりKouhei Sutou
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえりKouhei Sutou
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2Tomofumi Yagi
 
Potatotops20141217
Potatotops20141217Potatotops20141217
Potatotops20141217Mogi Isamu
 

Similar to リーダブルコードを読んだ後 (20)

開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?開発者は仕事でリーダブルなコードを書けるのか?
開発者は仕事でリーダブルなコードを書けるのか?
 
SEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジSEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジ
 
リーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジリーダブルコード勉強会 in 筑波大 - コードチェンジ
リーダブルコード勉強会 in 筑波大 - コードチェンジ
 
リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要リーダブルコードワークショップ(パイオニア向け)の概要
リーダブルコードワークショップ(パイオニア向け)の概要
 
SEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめSEゼミ2015 - リーダブルコード勉強会のまとめ
SEゼミ2015 - リーダブルコード勉強会のまとめ
 
リーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめリーダブルコード勉強会 in 筑波大のまとめ
リーダブルコード勉強会 in 筑波大のまとめ
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ
 
SEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジSEゼミ2014 - コードチェンジ
SEゼミ2014 - コードチェンジ
 
リーダブルコードワークショップ(パイオニア向け)のコードチェンジ
リーダブルコードワークショップ(パイオニア向け)のコードチェンジリーダブルコードワークショップ(パイオニア向け)のコードチェンジ
リーダブルコードワークショップ(パイオニア向け)のコードチェンジ
 
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
リーダブルコードワークショップ(パイオニア向け)のリーダブルコードの共有
 
クリアなコードの作り方 - How to make clear code
クリアなコードの作り方 - How to make clear codeクリアなコードの作り方 - How to make clear code
クリアなコードの作り方 - How to make clear code
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり
 
SEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめSEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめ
 
SEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめSEゼミ2014 - リーダブルコード勉強会のまとめ
SEゼミ2014 - リーダブルコード勉強会のまとめ
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
プログラマー
プログラマープログラマー
プログラマー
 
リーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえりリーダブルコード勉強会 in 筑波大のグループふりかえり
リーダブルコード勉強会 in 筑波大のグループふりかえり
 
実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり実践リーダブルコードのふりかえり
実践リーダブルコードのふりかえり
 
LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2LibreOffice を Windows 上でビルドする UPDATE2
LibreOffice を Windows 上でビルドする UPDATE2
 
Potatotops20141217
Potatotops20141217Potatotops20141217
Potatotops20141217
 

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!
 

Recently uploaded

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Recently uploaded (7)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

リーダブルコードを読んだ後

  • 1. リーダブルコードを 読んだ後 須藤功平 株式会社クリアコード DevLOVE 2012 2012/12/16 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 2. やること クリアコードの 開発方法を体験 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 3. 目標 リーダブルコードを 当たり前にする リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 5. 目標 あなたが リーダブルコードを 当たり前にする リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 6. やること ✓ クリアコードの開発方法を体験 ✓ 対象: 野生のフリーソフトウェア ✓ 読む人を「想像」しない ✓ 読む人を「思い出す」 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 7. 想像上の誰か 想像上の誰かが自分のコード を理解しやすいかなんて考える のは大変なことだ。 [「リーダブルコード 1.5 でもやるんだよ」より引用 ] リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 8. 想像しない ✓ 読む人を「想像」しない ✓ 読む人を「思い出す」 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 9. 思い出すには? 読む人になる リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 10. クリアコードの開発方法 ✓ コミットメールが全員に届く (diff入り) ✓ 全員が読む ✓ 気になったらコメント (プロジェクト外の人でも) ✓ 「昨日印象に残ったコミット」 を朝会で報告 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 11. ポイント ✓ 全員が書く人で読む人 ✓ 書く時: ✓ 読む時の事を思いながら (こう書くと読みやすいんだよな。) ✓ 読む時: ✓ 書く時の事を思いながら (これ読みやすいから今度同じように書こう。) リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 13. なぜリーダブルコード? 開発を 続けるため リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 14. メリット ✓ メンテナンスコストを低く保つ (開発を続けるわりにあわなくなってしまう) ✓ 機能追加・変更をしやすくする (使われないものになって開発する必要がなくなる) ✓ プログラマーの意欲を保つ (プログラマーも人です) リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 15. 注意 ✓ すべてを解決するわけではない ✓ よりよくする重要な方法の1つ ✓ トレードオフ リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 16. メンテナンスコスト メンテナンスコストを低く保 つためにずっとリファクタリン グをし続けると…高いメンテナ ンスコスト リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 17. 素早い変更 素早く機能追加・変更できる よう、リーダブルコードにする ために必要な時間を確保して開 発しているのに、機能を追加し たいというと必ず1週間以上は 必要だと言われる…素早くない 変更 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 18. ゴール ✓ 本末転倒にならないように! ✓ リーダブルコードを書くことは ゴールじゃない ✓ 効率よく目的を実現するのがゴール (今だけ効率がよければよいのではない。念のため。) ✓ 手早くリーダブルコードを 書けるようになろう! リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 19. なぜコミットメール? ペアプロより スケールする リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 20. ペアプロ ✓ 常にコードレビュー ✓ 2人だけ ✓ 時間をあわせる ✓ 距離をあわせる ✓ プロジェクトをあわせる リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 21. コミットメール ✓ 常にコードレビュー ✓ 2人以上も読める ✓ 時間がずれてもよい ✓ 距離がずれてもよい ✓ プロジェクトがずれてもよい リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 22. コミット ペアプロしているように! ✓ 小さくコミット ✓ 意図が伝わるコミット リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 23. ペアプロの方がよいこと 全体の設計とかもみれる ✓ コミットメールだけだとムリ ✓ pull requestだけでもムリ ✓ 一緒に書いていないとムリ (同じプロジェクトだといけそう) リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 25. 確認 事前課題 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 26. 事前課題 1. リーダブルコードを読む 2. Rubyコードの感想戦を読む 3. github://clear-code/git-utils をfork 4. commit-email.rbを読む ✓ Rubyコードの感想戦のように読む リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 27. 事前課題確認1 1. リーダブルコードを読む 2. Rubyコードの感想戦を読む 3. github://clear-code/git-utils をfork 4. commit-email.rbを読む ✓ Rubyコードの感想戦のように読む リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 28. 事前課題確認2 1. リーダブルコードを読む 2. Rubyコードの感想戦を読む 3. github://clear-code/git-utils をfork 4. commit-email.rbを読む ✓ Rubyコードの感想戦のように読む リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 29. 事前課題確認3 1. リーダブルコードを読む 2. Rubyコードの感想戦を読む 3. github://clear-code/git-utils をfork 4. commit-email.rbを読む ✓ Rubyコードの感想戦のように読む リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 30. 事前課題確認4 1. リーダブルコードを読む 2. Rubyコードの感想戦を読む 3. github://clear-code/git-utils をfork 4. commit-email.rbを読む ✓ Rubyコードの感想戦のように読む リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 31. むずかしい? ✓ 「うまくできない」は今のうち ✓ 聞けば答えます リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 32. 進め方 ✓ 読み手になる: 15分 ✓ 事前課題をやっていない人: Rubyコードの感想戦を読 む ✓ 読み手目線で書く: 15分 ✓ 事前課題をやっていない人: 読み手になる ✓ 質疑応答: 10分 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 33. 読み手になる: 15分 1. 数人のグループを作る 2. グループ用のgit-utilsをclone 3. 読んでcommit & push ✓ リーダブルなら理由をコメントと して書く ✓ リーダブルじゃないなら直してコ ミットメッセージで理由を説明 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 34. 読み手目線で書く: 15分 1. 他のグループのリポジトリの コミットを確認 コミットメールが届いているはず ✓ 自分達にピンとこないものを選ぶ ✓ 直してメッセージで理由を説明 ✓ コードで伝える 2. 自分たちのリポジトリを確認 3. 繰り返す リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 35. 質疑応答: 10分 ✓ 気になったコミットは? ✓ やってみて困ったことは? ✓ 実践すると困りそうなことは? リーダブルコードを読んだ後 Powered by Rabbit 2.0.5
  • 36. 宣伝 コミットへのコメントサービス https://www.clear-code.com/services/#commit-comment お客様の開発プロジェクトの コミットを読んでコメントする ことにより、お客様の開発チー ムが「当たり前のようにクリア なコードを書く文化」を育むこ とを支援します。 リーダブルコードを読んだ後 Powered by Rabbit 2.0.5