SlideShare a Scribd company logo
1 of 41
Download to read offline
概要 Powered by Rabbit 2.1.7
概要
須藤功平
株式会社クリアコード
実践リーダブルコード
2015-03-06
概要 Powered by Rabbit 2.1.7
今日の流れ - 午前
10:00- アイスブレーク✓
10:15- 概要と進め方の説明✓
10:45- 実装✓
12:15- ランチ✓
概要 Powered by Rabbit 2.1.7
今日の流れ - 昼下がり
13:15- 読み方のデモ✓
13:30- チェンジして実装✓
15:00- グループふりかえり✓
15:30- グループ発表✓
概要 Powered by Rabbit 2.1.7
今日の流れ - 夕方
16:00- まとめ
次のステップを説明✓
✓
16:30- 質疑応答✓
17:30- コードの感想戦
時間があれば✓
✓
18:00- (有志で懇親会?)✓
概要 Powered by Rabbit 2.1.7
チューター紹介
参加者のサポート係✓
現役エンジニア✓
参加者がわからない
→聞くと助けてくれる✓
→モジモジしてると声をかけてくる✓
✓
概要 Powered by Rabbit 2.1.7
チューター紹介
結城洋志(ゆうき ひろし)
得意言語: JavaScript✓
✓
沖元謙治(おきもと けんじ)
得意言語: Ruby✓
✓
横山昌史(よこやま まさふみ)
得意言語: Ruby✓
✓
概要 Powered by Rabbit 2.1.7
講師紹介
須藤功平(すとう こうへい)
クリアコード代表取締役✓
リーダブルコード(本)の
「解説」の著者
✓
進行と全体を気にかける係✓
概要 Powered by Rabbit 2.1.7
講座の目的
自分の開発チームに✓
リーダブルなコードが
当たり前な文化の作り方を
✓
持ち帰る✓
→ 「解説」に書いていることの実践方法を学ぶ
概要 Powered by Rabbit 2.1.7
サポート
今日の資料はすべて再利用可能
チーム内で同じ講座を再現できる✓
✓
無料のフォローアップ面談
チームで実践→悩み
↑の相談に乗る
✓
受講後3ヶ月以内に1回✓
✓
概要 Powered by Rabbit 2.1.7
そもそもの話
リーダブルコードはなぜ必要か✓
↓を目指すために
チームでの共有は必須
リーダブルなコードが
当たり前な文化
概要 Powered by Rabbit 2.1.7
リーダブルコードの必要性
(1)
作って終わり
じゃないから
概要 Powered by Rabbit 2.1.7
ソフトウェアの生涯
昔
作って終わり✓
作ったらできるだけ触らない✓
✓
今
機能は少なくてもまず動くものを✓
動いてからも継続的に改良・修正✓
✓
概要 Powered by Rabbit 2.1.7
ソフトウェアの生涯
昔
時間
機能
利用開始
今
時間
機能
利用開始
なるべく
触らない
継続的に
改良・修正
注:同じものができていそうな図だが、できあがるものは違う。
  ←は利用開始前に想定していたものができる。
  →は利用したフィードバックを反映したものができる。
概要 Powered by Rabbit 2.1.7
継続的に改良・修正
既存の機能の改良
既存機能の理解→a.
改良b.
✓
既存の機能の修正
既存機能の理解→a.
修正b.
✓
概要 Powered by Rabbit 2.1.7
既存機能の理解のため
リーダブル
コード
概要 Powered by Rabbit 2.1.7
時間が経つほど効果がでる
時間
開発
速度
リーダブルじゃない場合
リーダブルな場合
開発速度が落ちにくい
開発速度が落ちやすい
概要 Powered by Rabbit 2.1.7
リーダブルコードの必要性
(2)
1人だけの開発
じゃないから
概要 Powered by Rabbit 2.1.7
チームでの開発
昔
1つのモジュールに1人の担当者✓
→1人しか触れないモジュール✓
→チームとして改良・修正できない✓
✓
今
1つのモジュールに複数担当者✓
→複数人が触れるモジュール✓
→チームとして改良・修正できる✓
✓
概要 Powered by Rabbit 2.1.7
複数人が触れる
触れる
↓
既存機能を
理解できる
概要 Powered by Rabbit 2.1.7
既存機能の理解のため
リーダブル
コード
概要 Powered by Rabbit 2.1.7
リーダブルコードの必要性
継続的に改良・修正したい✓
チームとして改良・修正したい✓
↑をチームで共有することが
最初にやること
概要 Powered by Rabbit 2.1.7
必要性を共有した後
コードを読む
文化を作る
概要 Powered by Rabbit 2.1.7
読む?書くじゃないの?
リーダブルコードを書くには
コードを読まないといけない
なぜ?✓
→リーダブルコードは
チーム毎に違うから
✓
✓
概要 Powered by Rabbit 2.1.7
リーダブルコード
「読む人」が
読みやすいなら
リーダブル
概要 Powered by Rabbit 2.1.7
読む人
多くの場合、いない
チームのコードを読んでいますか?✓
✓
読む人(チームメンバー)毎に
リーダブルの基準は違う
背景が違うので当たり前
(背景:使ってきた言語とか)
✓
✓
概要 Powered by Rabbit 2.1.7
チームでのリーダブル
1つずつ見つけていくしかない
各メンバーの読んだ感覚を
チームで共有
✓
既存の基準をベースにするのはアリ
(基準:本の内容やコーディングスタイルなど)
✓
✓
チームでのリーダブルコードは
育てていくもの
概要 Powered by Rabbit 2.1.7
リーダブルの基準の育て方
コードを読む文化を作る
(最初の難関)
✓
チームのコードの中から
リーダブルなコードを見つける
✓
リーダブルなコードを
チームで共有
✓
↑の繰り返しで基準を増やす✓
概要 Powered by Rabbit 2.1.7
コードを読む文化を作る
まず自分が読み始める
仲間がいると心強い✓
✓
リーダブルなコードを探す
読みにくいコードは今は置いておく
(チームにコードを読む文化ができてから!)
✓
見つけたリーダブルなコードは…✓
✓
概要 Powered by Rabbit 2.1.7
リーダブルなコードは…
他のメンバーに教える
(例:話しかける。チャットに書く。Wikiにまとめる。)
「○○さんの△△という書き方、
リーダブルでしたよー」
✓
✓
↓
読みやすさの基準を共有
コードが読まれているという自覚
概要 Powered by Rabbit 2.1.7
読むことを「当たり前」に
「あいつはコードを読むやつ」
という認識を広める
✓
自分だけからチームへ✓
…続きはセミナーの最後に
概要 Powered by Rabbit 2.1.7
ワークショップ内容
改良するために
他の人のコードを読む
「まず自分が読み始める」✓
「リーダブルコードを探す」
(読みにくいコードは今は置いておく)
✓
「リーダブルの基準を共有」✓
概要 Powered by Rabbit 2.1.7
注意:やらないこと
リーダブルコードを書くための
テクニックをたくさん伝授
概要 Powered by Rabbit 2.1.7
テクニック伝授は範囲外
順番が違う✓
まず読む文化を作ること
今日は↑がメイン✓
✓
テクニックはその後
時間があれば「コードの感想戦」でフォロー✓
✓
概要 Powered by Rabbit 2.1.7
やること
読む文化作りの
体験
概要 Powered by Rabbit 2.1.7
読む文化作り
まず自分が読み始める✓
リーダブルコードを探す✓
他のメンバーに教える✓
概要 Powered by Rabbit 2.1.7
読む文化作りの体験
10:45- 課題を実装
リーダブルコードを書く✓
✓
13:30- 実装チェンジ→開発継続
「まず自分が読み始める」✓
「リーダブルコードを探す」✓
✓
15:30- グループ発表
「他のメンバーに教える」✓
✓
概要 Powered by Rabbit 2.1.7
おさらい
講座の目的✓
リーダブルコードの必要性✓
講座でやること✓
概要 Powered by Rabbit 2.1.7
講座の目的
自分の開発チームに✓
リーダブルなコードが
当たり前な文化の作り方を
✓
持ち帰る✓
概要 Powered by Rabbit 2.1.7
文化作りの前
リーダブルコードの必要性を
チームで共有
必須✓
これを飛ばすと頓挫する✓
✓
概要 Powered by Rabbit 2.1.7
リーダブルコードの必要性
継続的に改良・修正したい✓
チームとして改良・修正したい✓
↑
既存機能の理解が重要なら必要
概要 Powered by Rabbit 2.1.7
講座でやること
コードを読む文化作りの体験
まず自分が読み始める✓
リーダブルコードを探す✓
他のメンバーに教える✓
✓

More Related Content

Viewers also liked

実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジKouhei Sutou
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable CodeBaidu, Inc.
 
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法Rico Sengan
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleJérôme Petazzoni
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでKouhei Sutou
 
コーディング入門以前
コーディング入門以前コーディング入門以前
コーディング入門以前Yutaka Kinjyo
 
Javaコーディング勉強会
Javaコーディング勉強会Javaコーディング勉強会
Javaコーディング勉強会inatus
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みHiroshi Tokumaru
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索nobu_k
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツevol-ni
 
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Fujio Kojima
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツShunji Konishi
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょうなおき きしだ
 
【こっそり始める】Javaプログラマコーディングマイグレーション
【こっそり始める】Javaプログラマコーディングマイグレーション【こっそり始める】Javaプログラマコーディングマイグレーション
【こっそり始める】Javaプログラマコーディングマイグレーションyy yank
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣Masahiro Nishimi
 
エスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのことエスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのことYoshitaka Kawashima
 

Viewers also liked (20)

The Art Of Readable Code.
The Art Of Readable Code.The Art Of Readable Code.
The Art Of Readable Code.
 
実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ実践リーダブルコードのコードチェンジ
実践リーダブルコードのコードチェンジ
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable Code
 
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法コーディングがラクになる!? “自分仕様”のさくさくコーディング法
コーディングがラクになる!? “自分仕様”のさくさくコーディング法
 
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup SunnyvaleIntroduction to Docker (and a bit more) at LSPE meetup Sunnyvale
Introduction to Docker (and a bit more) at LSPE meetup Sunnyvale
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
Xp祭り2013
Xp祭り2013Xp祭り2013
Xp祭り2013
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
コーディング入門以前
コーディング入門以前コーディング入門以前
コーディング入門以前
 
Javaコーディング勉強会
Javaコーディング勉強会Javaコーディング勉強会
Javaコーディング勉強会
 
セキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試みセキュアコーディング方法論再構築の試み
セキュアコーディング方法論再構築の試み
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツ
 
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
 
【こっそり始める】Javaプログラマコーディングマイグレーション
【こっそり始める】Javaプログラマコーディングマイグレーション【こっそり始める】Javaプログラマコーディングマイグレーション
【こっそり始める】Javaプログラマコーディングマイグレーション
 
良いコードとは
良いコードとは良いコードとは
良いコードとは
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
エスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのことエスイーが要件定義でやるべきたったひとつのこと
エスイーが要件定義でやるべきたったひとつのこと
 

Similar to 実践リーダブルコードの概要

SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方Kouhei Sutou
 
SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方Kouhei Sutou
 
SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要Kouhei Sutou
 
リーダブルコード勉強会 in 筑波大の進め方
リーダブルコード勉強会 in 筑波大の進め方リーダブルコード勉強会 in 筑波大の進め方
リーダブルコード勉強会 in 筑波大の進め方Kouhei Sutou
 
実践リーダブルコードのまとめ
実践リーダブルコードのまとめ実践リーダブルコードのまとめ
実践リーダブルコードのまとめKouhei Sutou
 
テスト駆動開発へようこそ
テスト駆動開発へようこそテスト駆動開発へようこそ
テスト駆動開発へようこそShuji Watanabe
 
20141213 俺のインセプションデッキ #agilesamurai
20141213 俺のインセプションデッキ #agilesamurai20141213 俺のインセプションデッキ #agilesamurai
20141213 俺のインセプションデッキ #agilesamuraiTakao Oyobe
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、RubyやめるってよNarihiro Nakamura
 

Similar to 実践リーダブルコードの概要 (8)

SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方
 
SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方SEゼミ2014 - リーダブルコード勉強会の進め方
SEゼミ2014 - リーダブルコード勉強会の進め方
 
SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要SEゼミ2015 - OSS Hack Weekend - 2日目の概要
SEゼミ2015 - OSS Hack Weekend - 2日目の概要
 
リーダブルコード勉強会 in 筑波大の進め方
リーダブルコード勉強会 in 筑波大の進め方リーダブルコード勉強会 in 筑波大の進め方
リーダブルコード勉強会 in 筑波大の進め方
 
実践リーダブルコードのまとめ
実践リーダブルコードのまとめ実践リーダブルコードのまとめ
実践リーダブルコードのまとめ
 
テスト駆動開発へようこそ
テスト駆動開発へようこそテスト駆動開発へようこそ
テスト駆動開発へようこそ
 
20141213 俺のインセプションデッキ #agilesamurai
20141213 俺のインセプションデッキ #agilesamurai20141213 俺のインセプションデッキ #agilesamurai
20141213 俺のインセプションデッキ #agilesamurai
 
桐島、Rubyやめるってよ
桐島、Rubyやめるってよ桐島、Rubyやめるってよ
桐島、Rubyやめるってよ
 

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. 概要 Powered by Rabbit 2.1.7 概要 須藤功平 株式会社クリアコード 実践リーダブルコード 2015-03-06
  • 2. 概要 Powered by Rabbit 2.1.7 今日の流れ - 午前 10:00- アイスブレーク✓ 10:15- 概要と進め方の説明✓ 10:45- 実装✓ 12:15- ランチ✓
  • 3. 概要 Powered by Rabbit 2.1.7 今日の流れ - 昼下がり 13:15- 読み方のデモ✓ 13:30- チェンジして実装✓ 15:00- グループふりかえり✓ 15:30- グループ発表✓
  • 4. 概要 Powered by Rabbit 2.1.7 今日の流れ - 夕方 16:00- まとめ 次のステップを説明✓ ✓ 16:30- 質疑応答✓ 17:30- コードの感想戦 時間があれば✓ ✓ 18:00- (有志で懇親会?)✓
  • 5. 概要 Powered by Rabbit 2.1.7 チューター紹介 参加者のサポート係✓ 現役エンジニア✓ 参加者がわからない →聞くと助けてくれる✓ →モジモジしてると声をかけてくる✓ ✓
  • 6. 概要 Powered by Rabbit 2.1.7 チューター紹介 結城洋志(ゆうき ひろし) 得意言語: JavaScript✓ ✓ 沖元謙治(おきもと けんじ) 得意言語: Ruby✓ ✓ 横山昌史(よこやま まさふみ) 得意言語: Ruby✓ ✓
  • 7. 概要 Powered by Rabbit 2.1.7 講師紹介 須藤功平(すとう こうへい) クリアコード代表取締役✓ リーダブルコード(本)の 「解説」の著者 ✓ 進行と全体を気にかける係✓
  • 8. 概要 Powered by Rabbit 2.1.7 講座の目的 自分の開発チームに✓ リーダブルなコードが 当たり前な文化の作り方を ✓ 持ち帰る✓ → 「解説」に書いていることの実践方法を学ぶ
  • 9. 概要 Powered by Rabbit 2.1.7 サポート 今日の資料はすべて再利用可能 チーム内で同じ講座を再現できる✓ ✓ 無料のフォローアップ面談 チームで実践→悩み ↑の相談に乗る ✓ 受講後3ヶ月以内に1回✓ ✓
  • 10. 概要 Powered by Rabbit 2.1.7 そもそもの話 リーダブルコードはなぜ必要か✓ ↓を目指すために チームでの共有は必須 リーダブルなコードが 当たり前な文化
  • 11. 概要 Powered by Rabbit 2.1.7 リーダブルコードの必要性 (1) 作って終わり じゃないから
  • 12. 概要 Powered by Rabbit 2.1.7 ソフトウェアの生涯 昔 作って終わり✓ 作ったらできるだけ触らない✓ ✓ 今 機能は少なくてもまず動くものを✓ 動いてからも継続的に改良・修正✓ ✓
  • 13. 概要 Powered by Rabbit 2.1.7 ソフトウェアの生涯 昔 時間 機能 利用開始 今 時間 機能 利用開始 なるべく 触らない 継続的に 改良・修正 注:同じものができていそうな図だが、できあがるものは違う。   ←は利用開始前に想定していたものができる。   →は利用したフィードバックを反映したものができる。
  • 14. 概要 Powered by Rabbit 2.1.7 継続的に改良・修正 既存の機能の改良 既存機能の理解→a. 改良b. ✓ 既存の機能の修正 既存機能の理解→a. 修正b. ✓
  • 15. 概要 Powered by Rabbit 2.1.7 既存機能の理解のため リーダブル コード
  • 16. 概要 Powered by Rabbit 2.1.7 時間が経つほど効果がでる 時間 開発 速度 リーダブルじゃない場合 リーダブルな場合 開発速度が落ちにくい 開発速度が落ちやすい
  • 17. 概要 Powered by Rabbit 2.1.7 リーダブルコードの必要性 (2) 1人だけの開発 じゃないから
  • 18. 概要 Powered by Rabbit 2.1.7 チームでの開発 昔 1つのモジュールに1人の担当者✓ →1人しか触れないモジュール✓ →チームとして改良・修正できない✓ ✓ 今 1つのモジュールに複数担当者✓ →複数人が触れるモジュール✓ →チームとして改良・修正できる✓ ✓
  • 19. 概要 Powered by Rabbit 2.1.7 複数人が触れる 触れる ↓ 既存機能を 理解できる
  • 20. 概要 Powered by Rabbit 2.1.7 既存機能の理解のため リーダブル コード
  • 21. 概要 Powered by Rabbit 2.1.7 リーダブルコードの必要性 継続的に改良・修正したい✓ チームとして改良・修正したい✓ ↑をチームで共有することが 最初にやること
  • 22. 概要 Powered by Rabbit 2.1.7 必要性を共有した後 コードを読む 文化を作る
  • 23. 概要 Powered by Rabbit 2.1.7 読む?書くじゃないの? リーダブルコードを書くには コードを読まないといけない なぜ?✓ →リーダブルコードは チーム毎に違うから ✓ ✓
  • 24. 概要 Powered by Rabbit 2.1.7 リーダブルコード 「読む人」が 読みやすいなら リーダブル
  • 25. 概要 Powered by Rabbit 2.1.7 読む人 多くの場合、いない チームのコードを読んでいますか?✓ ✓ 読む人(チームメンバー)毎に リーダブルの基準は違う 背景が違うので当たり前 (背景:使ってきた言語とか) ✓ ✓
  • 26. 概要 Powered by Rabbit 2.1.7 チームでのリーダブル 1つずつ見つけていくしかない 各メンバーの読んだ感覚を チームで共有 ✓ 既存の基準をベースにするのはアリ (基準:本の内容やコーディングスタイルなど) ✓ ✓ チームでのリーダブルコードは 育てていくもの
  • 27. 概要 Powered by Rabbit 2.1.7 リーダブルの基準の育て方 コードを読む文化を作る (最初の難関) ✓ チームのコードの中から リーダブルなコードを見つける ✓ リーダブルなコードを チームで共有 ✓ ↑の繰り返しで基準を増やす✓
  • 28. 概要 Powered by Rabbit 2.1.7 コードを読む文化を作る まず自分が読み始める 仲間がいると心強い✓ ✓ リーダブルなコードを探す 読みにくいコードは今は置いておく (チームにコードを読む文化ができてから!) ✓ 見つけたリーダブルなコードは…✓ ✓
  • 29. 概要 Powered by Rabbit 2.1.7 リーダブルなコードは… 他のメンバーに教える (例:話しかける。チャットに書く。Wikiにまとめる。) 「○○さんの△△という書き方、 リーダブルでしたよー」 ✓ ✓ ↓ 読みやすさの基準を共有 コードが読まれているという自覚
  • 30. 概要 Powered by Rabbit 2.1.7 読むことを「当たり前」に 「あいつはコードを読むやつ」 という認識を広める ✓ 自分だけからチームへ✓ …続きはセミナーの最後に
  • 31. 概要 Powered by Rabbit 2.1.7 ワークショップ内容 改良するために 他の人のコードを読む 「まず自分が読み始める」✓ 「リーダブルコードを探す」 (読みにくいコードは今は置いておく) ✓ 「リーダブルの基準を共有」✓
  • 32. 概要 Powered by Rabbit 2.1.7 注意:やらないこと リーダブルコードを書くための テクニックをたくさん伝授
  • 33. 概要 Powered by Rabbit 2.1.7 テクニック伝授は範囲外 順番が違う✓ まず読む文化を作ること 今日は↑がメイン✓ ✓ テクニックはその後 時間があれば「コードの感想戦」でフォロー✓ ✓
  • 34. 概要 Powered by Rabbit 2.1.7 やること 読む文化作りの 体験
  • 35. 概要 Powered by Rabbit 2.1.7 読む文化作り まず自分が読み始める✓ リーダブルコードを探す✓ 他のメンバーに教える✓
  • 36. 概要 Powered by Rabbit 2.1.7 読む文化作りの体験 10:45- 課題を実装 リーダブルコードを書く✓ ✓ 13:30- 実装チェンジ→開発継続 「まず自分が読み始める」✓ 「リーダブルコードを探す」✓ ✓ 15:30- グループ発表 「他のメンバーに教える」✓ ✓
  • 37. 概要 Powered by Rabbit 2.1.7 おさらい 講座の目的✓ リーダブルコードの必要性✓ 講座でやること✓
  • 38. 概要 Powered by Rabbit 2.1.7 講座の目的 自分の開発チームに✓ リーダブルなコードが 当たり前な文化の作り方を ✓ 持ち帰る✓
  • 39. 概要 Powered by Rabbit 2.1.7 文化作りの前 リーダブルコードの必要性を チームで共有 必須✓ これを飛ばすと頓挫する✓ ✓
  • 40. 概要 Powered by Rabbit 2.1.7 リーダブルコードの必要性 継続的に改良・修正したい✓ チームとして改良・修正したい✓ ↑ 既存機能の理解が重要なら必要
  • 41. 概要 Powered by Rabbit 2.1.7 講座でやること コードを読む文化作りの体験 まず自分が読み始める✓ リーダブルコードを探す✓ 他のメンバーに教える✓ ✓