Text
Page: 1
概要
結城洋志
株式会社クリアコード
実践リーダブルコード
2022-11-02
概要
Powered by Rabbit 2.2.1
Page: 2
全体の流れ
✓ 概要と進め方の説明
✓ 実装
✓ 実装を交換、続きを実装
✓ 全体で結果を共有
概要
Powered by Rabbit 2.2.1
Page: 3
講師紹介
結城洋志(ゆうき ひろし)
aka Piro
✓ 株式会社クリアコード所属
✓ FirefoxやThunderbirdの
法人サポートに従事
✓ トラブルの原因や対策を探るため
ソースコードを調査することが多い
概要
Powered by Rabbit 2.2.1
Page: 4
アジェンダ
✓ 講座の目的を確認
✓ リーダブルコードの
必要性を確認
✓ リーダブルコードの
実践方法を紹介
✓ 実践方法を練習
概要
Powered by Rabbit 2.2.1
Page: 5
講座の目的
✓ 自分の開発チームに
✓ 注:個々人の話ではない
✓ リーダブルなコードが
当たり前な文化の作り方を
✓ 持ち帰る
→ 「解説」に書いていることの実践方法を学ぶ
概要
Powered by Rabbit 2.2.1
Page: 6
目的でないこと
✓ 実践前の不安のケア
✓ 「やる」と決めないと理解が進まな
い
✓ テクニックをたくさん覚える
✓ 難しいプログラムを実装する
✓ 早解きや実行時性能の追求
✓ 奇抜な方法で目立つ
概要
Powered by Rabbit 2.2.1
Page: 7
ワークショップ後
✓ ぜひ実践を!
✓ 今日の資料はすべて再利用可能
✓ チーム内で同じ講座を再現できる
概要
Powered by Rabbit 2.2.1
Page: 9
そもそもの話
✓ リーダブルコードは
なぜ必要か
概要
Powered by Rabbit 2.2.1
Page: 10
リーダブルコードのニーズ
チーム開発を
無理なく
続けるため
概要
Powered by Rabbit 2.2.1
Page: 11
チーム開発でのニーズ
✓ 既存のコードを読んで
素早く内容を把握したい
✓ 既存のコードに
素早く手を加えたい
✓ 開発速度を落としたくない
概要
Powered by Rabbit 2.2.1
Page: 12
読みにくいと開発が遅くなる
✓ 既存のコードを
理解しにくいと……
✓ 修正・機能追加に時間がかかる
(理解しないと変更できない)
✓ 後退バグが発生しやすい
(理解しないまま変更すると問題発生)
→コストがかかる
概要
Powered by Rabbit 2.2.1
Page: 13
時間が経つほど影響大
開発
速度
リーダブルな場合
開発速度が落ちにくい
リーダブルじゃない場合
開発速度が落ちやすい
時間
(注意:グラフではなく概念図です)
概要
Powered by Rabbit 2.2.1
Page: 14
つまり
✓ 現実的なコストの範囲で
✓ 既存のコードを継続的に、
無理なく改良・修正したい
→なので、リーダブルコード
概要
Powered by Rabbit 2.2.1
Page: 16
リーダブルコードの実践
どうすれば無理なく実践できる?
概要
Powered by Rabbit 2.2.1
Page: 17
リーダブルコードの実践
コードを読む
習慣を作る
概要
Powered by Rabbit 2.2.1
Page: 18
読む?書くじゃないの?
✓ リーダブルコードを書くには
コードを読むことが欠かせない
✓ なぜ?
↓
読まないと
何が「読みやすい」か
分からないから
概要
Powered by Rabbit 2.2.1
Page: 19
何が「良い」かは受け手の状
況次第
✓ しょっぱいのが好きな人と
甘いのが好きな人で
「おいしい」の基準は違う
✓ 自分はどんな味が好みか?
✓ 日常の運転とレースでは
「乗りやすい」の基準は違う
✓ 自分はどんな乗り方をするのか?
概要
Powered by Rabbit 2.2.1
Page: 20
リーダブルコードも同じ
✓ チームの状況によって
「リーダブル」の基準が違う
概要
Powered by Rabbit 2.2.1
Page: 21
リーダブルコード
「読む人」が
読みやすいなら
リーダブル
概要
Powered by Rabbit 2.2.1
Page: 22
読む人
✓ 多くの場合、いない
✓ チームのコードを読んでいますか?
✓ 読む人(チームメンバー)毎に
リーダブルの基準は違う
✓ 背景が違うので当たり前
(背景:使ってきた言語・今の知識)
概要
Powered by Rabbit 2.2.1
Page: 23
チームでのリーダブル
✓ 1つずつ見つけていくしかない
✓ 各メンバーの読んだ感覚を
チームで共有
✓ 既存の基準をベースにするのはアリ
(基準:本の内容やコーディングスタイルなど)
チームでのリーダブルコードは
育てていくもの
概要
Powered by Rabbit 2.2.1
Page: 24
リーダブルの基準の育て方
✓ コードを読む文化を作る
(最初の難関)
✓ チームのコードの中から
リーダブルなコードを見つける
✓ リーダブルなコードを
チームで共有
✓ ↑の繰り返しで基準を増やす
概要
Powered by Rabbit 2.2.1
Page: 25
コードを読む文化を作る
✓ まず自分が読み始める
✓ 仲間がいると心強い
✓ リーダブルなコードを探す
✓ 読みにくいコードは今は置いておく
(チームにコードを読む文化ができてから!)
✓ 見つけたリーダブルなコードは…
概要
Powered by Rabbit 2.2.1
Page: 26
リーダブルなコードは…
✓ 他のメンバーに共有する
(例:話しかける。チャットに書く。Wikiにまとめる。)
✓ 「○○さんの△△という書き方、
◇◇な所がリーダブルですね」
↓
読みやすさの基準を共有
コードが読まれているという自覚
概要
Powered by Rabbit 2.2.1
Page: 27
読むことを「当たり前」に
✓ 「あいつはコードを読むやつ」
という認識を広める
✓ 自分だけからチームへ
✓ 「このチームはコードを読み合う」
という認識を広める
…続きはセミナーの最後に
概要
Powered by Rabbit 2.2.1
Page: 28
この後の実践
開発を続けるために
他の人のコードを読む
✓ まず自分が読み始める
✓ リーダブルコードを探す
(読みにくいコードは今は置いておく)
✓ リーダブルの基準を共有
(チームでのリーダブルコードができる)
概要
Powered by Rabbit 2.2.1
Page: 29
やること
読む文化作りの
体験
概要
Powered by Rabbit 2.2.1
Page: 30
読む文化作りの体験
✓ 10:45-12:15 課題を実装
✓ リーダブルコードを書く
✓ 13:30-14:45 実装チェンジ
→開発継続
✓ 「まず自分が読み始める」
✓ 「リーダブルコードを探す」
✓ 15:00- グループふりかえり
✓ 「他のメンバーに教える」
概要
Powered by Rabbit 2.2.1
Page: 31
おさらい
✓ この講座の目的
✓ リーダブルコードの必要性
✓ この講座でやること
概要
Powered by Rabbit 2.2.1
Page: 32
この講座の目的
✓ 自分の開発チームに
✓ ↑注意:個々人の話ではない
✓ リーダブルなコードが
当たり前な文化の作り方を
✓ 持ち帰る
概要
Powered by Rabbit 2.2.1
Page: 33
リーダブルコードの必要性
✓ チームの開発速度の維持のため
✓ 継続的に改良・修正したい
✓ それも現実的なコストの範囲内で
概要
Powered by Rabbit 2.2.1
Page: 34
変更コストと開発速度
開発
速度
リーダブルな場合
開発速度が落ちにくい
リーダブルじゃない場合
開発速度が落ちやすい
時間
概要
Powered by Rabbit 2.2.1
Page: 35
この講座でやること
✓ コードを読む文化作りの体験
✓ まず自分が読み始める
✓ リーダブルコードを探す
✓ 他のメンバーに教える
概要
Powered by Rabbit 2.2.1
Page: 36
ここまでの説明
腑に落ちました
か?
概要
Powered by Rabbit 2.2.1