Slide 1

Slide 1 text

アジャイルを支える アジャイルなコード RAKUS Meetup Osaka #2 アジャイル Night @kawanamiyuu

Slide 2

Slide 2 text

● かわなみゆう ● @kawanamiyuu ● 株式会社ラクス / Lead Engineer ● 新規プロダクト(HR × Tech)の開発 ● 登壇芸人 ● PHP がすき 2 自己紹介 2

Slide 3

Slide 3 text

アジャイルな開発プロセス ● XP(eXtreme Programming) ● スクラム 3

Slide 4

Slide 4 text

アジャイルを支える技術 ● VCS 中心の開発フロー (GitHub Flow、Git Flow) ● CI (継続的インテグレーション) ● CD (継続的デリバリー、継続的デプロイメント) 4

Slide 5

Slide 5 text

アジャイルな開発プロセスと アジャイルな技術を導入すれば アジャイルになるの? 5

Slide 6

Slide 6 text

アジャイルを支える アジャイルなコード RAKUS Meetup Osaka #2 アジャイル Night @kawanamiyuu

Slide 7

Slide 7 text

アジャイルなコード 7

Slide 8

Slide 8 text

ビジネス要求の変化を 迅速に反映できるコード 8

Slide 9

Slide 9 text

変更しやすいコード 9

Slide 10

Slide 10 text

高凝集・疎結合なコード 10

Slide 11

Slide 11 text

リファクタリングしやすいコード 11

Slide 12

Slide 12 text

「捨てやすい」コード 12

Slide 13

Slide 13 text

アジャイルなコードの 3 つの P 13

Slide 14

Slide 14 text

Principle たとえば、オブジェクト指向プログラミングの基本原則 ● 単一責任の原則 (Single Responsibility Principle) ● オープン・クローズドの原則 (Open-Closed Principle) ● リスコフの置換原則 (Liskov Substitution Principle) ● インタフェース分離の原則 (Interface Segregation Principle) ● 依存性逆転の原則 (Dependency Inversion Principle) 14

Slide 15

Slide 15 text

Practice ● ドメイン駆動設計 (DDD:Domain-Driven Development) ● テスト駆動設計 (TDD:Test-Driven Development) ● デザインパターン 15

Slide 16

Slide 16 text

Philosophy UNIX哲学 ● Small is beautiful. ● Make each program do one thing well. ● ... 16

Slide 17

Slide 17 text

明日からできること ● わかりやすい名前 ● 責任の明確なメソッド ● 適切な可視性 (package-private の活用) ● テストを書くことを当たり前に 17

Slide 18

Slide 18 text

アジャイルなコードへの情熱と喜び ● 我々が多くの時間をかけて向き合うのはソースコード ● ビジネス要求に応えるための設計力と実装力の研鑽 ● 原則とプラクティスの実践 ● 業務知識を反映した高凝集で疎結合なコード ● 開発速度と品質の最適なバランスのための選択肢を持つ 18

Slide 19

Slide 19 text

アジャイルなコード、 書いていきましょう! 19

Slide 20

Slide 20 text

Appendix(おすすめ書籍) ● オブジェクト指向のこころ ● 現場で役立つシステム設計の原則 ● Domain-Driven Design Quickly ● UNIX という考え方 20