Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Libraryを作ると云ふ開発手法

 Libraryを作ると云ふ開発手法

4b071f90c5d9c0a58e2d9076460b7be4?s=128

さっちゃん

April 27, 2018
Tweet

Transcript

  1. Libraryを作ると 云ふ開発手法

  2. .。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

  3. Libraryを作ると 云ふ開発手法

  4. Libraryを使ふ

  5. Libraryを使ふ Libararyを使はうとする時 =

  6. Libraryを使ふ Libararyを使はうとする時 = この問題が、既知の問題ではないか? と感じた時 =

  7. Libraryを使ふ Libararyを使はうとする時 = この問題が、既知の問題ではないか? と感じた時 = 「同じ問題」を感じた時

  8. Libraryを使ふ Libararyを使はうとする時 = この問題が、既知の問題ではないか? と感じた時 = 「同じ問題」を感じた時 同じ問題 = 現状から切り離して反復する問題 =

    他の状況でも起き得る問題
  9. Libraryを選ぶ . . . .

  10. Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ

    .
  11. Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ

    . Interfaceの自然さ
  12. Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ

    . Interfaceの自然さ 自然 =
  13. Libraryを選ぶ . Documentの丁寧さ . Source codeのよさ . Support & Communityの盛んさと近さ

    . Interfaceの自然さ 自然 = 「同じ問題」を感じるか
  14. Libraryを使ふ Libraryが在った → ありがたう

  15. Libraryを使ふ Libraryが在った → ありがたう Libraryが無かった → 独自実装

  16. Libraryを使ふ Libraryが在った → ありがたう Libraryが無かった → 独自実装 Libraryが在ったが、ちと違ふ → .

    . .
  17. Libraryを使ふ Libraryが在った → ありがたう Libraryが無かった → 独自実装 Libraryが在ったが、ちと違ふ → .

    Monkey patch . Fork . Libraryを直す (Pull Request)
  18. Libraryを… Libraryが無かった → 独自実装

  19. Libraryを… Libraryが無かった → 独自実装

  20. Libraryを作る Libraryが無かった → 独自実装 Libraryを作る

  21. Libraryを作る

  22. Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。

  23. Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。 しかし分離できる時がある = . .

  24. Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。 しかし分離できる時がある = . 抽象化した対象 → を分離する .

  25. Libraryを作る ServiceにはService固有の課題と、Service固有ではない課題が混ざってゐる。混ざって ゐるので分離は難しい。 しかし分離できる時がある = . 抽象化した対象 → を分離する .

    抽象化の仕方 → を分離する
  26. Libraryを作る 独自実装 →<?>→ Libraryを作る

  27. Libraryを作る 独自実装 →<?>→ Libraryを作る <?> =

  28. Libraryを作る 独自実装 →<?>→ Libraryを作る <?> = 分離が成され、一般性を得た時 =

  29. Libraryを作る 独自実装 →<?>→ Libraryを作る <?> = 分離が成され、一般性を得た時 = 「同じ問題」を分離できた時

  30. Libraryを作る 独自実装 →<?>→ Libraryを作る <?> = 分離が成され、一般性を得た時 = 「同じ問題」を分離できた時 同じ問題

    = 現状から切り離して反復する問題 = 他の状況でも起き得る問題
  31. Libraryを作る 「同じ問題」を分離する ←

  32. Libraryを作る 「同じ問題」を分離する ← SOA的な考へ方をする 「同じ問題」を述べる = 概念、責務を述べる

  33. Libraryを作る 「同じ問題」を分離する → . .

  34. Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる .

  35. Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる . 責務に固有の問題が混ざらない

    = maintainableになる
  36. Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる . 責務に固有の問題が混ざらない

    = maintainableになる 複雑な問題を関心を中心に外のLibraryに分離する =
  37. Libraryを作る 「同じ問題」を分離する → . 分離されたものはtestableになる ← 抽象化は複雑になり易い。責務をはっきり述べる 事で、仕様がわかり、何をtestするべきか述べ易くなる . 責務に固有の問題が混ざらない

    = maintainableになる 複雑な問題を関心を中心に外のLibraryに分離する = micro serviceと同じ手法
  38. Libraryを作ると → . 負債を溜めづらい (負債が小分けになる) . Systemを安定させ易い . 開発にrailを敷ける

  39. Libraryを作ると → . 負債を溜めづらい (負債が小分けになる) . Systemを安定させ易い . 開発にrailを敷ける (〃l

    _ l)b